Essayez socat. Scénario possible :
socat pty,link=/dev/virtualcom0,raw tcp:192.168.254.254:8080&
socat crée une connexion TCP à 192.168.254.254:8080, de sorte que tout ce qui sera écrit dans /dev/virtualcom0 sera transmis à 192.168.254.254:8080 et vice versa.
Une autre approche serait d'utiliser RFC2217 via ser2net côté serveur Linux et le pilote RFC2217 côté Windows (par exemple http://www.hw-group.com/products/hw_vsp/index_en.html version à port unique). Vous pouvez également essayer de faire fonctionner http://pyserial.sourceforge.net/ avec ser2net.
Le logiciel aidera à établir une connexion serveur et client via TCP http://www.serial-com-port.com/
Je l'utilise pour créer des communications série virtuelles sur le réseau, mais j'ai le vrai port RS232 sur l'ordinateur. Donc, je viens de transférer les données sur le réseau. Si vous devez également créer un COM virtuel sur le serveur, utilisez le pilote de port série virtuel.
vous avez socat et ser2net et d'autres programmes mais mon expérience est très mauvaise... ne fonctionne pas correctement. J'ai fait ce petit programme python, peut être utile. Mettez à jour le port, le débit en bauds ... puis utilisez n'importe quel client tcp. Supprimez la première ligne si vous ne voulez pas l'utiliser comme script auto-exécutable
#!/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()