从微控制器发送和接收字节

时间:2014-08-25 23:20:13

标签: python arduino byte

我使用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))不起作用。

1 个答案:

答案 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'