ser2net
との組み合わせを使用できますsocat
。たとえば、シリアルポートを介してラズベリーパイにロボットを接続しています。raspberry piはローカルネットワーク(2台目のPCに相当)に接続されています。そして、私のラップトップは同じローカルネットワーク(最初のPCと同等)に接続されています。次に、2台目のPCからTCP経由でser2netを使用してシリアルポートを転送socat
し、1台目のPCでプロキシシリアルデバイスファイルを作成します。
このセットアップも同様に機能する場合があります。提案されたソリューション:
ステップ1:2番目のPCにser2netパッケージをインストールします(図に従って)
sudo apt-get install ser2net
ser2netはTCPポートをリッスンし、TCPポートを介してシリアルポートとの間でデータをパイプすることができます。構成ファイルを介して、「プロキシ」を作成するシリアルポートを設定できます/etc/ser2net.conf
。
ステップ2:2台目のPCでser2netを構成する
たとえば、/dev/ttyACM0
ボーレートで接続されたデバイスがあり、115200
ローカルホストのポート3333から提供する場合、次の行を追加できます。/etc/ser2net.conf
3333:raw:0:/dev/ttyACM0:115200,remctl
構成ファイルを作成したら、2番目のPCで実行してser2netを開始します。
ser2net
または(既に実行されている場合は、以下のように再起動します)
/etc/init.d/ser2net restart
ここで重要なことの1つは、remctlオプションです。これにより、クライアント側(図の最初のPC)がデバイスに接続し、シリアル接続オプションを自由に選択できます。このように、シリアル通信はデータ収集ワークスペースの観点から完全に透過的だと思います。詳細はこちらをご覧ください。
手順3:データ収集ワークステーション(1台目のPC)でプロキシシリアルデバイスファイルをセットアップする
(socatがない場合は、sudo apt-get install socat
)
最後に、最初のPCのターミナルでsocat
、tcpポートからリッスンするプロキシシリアルポートを作成します。
socat pty,link=$HOME/MyProxySerialPort,waitslave tcp:$ip:$port,forever,reuseaddr,keepalive
ここで、この例ip=<2nd-PC-IP-address>
ではport=3333
(または/etc/ser2net.conf
2台目のPCでセットアップするときに選択したもの)。
ステップ4:MyProxySerialPortに接続する
これ$HOME/MyProxySerialPort
で、最初のPC にあるデバイスへのシリアル接続を正常に開くことができるはずです。
このブログ投稿には、このセットアップに関する詳細情報もあります。http://techtinkering.com/2013/04/02/connecting-to-a-remote-serial-port-over-tcpip/