在Python2.7中使用bytearray向中继板串行端口发送十六进制命令
我需要发送十六进制命令到中继板的串行端口 我以前使用过如下命令:在Python2.7中使用bytearray向中继板串行端口发送十六进制命令,python,bytearray,Python,Bytearray,我需要发送十六进制命令到中继板的串行端口 我以前使用过如下命令: relay.write(bytearray([0xFF])) 这起作用了, 但是如果我想使用一个变量,比如 m = 255 及 其显示错误:字符串的大小必须为1 错误是什么?在您的第一个代码片段中,[0xff]是一个包含以十六进制形式写入的整数255的列表。您可以编写[255]而不是[0xff],它们编译为相同的字节码。因此,要用变量m替换该整数,您可以 m = 255 relay.write(bytearray([
relay.write(bytearray([0xFF]))
这起作用了,
但是如果我想使用一个变量,比如
m = 255
及
其显示错误:字符串的大小必须为1
错误是什么?在您的第一个代码片段中,
[0xff]
是一个包含以十六进制形式写入的整数255的列表。您可以编写[255]
而不是[0xff]
,它们编译为相同的字节码。因此,要用变量m
替换该整数,您可以
m = 255
relay.write(bytearray([m]))
FWIW,您的第一段代码也可以写成
relay.write(bytearray('\xff'))
它使用包含单个ff
字节的十六进制字符串初始化bytearray
bytearray([hex(m)]
不起作用,因为hex(255)
是一个包含四个字节的字符串:'0xff'
,即数字0
,后跟字母x
,f
和f
relay.write(bytearray('\xff'))