Prueba socat. Posible escenario:
socat pty,link=/dev/virtualcom0,raw tcp:192.168.254.254:8080&
socat crea una conexión TCP a 192.168.254.254:8080, de modo que todo lo que se escribirá en /dev/virtualcom0 se reenviará a 192.168.254.254:8080 y viceversa.
Otro enfoque sería usar RFC2217 a través de ser2net en el lado del servidor Linux y el controlador RFC2217 en el lado de Windows (por ejemplo, http://www.hw-group.com/products/hw_vsp/index_en.html versión de puerto único). También puede intentar que http://pyserial.sourceforge.net/ funcione con ser2net.
El software ayudará a establecer la conexión del servidor y el cliente a través de TCP http://www.serial-com-port.com/
Lo uso para crear comunicaciones seriales virtuales a través de la red, pero tengo el puerto RS232 real en la computadora. Así que solo transfiero los datos a través de la red. Si también necesita crear un COM virtual en el servidor, use el controlador de puerto serie virtual.
tienes socat y ser2net y otros programas pero mi experiencia es muy mala... no funciona correctamente. He hecho este pequeño programa de python, puede ser útil. Actualice el puerto, la velocidad en baudios ... luego use cualquier cliente tcp. Elimine la primera línea si no desea usarla como secuencia de comandos autoejecutable
#!/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()