Переведено с Android-форумовAndroid-коммуникация, то, что отправлено, не является тем, что получено
Im at the loss here. Он хочет отправить некоторые серийные данные от arduino к android, но то, что я отправляю, не является тем, что получено. Например, если я поставил Serial.write (5), на стороне Android я получаю 48. Если я поставлю Serial.write (6), я получу 1. Та же проблема возникает, когда я отправляю символы. Если я отправлю «t», на андроиде я получу T с 2 точками сверху (как будто это символ с другого языка). ??????? Что происходит?
Arduino
int count = 5;
const unsigned int BAUD_RATE = 115200;
void setup() {
Serial.begin(BAUD_RATE);
delay(10000);
}
void loop() {
//Serial.print(count, DEC);
//Serial.print(count, HEX);
Serial.print(count, OCT);
//Serial.println(count, BIN);
//Serial.write(temp);
//Serial.write("t");
Serial.write(count);
count++;
delay(2000);
}
Android RFCOMM: UUID.fromString ("00001101-0000-1000-8000-00805F9B34FB"));
byte[] buffer = new byte[255];
Handler myHandler1 = new Handler();
Runnable receiveValues = new Runnable() {
public void run() {
try {
while (connected) {
while (in.available() > 0) {
Log.v("Note",
"For value: " + String.valueOf(in.read(buffer)));
for (int x = 0; x < buffer.length; x++)
Log.v("Note", "A " + buffer[x]);
}
Thread.sleep(50);
}
} catch (Exception e) {
connected = false;
e.printStackTrace();
}
}
};
Сроки правильные, каждые две секунды что-то отправляется, но все же я получаю неправильное значение. Как вы также можете видеть, я пробовал другие способы записи в последовательный порт на arduino, но ни один из них не работает. Другое дело, конец строки (когда я делаю Serial.println()) последовательно принимается как 0 на android.
Запуск на андроид 2.3.7, где мин = 8 SDK (Android 2.2)
Вы уверены, что бод. бит четности и стоп-бит совпадают? Мусор, который вы видите, типичен для несоответствия. – Despatcher
Да, скорость в бодах правильная, но int нет (см. Мой ответ). Спасибо за ваш комментарий, он отправил меня в правильном направлении. – user41629