Я делаю проект, в котором 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.