我的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);

09-09 23:36