端末からの tty デバイスバッファフラッシュ

端末からの tty デバイスバッファフラッシュ

シリアルデバイスがあります/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の代わりにシリアルポートデバイスファイルから入力を受け取るように指示します。バッファから複数行の文字を読み取る必要がある場合は、このコマンドをループに入れることができます。

おすすめ記事