1

从 Android 论坛移出

我在这里不知所措。它想将一些串行数据从 arduino 发送到 android,但我发送的不是接收到的。例如,如果我输入 Serial.write(5),在 android 端我得到 48。如果我输入 Serial.write(6),我得到 1。当我发送字符时也会发生同样的问题。如果我发送一个“t”,在 android 上我会得到一个顶部有 2 个点的 T(好像它是来自另一种语言的字符)。??????发生了什么?

阿杜诺

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)

4

1 回答 1

0

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

Serial.begin(115200);
于 2013-09-25T02:41:40.463 回答