cat /dev/ttyUSB0が無限の繰り返しを生成するのはなぜですか?

cat /dev/ttyUSB0が無限の繰り返しを生成するのはなぜですか?

cat /dev/ttyUSB0USBシリアルアダプタを介して発生するシリアル通信を監視するために、これと同様のものを使用したいと思います。

TXラインを使用してLinuxからシリアルデバイスにシリアルコマンドを正常に送信できますが、シリアルデバイスecho "blahblah" | sudo tee /dev/ttyUSB0から返された出力を表示したいと思います。予想される応答は通常エコーメッセージですが、時にはより長いメッセージかもしれません。

cat /dev/ttyUSB0別のターミナルウィンドウで開くと、実行するまですべてが静かですecho "blahblah" | sudo tee /dev/ttyUSB0。その時点で、forevercatを実行するターミナルウィンドウで「blahblah」(「\ r \ n」ビットで終了)が繰り返されます。 RXケーブルを抜くと停止し、再接続しても再起動しません。

私はシリアルデバイスのRX出力に接続されたシリアルロジックアナライザを使用したので、この冗長性はアーティファクトであると確信しています。一つ無限エコーシーケンスの代わりにエコーコマンド。

echo "blahblah" > /dev/ttyUSB0参考までに、初期シリアルデータ転送を使用して同じ動作を得ました。

ベストアンサー1

私はこれが百万年であることを知っていますが、今日この問題に直面しました。デフォルトでは、「スクリーン」を使用してシリアルデバイスに接続してから切断すると、デバイスにエコーをかけてラインcatスパムなしで出力を取り戻すことができます。画面は設定をttyに渡していますが、プログラムでこれを行う方法が必要です。 「meuh」を叫んでください。正しい方向を教えてくれましたから。私の場合は、「stty」を使用して事前に次のコマンドを実行しました。

stty -echo -opost -F /dev/ttyUSB0

' -echo'スパムスパム改行を停止し、' -opost'私の場合は、不要な単一改行を停止します。その後、ターミナルウィンドウで次のコマンドを実行してテストを続行できます。

# cat /dev/ttyUSB0

次に、別の端末ウィンドウで次のコマンドを実行します。

# echo "This is a test - $(date)" > /dev/ttyUSB0

最初の端末ウィンドウで予想される出力を受け取りました。

# cat /dev/ttyUSB0 
This is a test - Mon 21 Feb 2022 11:27:40 AEDT

役に立ったことを願っています!

おすすめ記事