⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testterminal.java

📁 j2me实现的移动机器人代码(Java实现)
💻 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 + -