我使用Python 3将字节发送到微控制器然后接收它们(并在我的python监视器中打印它们)。它们通过微控制器,似乎在这条路径中应用了一些奇怪的行为。例如,当我这样做时:
a = b'\7'
op(board).send(a) #This is syntax specific to the program that runs Python
和
print(received)
按预期打印b'7'
。但是,当我尝试相同的代码但使用a = b'8'
时,它打印出来:b'9265'
我不知道有什么区别。
同样,对于有使用Arduino和Python经验的人,是否有任何解释我可以使用哪种格式轻松地将数据发送到Arduino或从Arduino发送串行数据?好像我只能发送bytes
个对象,但我不确定这些是如何被Arduino解释的。看起来字节值被转换为utf-8
"符号"值(即作为字符串)然后发送到Arduino,它读取它是二进制值。
但是,当我将此读取值发送回Python时,它会发送一个带有小数值的byte
对象。既然如此,我可能正在接收一个值流(例如,来自模拟引脚),将这些字节值快速解码为小数的最佳方法是什么
换句话说,这很好,除非我必须在每个值上调用chr(val)
。
如果我传入值b'151'
(意味着我想要一个小数值151
,那么arduino会回复b'495349'
使用int(chr(val))
不起作用。
答案 0 :(得分:0)
似乎您错误地使用了字节文字。检查doc。以下是一些例子:
>>> list(b'\7')
[7]
>>> list(b'7')
[55] # character '7'
>>> list(b'8')
[56] # character '8'
>>> list(b'\8')
[92, 56] # characters '\\' and '8' because \8 can't be parsed as octal number
>>> list(b'151')
[49, 53, 49] # characters '1', '5', '1'