在python 2.7中使用字节数组将十六进制命令发送到中继板的串行端口



我需要发送以将十六进制命令发送到继电器板的串行端口。

我以前使用过这样的命令:

relay.write(bytearray([0xFF]))     

这奏效了,但是如果我想使用这样的变量

m = 255

relay.write(bytearray([hex (m)]))

其显示错误:string must be of size 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,后跟字母xff

最新更新