📄 testterminal.java
字号:
package name.lxm.robot.arch.module;
import name.lxm.robot.arch.*;
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TestTerminal extends AbstractModule implements ActionListener, KeyListener
{
private SimpleOutPort cmd_port;
private String[] port_names = {"cmd"};
private MotionPane controlpane = null;
private JFrame frm = new JFrame("Motor Mini Control Panel");
private int cur_speed = 0;
public TestTerminal()
{
controlpane = new MotionPane(this, this);
}
public void init(ModuleDoc doc) throws Exception
{
super.init(doc);
cmd_port = new SimpleOutPort(this, port_names[0]);
controlpane.init();
frm.getContentPane().add(controlpane);
frm.pack();
frm.setVisible(true);
}
public void run()
{
}
public Port getPort(String n)
{
if(port_names[0].equals(n))
return cmd_port;
return null;
}
public void valueUpdated()
{
}
public void actionPerformed(ActionEvent e)
{
JButton btn = (JButton) e.getSource();
String ps = btn.getActionCommand();
System.out.println(ps);
if(ps.equals("Go Forward"))
cmd_port.setValue(this, "FORWARD 150000", 1000);
if(ps.equals("Go Backward"))
cmd_port.setValue(this, "BACKWARD 150000", 1000);
if(ps.equals("Turn Left"))
cmd_port.setValue(this, "TURNLEFT 5000", 1000);
if(ps.equals("Turn Right"))
cmd_port.setValue(this, "TURNRIGHT 5000", 1000);
if(ps.equals("Halt"))
cmd_port.setValue(this, "HALT", 1000);
}
public void keyPressed(KeyEvent e)
{
JButton btn = controlpane.getDisplayButton();
int kc = e.getKeyCode();
if(kc == KeyEvent.VK_SPACE)
{
cmd_port.setValue(this, "HALT", 1000);
btn.setText("HALT");
return;
}
if(kc == KeyEvent.VK_LEFT || kc == KeyEvent.VK_KP_LEFT || kc == KeyEvent.VK_L)
{
//turn left 10 degree
double d = 10.0 * Math.PI / 180.0;
cmd_port.setValue(this, "TURNLEFT " + Double.toString(d), 1000);
btn.setText("TURN LEFT");
return;
}
if(kc == KeyEvent.VK_RIGHT || kc == KeyEvent.VK_KP_RIGHT || kc == KeyEvent.VK_R)
{
//turn rigth 10 degree
double d = 10.0 * Math.PI / 180.0;
cmd_port.setValue(this, "TURNRIGHT " + Double.toString(d), 1000);
btn.setText("TURN RIGHT");
return;
}
if(kc == KeyEvent.VK_UP || kc == KeyEvent.VK_KP_UP || kc == KeyEvent.VK_F)
{
if(cur_speed < 0)
{
cur_speed = 0;
cmd_port.setValue(this, "HALT", 1000);
btn.setText("HALT");
}
else
{
cur_speed = 10;
cmd_port.setValue(this, "FORWARD 500", 10000);
btn.setText("FORWARD");
}
return;
}
if(kc == KeyEvent.VK_DOWN || kc == KeyEvent.VK_KP_DOWN)
{
if ( cur_speed > 0 )
{
cur_speed = 0;
cmd_port.setValue(this, "HALT", 1000);
btn.setText("HALT");
}
else
{
cur_speed = -10;
cmd_port.setValue(this, "BACKWARD 500", 1000);
btn.setText("BACKWARD");
}
return;
}
}
public void keyReleased(KeyEvent e)
{
}
public void keyTyped(KeyEvent e)
{
}
}
class MotionPane extends JPanel
{
//JButton btn_forward = new JButton("Go Forward");
//JButton btn_backward = new JButton("Go Backward");
//JButton btn_left = new JButton("Turn Left");
//JButton btn_right = new JButton("Turn Right");
//JButton btn_halt = new JButton("Halt");
//ActionListener l = null;
KeyListener kl = null;
JButton display = new JButton("HALT");
public MotionPane(ActionListener l, KeyListener kl)
{
this.setPreferredSize(new Dimension(300, 200));
//this.setLayout(new GridLayout(3,3));
//this.add(new JPanel());
//this.add(btn_forward);
//this.add(new JPanel());
//this.add(btn_left);
//this.add(btn_halt);
//this.add(btn_right);
//this.add(new JPanel());
//this.add(btn_backward);
//this.add(new JPanel());
this.setLayout(new BorderLayout());
this.add(display, BorderLayout.CENTER);
//this.l = l;
this.kl = kl;
}
public void init()
{
//btn_forward.addActionListener(l);
//btn_backward.addActionListener(l);
//btn_left.addActionListener(l);
//btn_right.addActionListener(l);
//btn_halt.addActionListener(l);
this.addKeyListener(kl);
display.addKeyListener(kl);
}
public JButton getDisplayButton()
{
return display;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -