Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python通过TCP/IP读取串行(RS-232)数据_Python_Sockets_Serial Port_Pyserial - Fatal编程技术网

Python通过TCP/IP读取串行(RS-232)数据

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

我正在使用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链路设置垃圾数据。这同样适用于计算机上的本机串行端口


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

什么是RS-232位?我经常使用这些东西,从来没有遇到过任何麻烦。大多数情况下,当垃圾数据出现时,Moxa的串行端口设置与其连接的设备之间存在不匹配。确保它们设置完全相同(速度、开始/停止位等)。我假设是停止位造成了问题,因为TCP/IP侦听器甚至不知道它的串行数据,因此会误解它。但你是对的:问题是Moxa和连接设备的串行端口设置不匹配!谢谢请建议如何继续这个问题:我应该自己添加答案吗?我添加了一个您可以接受的答案。当然,如果能更好地帮助社区,您也可以自由添加您自己的答案。您能指导我如何使用OP代码读取特定modbus寄存器吗?(如果可能的话)