收到的套接字数据中缺少数据(modbus)

时间:2018-09-19 11:19:02

标签: python sockets modbus

我正在通过套接字客户端工具发送Modbus数据。我已经编写了一个小型服务器程序来接收传入的数据。我在套接字测试工具中收到的数据(十六进制)符合预期。但是,我在程序中收到的数据是一些垃圾数据。

程序数据(ScreenShot):

...
RECIEVED: Wed Sep 19 16:34:25 2018 b'\x01\x04\x04Cgq\xc0{\xdf'

软件数据(ScreenShot):

01 04 04 43 67 71 c0 7b df


  import socket

    client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

    ip = '192.168.10.3'
    port = 4196
    address = (ip,port)
    client.connect(address)
    print("connected")
    datasent = client.send(b"\x01\x04\x00\x00\x00\x02\x71\xcb")
    print(datasent)
    data= client.recv(1024)
    print(" ".join("{:02x}".format(byte) for byte in (data)))

1 个答案:

答案 0 :(得分:0)

它们是完全相同的字节。它们只是以不同的方式显示。 python解释器在可能的情况下将字节值显示为ASCII字符。也就是说,十六进制字节43 67 71是ASCII字符“ Cgq”,依此类推。 Python仅显示\xNN格式的非ASCII字符。

尝试使它看起来类似,而不是printstr(data)

print("RECEIVED:", time.ctime(), " ".join("{:02x}".format(byte) for byte in data))