socatを試してください。考えられるシナリオ:
socat pty,link=/dev/virtualcom0,raw tcp:192.168.254.254:8080&
ソキャット 192.168.254.254:8080 への TCP 接続を作成し、/dev/virtualcom0 に書き込まれるすべてのものが 192.168.254.254:8080 に転送され、その逆も同様です。
別のアプローチ Linux サーバー側では ser2net 経由で RFC2217 を使用し、Windows 側では RFC2217 ドライバーを使用します (たとえば、http://www.hw-group.com/products/hw_vsp/index_en.html シングル ポート バージョン)。 http://pyserial.sourceforge.net/ で ser2net を使用することもできます。
このソフトウェアは、TCP http://www.serial-com-port.com/ でサーバーとクライアントの接続を確立するのに役立ちます。
ネットワーク経由で仮想シリアル通信を作成するために使用していますが、コンピューターには実際の RS232 ポートがあります。そのため、ネットワーク経由でデータを転送するだけです。サーバー上にも仮想 COM を作成する必要がある場合は、仮想シリアル ポート ドライバーを使用します。
あなたはsocatとser2netと他のプログラムを持っていますが、私の経験は非常に悪いです...正しく動作していません.私はこの小さな python プログラムを実行しましたが、役に立つ可能性があります。ポート、ボーレートを更新してから、任意の tcp クライアントを使用します。自動実行スクリプトとして使用したくない場合は、最初の行を削除してください
#!/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()