Python在串行端口上以十六进制而非ASCII写入
我试图通过pyserial从使用ModBus协议的仪器中轮询数据。我需要知道如何防止pyserial以ascii格式发送命令 以下是我所做的:Python在串行端口上以十六进制而非ASCII写入,python,python-3.x,pyserial,modbus,Python,Python 3.x,Pyserial,Modbus,我试图通过pyserial从使用ModBus协议的仪器中轮询数据。我需要知道如何防止pyserial以ascii格式发送命令 以下是我所做的: 使用RealTerm,我连接到仪器并发送此命令,然后点击“发送为数字”:0x33 0x03 0x9D 0xA4 0x00 0x02 0xAE 0x56。以数字形式发送此行可以正确轮询数据:33 03 04 BE CE 5C A8 94 99;例如,“BE CE 5C A8”转换为-0.4030,这是仪器在其屏幕上显示的数字 使用RealTerm和相同的命
因此,在我看来,serial.write()以ASCII格式发送命令。有人知道我如何以类似的方式将此数据发送到RealTerm步骤1吗?您可以使用字节或字节数组:
msg = bytes.fromhex("33 03 9D A4 00 02 AE 56")
serial.write(msg)
可能重复的感谢亚当!我现在无法使用仪器来测试你的方法,但我有一个问题。python代码从json文件(配置文件)读取msg,我对json文件不太熟悉,但我知道它无法处理python命令,因此将这两行代码放入json文件将抛出错误(我说得对吗?)。由于msg=b'3\x03\x9d\xa4\x00\x02\xaeV',您知道我应该如何准确地将其写入json文件吗?