1

我在 Python 中使用 OpenCV 库来检测人脸并计算围绕人脸形成的矩形(X,Y)的中心点,以控制连接到 arduino 的伺服系统。因为python使用unicode,所以我将它转换为字节,就像这样

data = "X{0:f}Y{1:f}".format(xx, yy)
bdata = b'data'
arduino.write(bdata)

我必须通过串行通信在 arduino 程序中接收这些字节,并且它正在接收。问题是我无法将其解码回字符串,因此程序可以读取我已经尝试并搜索了很多论坛,但我没有这方面的初学者,因为我有机械engg背景,所以完全是菜鸟。我什至不知道这是否可能。提前致谢!

4

1 回答 1

2
bdata = b'data'

这是创建一个四字节的字符串,以 ASCII 编码表示字符d, a, t, 。a你说的应该不是这个吧!

您应该做的是使用该函数将data字符串编码为字节。encode这需要您考虑编码;可能 ASCII 适合这种情况,因为您没有任何“特殊”字符:

bdata = data.encode('ascii')

作为一般提示,在 Python 解释器中进行试验会很有用,例如:

>>> xx = 4.3
>>> yy = 7.1
>>> data = "X{0:f}Y{1:f}".format(xx, yy)
>>> bdata = b'data'
>>> bdata
b'data'
>>> bdata = data.encode('ascii')
>>> bdata
b'X4.300000Y7.100000'
于 2020-11-14T10:51:31.827 回答