1 package nl
.ru
.des
.sensors
;
3 import java
.io
.DataInputStream
;
4 import java
.io
.DataOutputStream
;
5 import java
.io
.IOException
;
6 import java
.util
.LinkedList
;
7 import java
.util
.Queue
;
9 import lejos
.hardware
.Button
;
10 import lejos
.remote
.nxt
.BTConnector
;
11 import lejos
.remote
.nxt
.NXTConnection
;
12 import nl
.ru
.des
.LCDPrinter
;
14 public class BTController
{
15 public static Queue
<String
> buf
;
16 private static DataInputStream dataIn
;
17 private static DataOutputStream dataOut
;
18 private static NXTConnection conn
;
19 private static BTConnector btconnector
;
21 public static void startMaster(final String slave
, final MessageHandler sh
) {
22 LCDPrinter
.print("Start BT... Press any key to commence");
23 Button
.waitForAnyEvent();
24 btconnector
= new BTConnector();
26 LCDPrinter
.print("Connecting to " + slave
);
27 conn
= btconnector
.connect(slave
, NXTConnection
.RAW
);
29 dataOut
= conn
.openDataOutputStream();
30 dataIn
= conn
.openDataInputStream();
34 StringBuilder sb
= new StringBuilder();
37 int c
= dataIn
.readUnsignedByte();
39 sh
.handleMessage(sb
.toString());
40 sb
= new StringBuilder();
42 sb
.appendCodePoint(c
);
44 } catch (IOException e
) {
52 public static void startSlave() {
53 LCDPrinter
.print("Start BT... Press any key to commence");
54 Button
.waitForAnyEvent();
55 btconnector
= new BTConnector();
57 LCDPrinter
.print("Waiting for the master...");
58 conn
= btconnector
.waitForConnection(60000, NXTConnection
.RAW
);
60 dataIn
= conn
.openDataInputStream();
61 dataOut
= conn
.openDataOutputStream();
62 buf
= new LinkedList
<String
>();
64 @Override public void run(){
68 dataOut
.write(buf
.poll().getBytes());
70 } catch (IOException e
) {