我以ser.write('\x01\x03\x01')
格式将消息发送到COM端口,效果很好。
我尝试创建一个如下的函数:
def func(inp):
# transport inp to hex format and to be like \xXY (two digits)
# merge in the way '\x01'+'\xXY'+'\x01'
但是我总是遇到插入反斜杠的问题(它可以像双反斜杠那样插入,但是端口不能将其作为单个反斜杠读取)或者通过解释器读取此反斜杠(给出错误)。
如果有人已经这样做了,请帮助我!
答案 0 :(得分:0)
您可以使用binascii.unhexlify
转换十六进制字符串
>>> import binascii
>>> binascii.unhexlify('010203') == '\x01\x02\x03'
True
所以你的功能是
def func(inp):
return '\x01' + binascii.unhexlify(inp) + '\x01';
答案 1 :(得分:0)
这正是Python的struct module所针对的。您的功能可以写成:
import struct
>>> def func(inp):
... return struct.pack('bbb', 1, inp, 1)
...
...
>>> func(22)
'\x01\x16\x01'
'b'
格式字符将字节值解释为带符号的字符,'B'
会将它们解释为无符号字符。