import java.io.IOException; import lejos.nxt.*; import lejos.nxt.comm.*; import java.io.*; import javax.bluetooth.*; /** * * Test of NXT to NXT Bluetooth comms. * * Connects to another NXT, sends 100 ints, and receives the * replies. Then closes the connection and shuts down. * * Works with the BTReceive sample running on the slave NXT. * * Change the name string to the name of your slave NXT, and make sure * it is in the known devices list of the master NXT. To do this, turn * on the slave NXT and make sure Bluetooth is on and the device * is visible. Use the Bluetooth menu on the slave for this. Then, * on the master, select the Bluetooth menu and then select Search. * The name of the slave NXT should appear. Select Add to add * it to the known devices of the master. You can check this has * been done by selecting Devices from the Bluetooth menu on the * master. * * @author Lawrie Griffiths * */ public class BTConnectTest { public static void main(String[] args) throws Exception { String name = "NXT"; LCD.drawString("Connecting...", 0, 0); LCD.refresh(); RemoteDevice btrd = Bluetooth.getKnownDevice(name); if (btrd == null) { LCD.clear(); LCD.drawString("No such device", 0, 0); LCD.refresh(); Thread.sleep(2000); System.exit(1); } BTConnection btc = Bluetooth.connect(btrd); if (btc == null) { LCD.clear(); LCD.drawString("Connect fail", 0, 0); LCD.refresh(); Thread.sleep(2000); System.exit(1); } LCD.clear(); LCD.drawString("Connected", 0, 0); LCD.refresh(); DataInputStream dis = btc.openDataInputStream(); DataOutputStream dos = btc.openDataOutputStream(); for(int i=0;i<100;i++) { try { LCD.drawInt(i*30000, 8, 0, 2); LCD.refresh(); dos.writeInt(i*30000); dos.flush(); } catch (IOException ioe) { LCD.drawString("Write Exception", 0, 0); LCD.refresh(); } try { LCD.drawInt(dis.readInt(),8, 0,3); LCD.refresh(); } catch (IOException ioe) { LCD.drawString("Read Exception ", 0, 0); LCD.refresh(); } } try { LCD.drawString("Closing... ", 0, 0); LCD.refresh(); dis.close(); dos.close(); btc.close(); } catch (IOException ioe) { LCD.drawString("Close Exception", 0, 0); LCD.refresh(); } LCD.clear(); LCD.drawString("Finished",3, 4); LCD.refresh(); Thread.sleep(2000); } }