Bluetooth経由でデータをストリーミングするDAQからデータを読み取るアプリケーションを開発中です。パケット サイズは、サンプリング レート (1Hz ~ 512Hz) と同様に変化する可能性があり、バッファを使用してデバイスからデータをループして読み取ることができます。
私の質問は、パケット サイズとサンプリング レートの変数が存在する場合、データを正しく処理するにはどうすればよいですか? バッファ サイズを決定するにはどうすればよいですか?
現在、私は単純にソケットを開き、入力ストリームを開き、while ループ (ソケットが開いている間 == true) を使用してストリームから読み取り、データを処理しています (余分なタスクではなく単純なデコード)。
例として、パケットには 23 バイトがあり、現時点ではサンプリング レートが 1Hz と非常に低いです。私は 256 バイトのバッファを持っています。つまり、バッファの最後に完全なパケットを収容することはできず、次のバッファに実行するためのコードを書きました。データが読み取られたら、バッファから 1 つのパケットを取得し、それをデコードして保存し、次のパケットを実行します。
どのようにストリーミングし、データを正しく操作する必要がありますか? 最終的には、512Hz で 44 パケットの領域で、Bluetooth の転送制限で何かを取得することになり、可能な限り効果的に処理し、パケットがプロセスでドロップされたときにエラーを表示できるようにしたいと考えています。
TL;DR: バッファや割り込みを使用してデータを正しくストリーミングするにはどうすればよいですか。