--- /dev/null
+import java.io.*;\r
+ \r
+import lejos.pc.comm.*;\r
+\r
+ /**\r
+ * conneccts to a NXT using either Bluetooth or USB and builds input and output data streams.\r
+ *@author Roger Glassey 22/08/2007\r
+ */\r
+ \r
+public class Connector\r
+{\r
+ private boolean _usb = false;\r
+ DataInputStream dataIn;\r
+ DataOutputStream dataOut;\r
+ InputStream is;\r
+ OutputStream os;\r
+ NXTComm nxtComm;\r
+ /**\r
+ * \r
+ * @param NXT can be the friendly name of the NXT or a 16 character address\r
+ * @param useUSB\r
+ * @return true if connection was made\r
+ */ \r
+ public boolean startConnector(String NXT, boolean useUSB) \r
+ {\r
+ NXTInfo[] nxtInfo ;\r
+ _usb = useUSB;\r
+ if(_usb)\r
+ { \r
+ nxtComm = new NXTCommLibnxt();\r
+ System.out.println("searching");\r
+ nxtInfo = nxtComm.search(null, NXTCommFactory.USB); \r
+ if (nxtInfo.length == 0) \r
+ {\r
+ System.out.println("No NXT Found");\r
+ return false;\r
+ }\r
+ nxtComm.open(nxtInfo[0]);\r
+ System.out.println(" Opened "+nxtInfo[0].name);\r
+ }\r
+ else\r
+ {\r
+ nxtComm = NXTCommFactory.createNXTComm(NXTCommFactory.BLUETOOTH);\r
+ if(NXT == null || NXT == " ")\r
+ {\r
+ System.out.println("search for all");\r
+ nxtInfo = nxtComm.search(NXT, NXTCommFactory.BLUETOOTH); \r
+ }\r
+ else if(NXT.length()<8)\r
+ {\r
+ System.out.println("search for " +NXT);\r
+ nxtInfo = nxtComm.search(NXT, NXTCommFactory.BLUETOOTH);\r
+\r
+ }\r
+ else\r
+ { \r
+ nxtInfo = new NXTInfo[1];\r
+ nxtInfo[0] = new NXTInfo("unknown ",NXT);// NXT is actually address\r
+ }\r
+ if (nxtInfo.length == 0) \r
+ {\r
+ System.out.println("No NXT Found: is BT adatper on? is NXT on? ");\r
+ System.exit(1);\r
+ }\r
+ System.out.println("Connecting to " + nxtInfo[0].name+" "+nxtInfo[0].btDeviceAddress);\r
+ boolean opened = nxtComm.open(nxtInfo[0]); \r
+ if (!opened) {\r
+ System.out.println("Failed to open " + nxtInfo[0].name+" "+nxtInfo[0].btDeviceAddress);\r
+ System.exit(1);\r
+ } \r
+ System.out.println("Connected to " + nxtInfo[0].name);\r
+ }\r
+ is = nxtComm.getInputStream();\r
+ dataIn = new DataInputStream( nxtComm.getInputStream()); \r
+ os = nxtComm.getOutputStream();\r
+ dataOut = new DataOutputStream(os);\r
+ return true;\r
+ }\r
+ /**\r
+ * @return the InputStream for this connection;\r
+ */\r
+ public InputStream getInputStream(){return is;}\r
+ \r
+ /**\r
+ * @return the DataInputStream for this connection;\r
+ */\r
+ public DataInputStream getDataIn(){return dataIn;}\r
+ \r
+ /**\r
+ * @return the OutputSteram for this connection;\r
+ */\r
+ public OutputStream getOutputStream(){return os;}\r
+ \r
+ /**\r
+ * @return the DataOutputStream for this connection\r
+ */\r
+ public DataOutputStream getDataOut() {return dataOut;} \r
+\r
+\r
+ public static void main(String[] args)\r
+ {\r
+ Connector con = new Connector();\r
+ con.startConnector("NXT",false);\r
+// DataInputStream din= btm.getDataIn();\r
+// while(true)\r
+// {\r
+// try{ System.out.println(din.readFloat());} catch(IOException e){}\r
+// }\r
+ \r
+ }\r
+ \r
+ }\r
+\r
+\r