【发布时间】:2020-11-23 18:15:24
【问题描述】:
目前,我的项目是从连接到树莓派 3B+ 的网络摄像头获取 x 坐标,cX 值,并将其发送到 Arduino Uno。当整数在 0 到 255 的范围内时,我成功地执行了操作。我可以修改我的代码并向 Arduino 发送一个更大的整数,比如 1920 吗?
这是我在 raspi 端的 python 代码的一部分:
import serial
import struct
while True:
...
cX = 248 //I want to send a larger number
print (cX)
ser.write(struct.pack('>H', cX))
...
这是我在 Arduino 上的 c 代码的一部分:
int cX = 0;
void setup()
{
...
Serial.begin(9600);
...
}
void loop()
{
if (Serial.available())
{
cX = Serial.read();
if (cX == 248)
{
//do something
}
}
}
任何帮助将不胜感激
【问题讨论】:
-
您在 Arduino 代码中一次只能读取 1 个字节。这意味着您将无法读取大于 255 的值。请参阅
Serial.readBytes()以便能够接收超过 1 个字节,在这种情况下,2 个字节将允许您发送高达 65535 的值。 -
感谢您的及时回复,雨果。
-
所以对于 2 个字节,我需要编写 Serial.readBytes(buffer, 2)。我有几个问题:我应该为变量缓冲区声明什么?我检查了这个例子,它说的是字节或字符,所以它应该是字节[2]?我可以简单地将值转换为 int cX = Serial.readBytes(bytes[2],2) 吗?另一个问题是关于 ser.write(struct.pack('>H', cX)) 已经发送超过 1 个字节的整数的 python 端?
-
在下面查看我的答案。
标签: interface arduino raspberry-pi serial-port communication