我正在使用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读取数据的任何建议?

最佳答案

我经常使用Moxa N端口,并且每当垃圾数据到达TCP套接字时,这是因为N端口的串行端口与要连接到(*)的串行设备之间的串行设置不匹配。确保两个RS-232连接设备的设置完全相同。

要评论您的评论:与TCP/IP监听器误解数据无关,而与N端口的UART配置错误有关。例如,当N端口设置为接收停止位,但串行设备未发送它时,它将感到困惑并通过TCP/IP链接设置垃圾数据。这同样适用于计算机上的 native 串行端口。

(*)其他可能的问题当然是电气问题,例如干扰或不正确的接地。

关于python - Python通过TCP/IP读取串行(RS-232)数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26803825/

10-11 01:28
查看更多