Python通过TCP/IP读取串行(RS-232)数据
我正在使用Moxa NPort 5110串行到以太网适配器通过TCP/IP连接将串行数据传输到端口4001上的计算机 我能够在Python通过TCP/IP读取串行(RS-232)数据,python,sockets,serial-port,pyserial,Python,Sockets,Serial Port,Pyserial,我正在使用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
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链路设置垃圾数据。这同样适用于计算机上的本机串行端口
(*)其他可能的罪魁祸首当然是电气问题,如干扰或不正确接地。什么是RS-232位?我经常使用这些东西,从来没有遇到过任何麻烦。大多数情况下,当垃圾数据出现时,Moxa的串行端口设置与其连接的设备之间存在不匹配。确保它们设置完全相同(速度、开始/停止位等)。我假设是停止位造成了问题,因为TCP/IP侦听器甚至不知道它的串行数据,因此会误解它。但你是对的:问题是Moxa和连接设备的串行端口设置不匹配!谢谢请建议如何继续这个问题:我应该自己添加答案吗?我添加了一个您可以接受的答案。当然,如果能更好地帮助社区,您也可以自由添加您自己的答案。您能指导我如何使用OP代码读取特定modbus寄存器吗?(如果可能的话)