2013-09-23 51 views
1

從Android論壇移動Android通訊,什麼是發送不是什麼收到

林在這裏我很茫然。它想從arduino發送一些串行數據到android,但我發送的不是接收到的。例如,如果我把Serial.write(5),在android端我得到48.如果我把Serial.write(6)我得到1.同樣的問題發生時,我發送字符。如果我發送一個't',在android上,我會得到一個頂部有2個點的T(就好像它是來自另一種語言的一個字符)。 ???????發生了什麼?

的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())在Android上始終接收爲0。

運行在機器人2.3.7其中min SDK = 8(機器人2.2)

+0

您確定波特率。奇偶校驗和停止位匹配?你看到的垃圾是典型的不匹配。 – Despatcher

+0

是的,波特率是正確的,但整數不是(見我的答案)。感謝您的評論,它讓我朝着正確的方向發展。 – user41629

回答

0

回答是非常簡單...忘INT範圍(-32768到32767)或在這種情況下無符號整型(0 - 65534),當我直接輸入波特率時,它運行良好。

Serial.begin(115200);