我的EV3和Android设备之间的连接出现问题。
我可以使用EV3接收数据,但无法发送。
如果您想查看该应用程序,我已经用我的Github帐户注册了。
这是我的代码:
public class Bluetooth {
public static int speed = 100;
public static BTConnector connector;
public static NXTConnection connection;
public static void main(String[] args) throws IOException {
openConnection();
Thread moveWithBluetoothThread = new Thread(new moveWithBluetooth());
moveWithBluetoothThread.start();
}
public static void openConnection() {
connector = new BTConnector();
LCD.drawString("Waiting for Connecrion", 3, 1);
connection = connector.waitForConnection(0, NXTConnection.RAW);
LCD.clear();
LCD.drawString("Connected", 3, 5);
}
}
class moveWithBluetooth implements Runnable {
@Override
public void run() {
while (true) {
InputStream is = Bluetooth.connection.openInputStream();
BufferedReader dis = new BufferedReader(new InputStreamReader(is), 1);
OutputStream os = Bluetooth.connection.openOutputStream();
BufferedWriter dos = new BufferedWriter(new OutputStreamWriter(os), 1);
try {
byte[] b;
for (int i = 0; i < 100; i++) {
String n = dis.readLine();
System.out.println(n);
b = n.getBytes();
Bluetooth.connection.write(b, b.length);
Thread.sleep(10);
dos.write(n);
dos.flush();
}
dis.close();
dos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
最佳答案
我发现,EV3没有问题。也就是说,您可以使用此代码。如果您遇到相同的问题,这是我的解决方案:
问题是我在应用程序中使用的库。在“ Tssues”上,Github的Tab是我的问题。库等待直到完成一次传输,但是EV3发送一个永久流,因此我只需要在传输末尾添加\r\n
即可。我的最终代码如下所示:
byte[] b = (n + "\r\n").getBytes();
Bluetooth.connection.write(b, b.length);