Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从微控制器发送和接收字节_Python_Arduino_Byte - Fatal编程技术网

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

我使用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'
,我不知道区别是什么

类似地,对于任何有使用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'