Приложение Bluetooth Chat, отвечающее на тот же текст, который я отправил - PullRequest
0 голосов
/ 24 января 2019

Я использую одно приложение для отправки данных в elm327 через Bluetooth, и я пытаюсь выполнить команду AT Z, но все, что я получаю от OBD2, тоже AT Z, в моем коде что-то отсутствует, или он должен отвечать так?Я ожидал, что AT Z вернет текст elm327 (протестирован с приложениями PlayStore и вот что я получил)

  // runs during a connection with a remote device
  private class ReadWriteThread extends Thread {
    private final BluetoothSocket bluetoothSocket;
    private final InputStream inputStream;
    private final OutputStream outputStream;

    public ReadWriteThread(BluetoothSocket socket) {
        this.bluetoothSocket = socket;
        InputStream tmpIn = null;
        OutputStream tmpOut = null;

        try {
            tmpIn = socket.getInputStream();
            tmpOut = socket.getOutputStream();
        } catch (IOException e) {
        }

        inputStream = tmpIn;
        outputStream = tmpOut;
    }

    public void run() {
        byte[] buffer = new byte[1024];
        int bytes;

        // Keep listening to the InputStream
        while (true) {
            try {
                // Read from the InputStream
                bytes = inputStream.read(buffer);

                // Send the obtained bytes to the UI Activity
                handler.obtainMessage(MainActivity.MESSAGE_READ, bytes, -1,
                        buffer).sendToTarget();
            } catch (IOException e) {
                connectionLost();
                // Start the service over to restart listening mode
                ChatController.this.start();
                break;
            }
        }
    }

    // write to OutputStream
    public void write(byte[] buffer) {
        try {
            outputStream.write(buffer);
            handler.obtainMessage(MainActivity.MESSAGE_WRITE, -1, -1,
                    buffer).sendToTarget();
        } catch (IOException e) {
        }
    }

    public void cancel() {
        try {
            bluetoothSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

1 Ответ

0 голосов
/ 07 февраля 2019

Возможно, вы недостаточно читаете - убедитесь, что вы объединяете все прочитанные фрагменты, пока не получите реальное приглашение \r>.

ELM327 обычно запускается в режиме эхо , гдеэто повторяет каждую команду, которую вы ему даете, это может объяснить, почему вы читаете это обратно.Используйте ATE0, чтобы отключить это поведение.

В общем, https://www.sparkfun.com/datasheets/Widgets/ELM327_AT_Commands.pdf объясняет все это.

...