ttyの同期/シーケンシャル読み取り/書き込み

ttyの同期/シーケンシャル読み取り/書き込み

のデバイスと通信しようとしています/dev/ttyACM0。次のコマンドを送信する前に、コマンドを作成して応答(ACK)を待つ必要があります。

私は以下を見つけました記事これを実装する方法については、私のユースケースに合わせて動作させることはできません。私の考えでは、受信したデータの理解が不足しており、新しい行で終了しないようです。

端末を開き、catを使用します。

cat -v /dev/ttyACM0

その後、他の端末から印刷します。

printf 'S0100000FF\x0d' > /dev/ttyACM0

端末からttyを読み取るときに受け取る応答はです^F。別のコマンドを送信すると、同じ行に別のコマンドが印刷されます。今、その行が表示されるので、^F^F新しい行で終わらないようです。

上記の記事の読み取りコマンドを使用する場合(別の端末から):

(read -n 60 -t 20 RESP < /dev/ttyACM0; echo $RESP)&
[1] 21028

その後、書込み端末の後続の書込みは、読出し端末をトリガして他のものを表示しない。

また、単に印刷してからttyから読み込もうとし、完全に同期書き込みを試みました。

printf 'S0100000FF\x0d' > /dev/ttyACM0
cat -v /dev/ttyACM0
# Blank, nothing in file

私の問題は3つの質問にまとめられています。

  1. それは実際に何を意味するのか^F?私は^Mそれがキャリッジリターン文字であることを知っていますが、このタイプの文字が何であるかわかりません(例:プレフィックス文字^)。
  2. 私はttyが単にファイルであると思いましたが、前の例(互いに印刷して読み取る)でなぜファイルが空ですか?
  3. 同期読み取り/書き込みスクリプトの目的に合わせてリンクされた記事をどのように調整しますか?

関連情報