Arduino Serial.write() 丢失数据

0 投票
1 回答
532 浏览
提问于 2025-04-18 02:29

我正在用Arduino从Serial2读取数据,并把数据写入Serial3,代码是这样的:

Serial3.write(Serial2.read());

我从Python发送的字符串拼接起来,长得像这样:

myNum = readADC(2)
myString = "The Number: " + str(myNum)
print(myString);

上面的代码输出的是一个空字符串。

如果我执行 print("some string " + myNum),我得到:

some string

如果我执行 print(myNum),我得到:

比如说,32

在Python控制台打印myString时,显示的是我预期的输出。

看起来 Serial.write(data) 对字符串做了什么处理。

我该怎么解决这个问题呢?

1 个回答

0

其实,Serial.read() 只会返回1个字节的数据。我很惊讶你会得到 "The Number" 这个字符串。

我建议你:

  • 用循环来读取接收到的字节。
char IncomingString[14];
if (Serial.available() > 0) {
    Serial.readBytes(IncomingString, 14);// Assuming myNum is 2 bytes data
}

从现在开始,你就有了你的字符串。你可以使用 Serial.write(IncomingString)

  • 连续发送 "The Number: " 和 myNum。
print("The Number: ");
print(str(myNum));

撰写回答