現在、次のコマンドを使用しています。ローカルマシンのシリアルttyUSB0から読み取り、ロギング用の2つのteeコマンドを介して双方向にsshに接続します。リモートエンドで、socatはstdioをリモートttyUSB0に接続します。
stty -F /dev/ttyUSB0 raw 3000000
ssh [email protected] stty -F /dev/ttyUSB0 raw 3000000
socat /dev/ttyUSB0,raw,echo=0 SYSTEM:'"tee -a log_l2r | ssh [email protected] socat - /dev/ttyUSB0,raw,echo=0 | tee -a log_r2l"',pty,echo=0
バッファリングによってリアルタイム通信が損なわれないようにしたい 2つのロボットコントローラ間。ラインバッファリングは問題ありませんが、それ以上のことはありません。
上記のコマンドには多くの接続があり、バッファリングされたパイプ/ソケットの可能性についてはよくわかりません。それらを見つけるのを手伝ってくれませんか。
また、翻訳やエコーを削除する必要があります(stty ... raw ...
すでにこれを行っています)。
このコミュニケーションの問題を解決するための他の好ましいアプローチはありますか?つまり、他のコマンド?
Debian GNU/Linuxの実行-Ubuntu
Stdioバッファリングを取得した場合は、実際のコマンドのプレフィックスとしてstdbuf
コマンドを適用します。
stty
にはおそらく明示的な-echo
が必要です。
別の方法として、ssh暗号化が必要ない場合は、あるマシンのusbデバイスを別のマシンで表示するための sbip モジュールを確認してください。
tee
ロギングを回避するには、socat -v
を使用してstderr上の両方のデータストリームのコピーを取得します。