python将十六进制字符串发送到串行端口

时间:2015-05-08 16:23:23

标签: python serial-port hex

我正在尝试将十六进制字符串发送到串行端口 它必须采用以下格式'\ x02 \ x81 ....' 这是我的代码

from binascii import unhexlify
string='0281E1B1'
print unhexlify(string)

给了我一些randon符号?a +而不是\ x02 \ x81 \ xE1 \ xB1 我有python 2.7所以解码('hex')不工作

1 个答案:

答案 0 :(得分:2)

你做对了....你只需要通过端口发送它

print repr(unhexlify(my_string))

my_serial.write(unhexlify(my_string))

#or 

my_serial.write(my_string.decode("hex"))

问题是你不能只是将随机字节("\x##")打印到终端并期望看到有意义的东西......终端显示无法解码的字符?或者像带有问号的钻石

>>> '0281E1B1'.decode("hex")
'\x02\x81\xe1\xb1'
>>> print '0281E1B1'.decode("hex")
☻üß▒
>>> '0281E1B1'.decode("hex") == unhexlify('0281E1B1')
True

虽然出于任何奇怪的原因我的终端没有添加任何东西?到那个特定的字符串