我正在使用Moxa NPort 5110串口转以太网适配器通过TCP / IP连接将串行数据传输到端口4001上的计算机。
我可以在localhost:4001
上创建一个套接字连接来接收数据。问题是我无法使用数据,因为它不干净,它包含 RS-232位。
这是我用来创建套接字连接并读取不干净数据的代码:
import socket
host = ''
port = 4001
backlog = 5
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(backlog)
while 1:
client, address = s.accept()
data = client.recv(size)
if data:
print(data)
client.close()
然后我尝试使用pyserial建立套接字连接并让pyserial解释数据。代码:
import serial
ser = serial.serial_for_url("socket://localhost:4001/logging=debug")
data = ser.read(8)
if data:
print(data)
ser.flushOutput()
ser.close()
当我使用此代码时,我会收到ConnectionRefusedError
。
有关如何建立套接字连接并使用pyserial读取数据的任何建议吗?
答案 0 :(得分:1)
我经常使用Moxa N-Ports,每当垃圾数据到达TCP套接字时,都是因为N端口的串口与串口设备之间的串口设置不匹配连接到(*)。确保两个RS-232连接设备的设置完全相同
。评论您的评论:它与TCP / IP侦听器误解数据无关,但是N端口的UART配置错误。例如,当N端口设置为接收停止位,但串行设备不发送它时,它将混淆并通过TCP / IP链路设置垃圾数据。这同样适用于计算机上的本机串行端口。
(*)其他可能的罪魁祸首当然是电气问题,如干扰或接地不正确。