使用python 2.7中的bytearray将十六进制命令发送到中继板的串行端口

时间:2016-06-13 10:35:02

标签: python bytearray

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

我之前使用的命令如下:

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

这很有效, 但如果我想使用像

这样的变量
m = 255

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

显示错误:string must be of size 1

错误是什么?

1 个答案:

答案 0 :(得分:1)

在您的第一个代码段中,[0xff]是一个包含以十六进制形式编写的整数255的列表。您可以编写[255]而不是[0xff],它们编译为相同的字节码。所以要用变量m替换那个整数,你可以做

m = 255
relay.write(bytearray([m]))

FWIW,您的第一个片段也可以写成

relay.write(bytearray('\xff'))

使用包含单个bytearray字节的十六进制字符串初始化ff

bytearray([hex(m)])赢了,因为hex(255)是一个包含四个字节的字符串:'0xff',即数字0,后跟字母{{ 1}},xf