我正在通过套接字客户端工具发送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)))
答案 0 :(得分:0)
它们是完全相同的字节。它们只是以不同的方式显示。 python解释器在可能的情况下将字节值显示为ASCII字符。也就是说,十六进制字节43 67 71
是ASCII字符“ Cgq”,依此类推。 Python仅显示\xNN
格式的非ASCII字符。
尝试使它看起来类似,而不是print
来str(data)
,
print("RECEIVED:", time.ctime(), " ".join("{:02x}".format(byte) for byte in data))