【问题标题】:Arduino Serial.write() Missing DataArduino Serial.write() 缺少数据
【发布时间】:2014-05-26 17:37:03
【问题描述】:

我正在从 Serial2 读取数据并将数据写入 Arduino 上的 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

将 myString 打印到 Python 控制台会显示预期的输出。

看起来Serial.write(data) 正在对字符串执行某些操作。

我该如何解决这个问题?

【问题讨论】:

  • Serial.Write() 如果变量是字符串,则不会更改任何内容。尝试更改类型时会出现问题,例如 string '0' 到 int 会导致 int 48。问题必须由 Python 代码引起。
  • 在 Python 中是否有其他方法可以将 int 转换为字符串?
  • 也许有,但 str() 很好。没问题。
  • 那你将如何将这些数据写入Serial3?
  • 我正在准备答案。希望能帮到你。

标签: python c string arduino


【解决方案1】:

其实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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多