Solución:
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 utilizar RFC2217 a través de ser2net en el lado del servidor de 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.
tienes socat y ser2net y otros programas pero mi experiencia es muy mala … no funciona correctamente. He hecho este pequeño programa en 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()