Как получить последовательные данные из Arduino на Android и отобразить в виде строки? - PullRequest
0 голосов
/ 19 мая 2019

Я делаю проект, в котором arduino uno будет отправлять данные на Android, и я регистрирую полученные данные в Logcat Android Studio.InputStream действительно что-то получил от arduino, но он не может быть правильно преобразован в строку.


Для кода Android я следую почти так же, как этот учебник (https://github.com/mitchtabian/Sending-and-Receiving-Data-with-Bluetooth/blob/master/Bluetooth-Communication/app/src/main/java/com/example/user/bluetooth_communication/BluetoothConnectionService.java)

Я не включилКод AcceptThread и OutputStream приводят к тому, что приложение было разработано только для получения данных от arduino. Ниже приведен код arduino, предназначенный для отправки измеренной температуры от датчика.

Java

private class ConnectedThread extends Thread {
    private final BluetoothSocket mmSocket;
    private final InputStream mmInStream;

    public ConnectedThread(BluetoothSocket socket) {
        Log.d(TAG, "ConnectedThread: Starting.");
        mmSocket = socket;
        InputStream tmpIn = null;

        try {
            tmpIn = mmSocket.getInputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }

        mmInStream = tmpIn;
    }

    public void run(){
        byte[] buffer = new byte[1024];
        int bytes;
        while (true) {
            try {
                bytes = mmInStream.read(buffer);
                String incomingMessage = new String(buffer, 0, bytes);
                Log.d(TAG, "InputStream: " + incomingMessage);
            } catch (IOException e) {
                Log.e(TAG, "write: Error reading Input Stream. " + e.getMessage() );
                break;
            }
        }
    }

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

Код Arduino

int temp;

SoftwareSerial BTSerial(2,3);

void setup(){
  BTSerial.begin(9600);
  Serial.begin(9600);
}

void loop(){
  temp = analogRead(A0);
  Serial.print("Temperature: ");
  Serial.print(temp);
  Serial.print("*C");
  Serial.println();
  delay(1000);

  BTSerial.print(temp);
  BTSerial.print('\n');
}

Ошибка

Строка выглядит следующим образом:

05-19 19: 50: 20.097 15758-16275 / com.example.graphreader D / BluetoothConnection: ConnectedThread: Запуск. 05-19 19: 50: 20.232 15758-16281 / com.example.graphreader D / BluetoothConnection: InputStream: �����������

Я попытался напечатать полученное целое число, это сработало, но не то же самое чтение, которое я получил от Arduino Serial Monitor.

...