2013-09-23 3 views
1

Переведено с 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)

+0

Вы уверены, что бод. бит четности и стоп-бит совпадают? Мусор, который вы видите, типичен для несоответствия. – Despatcher

+0

Да, скорость в бодах правильная, но int нет (см. Мой ответ). Спасибо за ваш комментарий, он отправил меня в правильном направлении. – user41629

ответ

0

Ответ очень прост ... Забыв об ИНТ диапазонах (-32768 до +32767) или в данном случае без знака Int (0 - 65534), и когда я прямо вступил в скорость передачи данных, он работал хорошо.

Serial.begin(115200); 
Смежные вопросы