Python 从微控制器发送和接收字节
我使用Python3将字节发送到微控制器,然后再接收回来(并在Python监视器中打印)。它们通过微控制器,在这条路径上似乎有一些奇怪的行为。例如,当我这样做时:Python 从微控制器发送和接收字节,python,arduino,byte,Python,Arduino,Byte,我使用Python3将字节发送到微控制器,然后再接收回来(并在Python监视器中打印)。它们通过微控制器,在这条路径上似乎有一些奇怪的行为。例如,当我这样做时: a = b'\7' op(board).send(a) #This is syntax specific to the program that runs Python 及 它按预期打印出b'7'。但是,当我尝试使用相同的代码,但使用a=b'8'时,它会打印出来:b'9265',我不知道区别是什么 类似地,对于任何有使用Arduin
a = b'\7'
op(board).send(a) #This is syntax specific to the program that runs Python
及
它按预期打印出b'7'
。但是,当我尝试使用相同的代码,但使用a=b'8'
时,它会打印出来:b'9265'
,我不知道区别是什么
类似地,对于任何有使用Arduino和Python经验的人,有没有关于我可以使用什么格式轻松地向Arduino发送串行数据或从Arduino发送串行数据的解释?似乎我只能发送字节
对象,但我不确定Arduino如何解释这些对象。看起来字节值被转换为其utf-8
“symbol”值(即作为字符串),然后发送到Arduino,Arduino读取为二进制值
但是,当我将这个读取值发送回Python时,它会发送一个带有十进制值的byte
对象。既然是这种情况,而且我可能正在接收一个值流(例如从模拟管脚),那么快速将这些字节值解码为小数的最佳方法是什么
换句话说,这很好,除非我必须对每个值调用chr(val)
。
如果我传入值b'151'
(意思是我想要一个十进制值151
,则arduino会回显b'495349'
并且使用
int(chr(val))
不起作用。似乎您使用的字节文字不正确。请检查。以下是一些示例:
>>> 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'
>>> 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'