微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python 3,打包产生的字节序/字序输出问题

如何解决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 举报,一经查实,本站将立刻删除。