socat は (ほぼ) すべてを (ほぼ) すべてに接続するツールであり、tee はストリームを複製できます。
あなたのユースケースでは、シリアルポート /dev/ttyS0
を接続できます PTY /tmp/ttyV0
に 、次にアプリケーションを PTY にポイントし、socat tee
を持っています あなたが観察できるようにどこかで入力と出力を出力してください。
「socat serial port pty tee debug」をグーグルで検索すると、いくつかの「標準的な手順」の例が表示されます。その 1 つが次のとおりです。
socat /dev/ttyS0,raw,echo=0 \
SYSTEM:'tee in.txt |socat - "PTY,link=/tmp/ttyV0,raw,echo=0,waitslave" |tee out.txt'
ファイル in.txt
と out.txt
その後、キャプチャされたデータが含まれます。
コメント後に更新:
- socat 構文は最初はわかりにくいように見えますが、実際には、ネストされた 2 つのステートメントにすぎません。
このような強力で用途の広いツールに支払う代償はわずかです。 - シリアルポートを設定したり、他の ioctl を送信したりする必要がある場合は、socat を呼び出す前に行ってください。socat はそれらをプロキシできないためです。
- 専用ツール
interceptty
2006 年以降は構文が少し単純になりましたが、(ioctl をプロキシしている間) TTY のみをインターセプトでき、おそらくパッケージ マネージャーには含まれていません。 (ほとんどの Linux ディストリビューションはリポジトリに追加していません)
シリアルドライバーには、パケットを監視できるトレース機能がないと思います。 strace
を使用できます アプリケーションからのすべての読み取りと書き込みを観察するには:
strace -s9999 -o myapp.strace -eread,write,ioctl ./myapp
Linux Serial Sniffer、jpnevulator、Moni というプロジェクトを見つけました。最初の2つは、まさにあなたが望むことをしているように見えます。最後の 1 つは自分自身をモニターと呼んでいますが、実際には標準のシリアル通信プログラムのように見えます。