リモートコンピュータのシリアルポートに接続してデータを記録するためのバッファされていないsocatコマンド

リモートコンピュータのシリアルポートに接続してデータを記録するためのバッファされていないsocatコマンド

現在、次のコマンドを使用しています。ローカルシステムのシリアル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
  1. バッファリングがリアルタイム通信を妨げないことを確認したいと思います。2つのロボットコントローラ間。ラインバッファリングは大丈夫ですが、それはすべてです。
    上記のコマンドには多くの接続があり、基本的なバッファリングされたパイプ/ソケットについてはわかりません。私が探すのを手伝ってくれますか?

  2. また、翻訳やエコーを削除する必要があります(stty ... raw ...すでに完了していると思います)。

  3. この通信問題を解決するために他の好ましい方法がありますか?つまり、他のコマンド?

Debian GNU/Linux の実行 - Ubuntu

答え1

stdioバッファリングが発生したら、stdbufそれを実際のコマンドの前に付けます。

stty明示的なものが必要な場合があります-echo

代わりにSSH暗号化が必要ない場合は、次の点を確認してください。うーんあるコンピュータのUSBデバイスを別のコンピュータに表示できるようにするモジュールです。

teeロギングを回避するには、socat -vstderrから両方のデータストリームのコピーを取得します。

関連情報