Coba socat. Skenario yang mungkin:
socat pty,link=/dev/virtualcom0,raw tcp:192.168.254.254:8080&
socat membuat koneksi TCP ke 192.168.254.254:8080, sehingga semua yang akan ditulis ke /dev/virtualcom0 akan diteruskan ke 192.168.254.254:8080 dan sebaliknya.
Pendekatan lain akan menggunakan RFC2217 melalui ser2net di sisi server Linux dan driver RFC2217 di sisi Windows (misalnya http://www.hw-group.com/products/hw_vsp/index_en.html versi port tunggal). Anda juga dapat mencoba agar http://pyserial.sourceforge.net/ bekerja dengan ser2net.
Perangkat lunak ini akan membantu membangun koneksi server dan klien melalui TCP http://www.serial-com-port.com/
Saya menggunakannya untuk membuat komunikasi serial virtual melalui jaringan, tetapi saya memiliki port RS232 asli di komputer. Jadi saya hanya mentransfer data melalui jaringan. Jika Anda juga perlu membuat COM virtual di server, gunakan Driver Port Serial Virtual.
Anda memiliki socat dan ser2net dan program lain tetapi pengalaman saya sangat buruk ... tidak berfungsi dengan baik. Saya sudah melakukan program python kecil ini, semoga bermanfaat. Perbarui port, baudrate ... lalu gunakan klien tcp apa pun. Hapus baris pertama jika tidak ingin menggunakan is sebagai skrip yang dapat dieksekusi otomatis
#!/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()