6

シリアル ポート (RS232 - USB アダプター - ポート: /dev/ttyUSB0) からデータ ストリームを読み取るには、bash スクリプトが必要です。データは、特定の入力 (「eof」など) が現れるまで、1 行ずつファイルに保存する必要があります。シリアルポートに任意の外部入力を与えることができます。今までは cat を使ってデータを読んでいましたが、うまくいきました。

cat /dev/ttyUSB0 -> file.txt

問題は、cntr+C を入力して自分でコマンドを終了する必要があることですが、データ ストリームがいつ終了し、ttyUSB0 ファイルが EOF を生成しないかが正確にはわかりません。これを自分で実装しようとしましたが、便利な解決策が見つかりませんでした。次のコマンドは機能しますが、問題に使用する方法がわかりません (「world」は「command not found」エラーを作成します)。

#!/bin/bash
cat > file.txt << EOF
hello
EOF
world

次のコードは私の問題に対して機能しますが、時間がかかりすぎます (データ ストリームは約 200 万行で構成されています)。

#!/bin/bash
while read line; do
     if [ "$line" != "EOF" ]; then
          echo "$line" >> file.txt
     else
          break
     fi
done < /dev/ttyUSB0

私の問題に便利な可能性はありますか?

4

1 に答える 1

5

試してくださいawk(1)

awk `
/EOF/ {exit;} 
 {print;}` < /dev/ttyUSB0 > file.txt

これは、行が表示されると停止し、EOF他のすべてを出力しますfile.txt

于 2012-11-15T10:11:59.177 に答える