Zkuste socat. Možný scénář:
socat pty,link=/dev/virtualcom0,raw tcp:192.168.254.254:8080&
socat vytvoří TCP spojení na 192.168.254.254:8080, takže vše, co bude zapsáno do /dev/virtualcom0, bude přesměrováno na 192.168.254.254:8080 a naopak.
Jiný přístup by bylo použití RFC2217 přes ser2net na straně serveru Linux a ovladač RFC2217 na straně Windows (například http://www.hw-group.com/products/hw_vsp/index_en.html verze s jedním portem). Můžete také zkusit získat http://pyserial.sourceforge.net/ pro práci se ser2net.
Software pomůže vytvořit připojení serveru a klienta přes TCP http://www.serial-com-port.com/
Používám jej pro vytváření virtuální sériové komunikace po síti, ale na počítači mám skutečný port RS232. Takže jen přenáším data přes síť. Pokud potřebujete vytvořit virtuální COM také na serveru, použijte ovladač virtuálního sériového portu.
máte socat a ser2net a další programy, ale moje zkušenost je velmi špatná... nefunguje správně. Udělal jsem tento malý python program, může být užitečný. Aktualizujte port, přenosovou rychlost... pak použijte libovolného tcp klienta. Odstraňte první řádek, pokud jej nechcete používat jako automaticky spustitelný skript
#!/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()