Versuchen Sie es mit Sokat. Mögliches Szenario:
socat pty,link=/dev/virtualcom0,raw tcp:192.168.254.254:8080&
Sokat erstellt eine TCP-Verbindung zu 192.168.254.254:8080, sodass alles, was nach /dev/virtualcom0 geschrieben wird, zu 192.168.254.254:8080 weitergeleitet wird und umgekehrt.
Ein anderer Ansatz wäre, RFC2217 über ser2net auf der Linux-Serverseite und den RFC2217-Treiber auf der Windows-Seite zu verwenden (z. B. http://www.hw-group.com/products/hw_vsp/index_en.html Single-Port-Version). Sie können auch versuchen, http://pyserial.sourceforge.net/ dazu zu bringen, mit ser2net zusammenzuarbeiten.
Die Software hilft beim Aufbau einer Server- und Client-Verbindung über TCP http://www.serial-com-port.com/
Ich verwende es zum Erstellen virtueller serieller Kommunikation über das Netzwerk, aber ich habe den echten RS232-Anschluss am Computer. Also übertrage ich die Daten einfach über das Netzwerk. Wenn Sie auch auf dem Server eine virtuelle COM erstellen müssen, verwenden Sie den Virtual Serial Port Driver.
Sie haben socat und ser2net und andere Programme, aber meine Erfahrung ist sehr schlecht ... funktioniert nicht richtig. Ich habe dieses kleine Python-Programm gemacht, kann nützlich sein. Aktualisieren Sie Port, Baudrate ... und verwenden Sie dann einen beliebigen TCP-Client. Entfernen Sie die erste Zeile, wenn Sie sie nicht als automatisch ausführbares Skript verwenden möchten
#!/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()