現在、次のコマンドを使用しています。ローカルシステムのシリアル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
答え1
stdioバッファリングが発生したら、stdbuf
それを実際のコマンドの前に付けます。
stty
明示的なものが必要な場合があります-echo
。
代わりにSSH暗号化が必要ない場合は、次の点を確認してください。うーんあるコンピュータのUSBデバイスを別のコンピュータに表示できるようにするモジュールです。
tee
ロギングを回避するには、socat -v
stderrから両方のデータストリームのコピーを取得します。