import lejos.nxt.*; import lejos.nxt.addon.*; import lejos.nxt.rcxcomm.*; /* * Responds to RCX Remote control * */ public class RCXEmulator { public static void main(String[] args) { Serial.setPort(SensorPort.S1); RCXLink link = Serial.getLink(); int msgCount=0; link.setDefaultSpeed(); link.flush(); byte[] packet = new byte[10]; byte[] reply = new byte[10]; int c1, c2; //String cmd = "Cmd:"; //String remote = "Remote"; while (true) {; if (Serial.isPacketAvailable()) { int numBytes = Serial.readPacket(packet); //LCD.drawString(cmd, 0, 0); //LCD.drawInt((packet[0] & 0xF7), 4, 5, 0); //LCD.drawInt(numBytes, 4, 11, 0); if ((packet[0] & 0xF7) == 210) { // Remote command reply[0] = (byte) (0xFF - (packet[0] & 0xFF)); Serial.sendPacket(reply, 0, 1); c1 = packet[1] & 0xFF; c2 = packet[2] & 0xFF; //LCD.drawString(remote,0,1); //LCD.drawInt(c1, 4, 7, 1); //LCD.drawInt(c2, 4, 11, 1); if (c1 != 0 || c2 != 0) LCD.clear(); LCD.drawInt(++msgCount, 4, 0, 4); if (c1 == 0) { if (c2 == 1) message1(); else if (c2==0x02) message2(); else if (c2==0x04) message3(); else if (c2==0x08) incMotorA(); else if (c2==0x10) incMotorB(); else if (c2==0x20) incMotorC(); else if (c2==0x40) decMotorA(); else if (c2==0x80) decMotorB(); } else if (c2 == 0) { if (c1==0x01) decMotorC(); else if (c1==0x02) program1(); else if (c1==0x04) program2(); else if (c1==0x08) program3(); else if (c1==0x10) program4(); else if (c1==0x20) program5(); else if (c1==0x40) stopAll(); else if (c1==0x80) sound(); } } LCD.refresh(); } } } private static String msg1 = "MSG1"; private static String msg2 = "MSG2"; private static String msg3 = "MSG3"; private static String incA = "Motor A fwd"; private static String incB = "Motor B fwd"; private static String incC = "Motor C fwd"; private static String decA = "Motor A bwd"; private static String decB = "Motor B bwd"; private static String decC = "Motor C bwd"; private static String prog1 = "Program 1"; private static String prog2 = "Program 2"; private static String prog3 = "Program 3"; private static String prog4 = "Program 4"; private static String prog5 = "Program 5"; private static String stop = "Stop All"; private static String beep = "Sound"; private static void message1() { display(msg1); } private static void message2() { display(msg2); } private static void message3() { display(msg3); } private static void incMotorA() { display(incA); } private static void incMotorB() { display(incB); } private static void incMotorC() { display(incC); } private static void decMotorA() { display(decA); } private static void decMotorB() { display(decB); } private static void decMotorC() { display(decC); } private static void display(String msg) { LCD.drawString(msg, 0, 3); LCD.refresh(); } private static void program1() { display(prog1); } private static void program2() { display(prog2); } private static void program3() { display(prog3); } private static void program4() { display(prog4); } private static void program5() { display(prog5); } private static void stopAll() { display(stop); } private static void sound() { display(beep); Sound.beep(); } }