从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)
答案 0 :(得分:0)
答案非常简单...忘了int范围(-32768到+32767)或者在这种情况下unsigned int(0 - 65534),当我直接输入波特率时,它运行良好。
Serial.begin(115200);