我需要发送十六进制命令到中继板的串口。
我以前使用过如下命令:
relay.write(bytearray([0xFF]))
这有效, 但如果我想使用像这样的变量
m = 255
和
relay.write(bytearray([hex (m)]))
显示错误:字符串大小必须为 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
。
关于python - python 2.7中使用bytearray向中继板串口发送十六进制命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37787507/