シリアルデバイスがあります/dev/ttyAMA0
。デバイスと通信するためにCで書かれたプログラムがあります。ただし、Cプログラムに加えて、次のような構成データを端末から入力する必要がある場合がありますecho xxx >> /dev/ttyAMA0
。問題は、デバイスがこの設定入力(このようなものなどparameter xxx set
)で応答しますが読み取らないことです。必要)この応答を受信するので、シリアルポートバッファにバッファリングされます。 Cプログラムからデータを読み取る必要がありますが、応答がすでにバッファリングされていて気にしないため、Cプログラムに問題が発生します。
だから私の質問です。端末からデバイスのバッファをどのようにフラッシュしますか? Cでこれを行うことができることを知っていますが、tcflush(sfd, TCIOFLUSH);
端末で行う必要があります。
ベストアンサー1
私はこの答えが数年遅れていることを知っています...しかし、次のコマンドはbashで動作するはずです:
read garbage </dev/ttyAMA0
この行は、bash組み込みの「read」コマンドを使用してシリアル受信バッファからASCII文字行を読み取り、それを「garbage」という変数に格納します。 "<"リダイレクト演算子は、"read"にデフォルトのstdinの代わりにシリアルポートデバイスファイルから入力を受け取るように指示します。バッファから複数行の文字を読み取る必要がある場合は、このコマンドをループに入れることができます。