RemoteNXTTest

import lejos.nxt.*;
import lejos.nxt.comm.*;
import lejos.nxt.remote.*;
import lejos.util.TextMenu;

import java.io.*;
/**
 * This program demonstrates the use of the RemoteNXT class to allow one NXT
 * to control another. It should be used in conjunction either with the standard
 * leJOS menu (for Bluetooth only), or with the NXTLCPRespond test program (for
 * Bluetooth and RS485). The two NXTs may be connected either via Bluetooth or
 * by RS485. The program retrieves a number of data items from the remote NXT,
 * and allows the motors on the remote device to be controlled using the keypad.
 * A light sensor should be plugged into port 1 of the remote NXT. If using
 * RS485 communications the two NXTs should be linked using a standard Lego
 * connector between port 4 on both devices.
 * NOTE: Be sure to change the name of the target brick below from "NXT" to 
 * the proper name. Also, as stated above, if using RS-485 make sure NXTLCPRespond 
 * is running on the target brick (port 4 to port 4) before running this program. 
 */
public class RemoteNXTTest {
	public static void main(String[] args) throws Exception {
		RemoteNXT nxt = null;	
		int power = 0;
		int mode = 1;
		int motor = 0;
		String motorString = "Motor:";
		String modeString = "Mode:";
		String powerString = "Power:";
		String batteryString = "Battery:";
		String lightString = "Light:";
		String tachoString = "Tacho:";

        // Get the type of communications to be used
        String[] connectionStrings = new String[]{"Bluetooth", "RS485"};
        TextMenu connectionMenu = new TextMenu(connectionStrings, 0, "Connection");
        NXTCommConnector[] connectors = {Bluetooth.getConnector(), RS485.getConnector()};

        int connectionType = connectionMenu.select();

        // Now connect
        try {
            LCD.clear();
            LCD.drawString("Connecting...",0,0);
        	nxt = new RemoteNXT("NXT", connectors[connectionType]);
        	LCD.clear();
            LCD.drawString("Type: " + connectionStrings[connectionType], 0, 0);
            LCD.drawString("Connected",0,1);
            Thread.sleep(2000);
        } catch (IOException ioe) {
        	LCD.clear();
            LCD.drawString("Conn Failed",0,0);
            Thread.sleep(2000);
            System.exit(1);
        }

        LCD.clear();
		RemoteMotor[] motors = {nxt.A, nxt.B, nxt.C};
		LightSensor light = new LightSensor(nxt.S2);
		while (true) {
			// Get data from the remote NXT and display it
			LCD.drawString(motorString,0,0);
			LCD.drawInt(motor, 3, 10, 0);
			LCD.drawString(powerString,0,1);
			LCD.drawInt(power, 3, 10, 1);
			LCD.drawString(modeString,0,2);
			LCD.drawInt(mode, 3, 10, 2);
			LCD.drawString(tachoString,0,3);
			LCD.drawInt(motors[motor].getTachoCount(), 6,  7, 3);
			LCD.drawString(batteryString,0,4);
			LCD.drawInt(nxt.Battery.getVoltageMilliVolt(), 6,  7, 4);
			LCD.drawString(lightString,0,5);
			LCD.drawInt(light.readValue(), 6,  7, 5);
			LCD.drawString(nxt.getBrickName(), 0, 6);
			LCD.drawString(nxt.getFirmwareVersion(), 0, 7);
			LCD.drawString(nxt.getProtocolVersion(), 4, 7);
			LCD.drawInt(nxt.getFlashMemory(), 6, 8, 7);

            // Do we have a button press?
			int key = Button.readButtons();
			if (key != 0)
            {
                // New command, work out what to do.
                if (key == 1) { // ENTER
                    power += 20;
                    if (power > 100) power = 0;
                } else if (key == 2) { // LEFT
                    mode++;
                    if (mode > 4) mode = 1;
                } else if (key == 4) { // RIGHT
                    motor++;
                    if (motor > 2) motor = 0;
                } else if (key == 8) { // ESCAPE
                    LCD.clear();
                    LCD.drawString("Closing...", 0, 0);
                    for(int i = 0; i < motors.length; i++)
                        motors[i].flt();
                    nxt.close();
                    Thread.sleep(2000);
                    System.exit(0);
                }

                LCD.clear();
                LCD.drawString("Setting power",0,0);
                motors[motor].setPower(power);
                LCD.drawString("Moving motor",0,1);
                if (mode == 1) motors[motor].forward();
                else if (mode == 2) motors[motor].backward();
                else if (mode == 3) motors[motor].flt();
                else if (mode == 4) motors[motor].stop();
                // Wait for the button to be released...
                while (Button.readButtons() != 0)
                    Thread.yield();
                LCD.clear();
            }
		}
	}
}

 

Joomla!-Debug-Konsole

Sitzung

Profil zum Laufzeitverhalten

Speichernutzung

Datenbankabfragen