Отсутствуют данные (modbus) в полученных данных сокета - PullRequest
0 голосов
/ 19 сентября 2018

Я отправляю данные 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 голосов
/ 19 сентября 2018

Это одни и те же байты.Они просто отображаются по-другому.По возможности интерпретатор Python отображает байтовые значения в виде символов ASCII.То есть шестнадцатеричные байты 43 67 71 являются символами ASCII 'Cgq' и т. Д.Python показывает только формат \xNN для не-ASCII символов.

Вместо того, чтобы просто print ing str(data), попробуйте это, чтобы оно выглядело аналогично:

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