私はシリアルを介して外部デバイスからデータを受信するARMベースのコンピュータを実行しています。外部デバイスは、データバーストとアイドル状態(25バイト、3ミリ秒アイドル、25バイト、3ミリ秒アイドルなど)を交互に示します。ただし、パケットの途中で1バイトを破棄して24バイトのみを出力することがよくあります。いくつかの不一致があるため、回線がアイドル状態であることを検出して、次のパケットの先頭を処理していることを確実にする方法を見つけようとしています。
パケットは開始および停止バイト0xF0および0x00を使用しますが、一意ではありません。 0xF0または0x00は、特別な処理なしにパケットの途中でデータとして到着することがあります。私は3msのアイドル時間と開始バイトを検出することが新しいパケットの到着を決定する唯一の方法だと思います。
Linuxでアイドル回線を検出し、この方法で新しいパケットの先頭に同期する方法はありますか?私は主にシリアルポートでopen()とread()を使用してCでコーディングしましたが、シェルスクリプトも機能します。