如何解决Python 3,打包产生的字节序/字序输出问题
使用: Python 3,Endian,BinaryPayloadBuilder
编辑:这可能是pyModbus中的已知错误。我听说过关于字节序-字序函数的类似问题。暂时,我已经通过蛮力编码解决了这个问题,并且我的有效负载工作正常。
我的BinaryPayloadBuilder输出有问题。我正在尝试为ModbusTCP传输重现正确的字节顺序,但是生成器给了我意外的结果。我使用Wireshark嗅探了正确的顺序,并尝试使用python构建相同的消息。根据嗅探,正确的结构似乎是byteorder = Big.Endian,wordorder = Little.Endian,但将这些设置放入构建器中不会改变输出。
from pymodbus.constants import Endian
from pymodbus.payload import BinaryPayloadBuilder
def run_binary_payload_ex():
print()
builder = BinaryPayloadBuilder(byteorder=Endian.Big,wordorder=Endian.Little)
bStrng = "<ID 30><CLR>"
builder.add_string(bStrng)
payload = builder.to_registers()
print(payload)
print("\n")
payload = builder.build()
print(payload)
if __name__ == "__main__":
run_binary_payload_ex()
输出:
[15433,17440,13104,15932,17228,21054]
[b'<I',b'D ',b'30',b'><',b'CL',b'R>']
但我期望:
18748,8260,12339,15422,19523,15954
[b'I<',b' D',b'03',b'<>',b'LC',b'<R']
应该为每对交换位顺序。有人可以告诉我我在做什么错吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。