started with new rover, bt still not worknig:(
[des2015.git] / dsl / runtime / src / nl / ru / des / BTController.java
1 package nl.ru.des;
2
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;
8
9 import lejos.remote.nxt.BTConnector;
10 import lejos.remote.nxt.NXTConnection;
11
12 public class BTController{
13 public static void startMaster(final String slave, final MessageHandler sh) {
14 BTConnector btconnector = new BTConnector();
15 NXTConnection conn = btconnector.connect(slave, NXTConnection.RAW);
16 final DataInputStream dataInput = conn.openDataInputStream();
17 new Thread() {
18 @Override
19 public void run() {
20 StringBuilder sb = new StringBuilder();
21 while (true) {
22 try {
23 int c = dataInput.readUnsignedByte();
24 if (c == '\n') {
25 sh.handleMessage(sb.toString());
26 sb = new StringBuilder();
27 } else {
28 sb.appendCodePoint(c);
29 }
30 } catch (IOException e) {
31 e.printStackTrace();
32 }
33 }
34 }
35 }.start();
36 }
37
38 public static Queue<String> startSlave() {
39 BTConnector btconnector = new BTConnector();
40 NXTConnection conn = btconnector.waitForConnection(60000, NXTConnection.RAW);
41 final DataOutputStream dataOutput = conn.openDataOutputStream();
42 final Queue<String> buf = new LinkedList<String>();
43 new Thread(){
44 @Override public void run(){
45 while (true) {
46 if (!buf.isEmpty()) {
47 try {
48 dataOutput.write(buf.poll().getBytes());
49 dataOutput.flush();
50 } catch (IOException e) {
51 e.printStackTrace();
52 }
53 }
54 Thread.yield();
55 }
56 }
57 }.start();
58 return buf;
59 }
60 }