8進ダンプ(od)が返されるのを防ぐ方法は?

8進ダンプ(od)が返されるのを防ぐ方法は?

だから、/dev/ttyUSB0odのコマンドを使用しました。

od -x --endian=big < /dev/ttyUSB0

昨日使用したときにブロックされず、次のようにエスケープしたり返したりせずに何かを表示しました。

0000000 55aa 03ff 0104 0616 835a a555 aaff 0302
0000020 1104 e0e1 025a a555 aa03 ff01 0506 8682 ...

しかし、今日使用すると、od印刷後すぐに停止して返されます。

0000000

私がここで何を見逃しているのか知っている人はいますか?

ベストアンサー1

おそらくttyデバイスは標準モード(ttyラインルールが単純なラインエディタを実装するモード)にあるため、eofもう一方の端で受信した文字のため(デフォルトでは^Dread())何も返されません。

走る時も同様

od -vx --endian=big 

端末に入力してくださいCtrl-D

別の説明は、標準モードがオフになっているがVMINtermios設定が0に設定されていることです。 VMIN = 0の場合、read()デバイスファイルのaはすぐに読み取る準備ができたエントリを返し、それ以外の場合は何も返しません(最終ファイルを意味します)(VTIME> 0以外の場合はVTIMEを待つ)1秒あたり少なくとも1バイト)。

今回も端末で試してみることができます。

s=$(stty -g); stty -icanon min 0 time 0; od -vx --endian=big; stty "$s"

次のコマンドを使用して現在の設定を確認します。

stty -a < /dev/ttyUSB0

/dev/ttyUSB0データ転送にのみ使用され、端末では使用されていないシリアルデバイスの場合は、以下を発行する必要があります。

stty raw -echo < /dev/ttyUSB0

実際、これはttyラインルールのほとんどの効果を無効にします。

バラより各PTY(擬似端末)コンポーネント(ソフトウェア、マスター側、スレーブ側)の役割は何ですか?詳しくはtermios(3)マニュアルページをご覧ください。stty(1)

おすすめ記事