我正在开发一个应用程序,它应该能够写入虚拟串口,并通过网络从远程客户端接收数据。
应用程序在linux服务器上运行。我是新的使用串口,我有一些问题在这个主题。
客户端
客户端可以建立到服务器的TCP连接。当我们设置客户端时,我们必须提供服务器的IP地址、tcp端口(通常是8080)和虚拟com端口。
然后,客户端将自动尝试连接到服务器。
服务器
服务器有一个虚拟com端口,与我们在客户端配置中设置的端口相同(例如,COM1)。当服务器上的应用程序将数据写入此端口时,应将数据发送到通过tcp连接的所有客户端。客户端的响应是将TCP发送回服务器,服务器可以通过虚拟串口读取它。
问题
在windows上,我使用了一个虚拟串口连接器http://www.eterlogic.com/Products.VSPE.html,它完成了大部分工作。但是,我想在linux机器上解决这个问题。
我的问题是,如何创建一个带有虚拟串行端口的TCP服务器,并通过TCP通过该端口向侦听客户端发送/接收数据?
发布于 2014-03-27 13:30:37
试试索纳特。可能的情况:
socat pty,link=/dev/virtualcom0,raw tcp:192.168.254.254:8080&socat创建到192.168.254.254:8080的TCP连接,以便将写入/dev/0的所有内容转发到192.168.254.254:8080,反之亦然。
的另一种方法是在Linux端通过ser2net使用RFC2217,在Windows端使用RFC2217驱动程序(例如,en.html单端口版本)。您还可以尝试让http://pyserial.sourceforge.net/使用ser2net。
发布于 2020-10-16 18:29:19
你有socat,ser2net和其他程序,但是我的经验很糟糕.工作不正常。我已经完成了这个小小的python程序,可能很有用。更新端口,波德率。然后使用任何tcp客户端。删除第一行,如果不想使用是作为自动可执行脚本
#!/usr/bin/python
import socket
import sys
import serial
#open serial port
ser = serial.Serial('/dev/ttyAMA0', 115200, timeout=0)
#create socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
#bond to the port. Don't use localhost to accept external connections
server_address = ('', 2105)
print('starting up on {} port {}'.format(*server_address))
sock.bind(server_address)
#listen
sock.listen(1)
#loop
while True:
#waits for a new connection
print('waiting for a connection')
connection, client_address = sock.accept()
try:
print('connection from', client_address)
#continously send from serial port to tcp and viceversa
connection.settimeout(0.1)
while True:
try:
data = connection.recv(16)
if data == '': break
ser.write(data)
except KeyboardInterrupt:
connection.close()
sys.exit()
except Exception as e:
pass
received_data = ser.read(ser.inWaiting())
connection.sendall(received_data)
except Exception as e:
print e
finally:
#clean up connection
connection.close()发布于 2017-08-08 08:47:33
该软件将有助于在TCP http://www.serial-com-port.com/上建立服务器和客户端连接。
我使用它创建虚拟串行通信网络,但我有真正的RS232端口在计算机上。所以我只是通过网络传输数据。如果您也需要在服务器上创建虚拟COM,请使用虚拟串口驱动程序。
https://stackoverflow.com/questions/22624653
复制相似问题