Android通信,发送的不是收到的内容

时间:2013-09-23 23:09:54

标签: android sockets serial-port arduino

从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。

在android 2.3.7上运行,其中min sdk = 8(android 2.2)

1 个答案:

答案 0 :(得分:0)

答案非常简单...忘了int范围(-32768到+32767)或者在这种情况下unsigned int(0 - 65534),当我直接输入波特率时,它运行良好。

Serial.begin(115200);