2013-09-23 25 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);