在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'))