【发布时间】:2015-07-19 17:45:58
【问题描述】:
您好,感谢您抽出宝贵时间查看此内容。
我正在通过串行读取字符数组来试验 Arduino。这最终将用于与树莓派通信并将接收到的字符串(例如:'100,200,300')拆分为:Var1 = 100、Var2 = 200、Var3 = 300 等。
浏览了各种论坛,我尝试编写自己的串口转字符串函数,如下所示:
String message;
int buflen = 12;
int bytesread = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (Serial.available() > 0)
{
message = ReadStringFromSerial();
Serial.print("Read message is: ");
Serial.println(message);
}
}
String ReadStringFromSerial()
{
char serialarray[buflen];
bytesread = Serial.readBytesUntil('\0', serialarray, buflen);
Serial.print("Array: ");
Serial.println(serialarray);
Serial.print("Bytes read: ");
Serial.println(bytesread);
String returnedmessage = String(serialarray);
return returnedmessage;
}
但是,当在串行监视器中重复输入“测试”时,我得到以下信息:
Array: TestA
Bytes read: 4
Read message is: TestA
Array: TestXXX
Bytes read: 4
Read message is: TestXXX
Array: TestXXXXó
Bytes read: 4
Read message is: TestXXXXó
我有点困惑,想知道多余的字符是从哪里来的。 此外,串行监视器是否添加了任何额外的字符,例如空字符“\0”,或者它只是发回“测试”而不是“测试\0”
非常感谢您的帮助,
罗宾
【问题讨论】:
标签: arrays string arduino serial-port character