私はarduinoからrxtxライブラリーを使用してjavaプログラムにシリアル経由でセンサーデータを送信しています。問題は、新しい値がBufferedReaderに非常に高速にプッシュされ、リアルタイムでこれらを処理できないということです。イベントベースの実装から100ミリ秒ごとにポーリングに移行し、その間のすべての値を破棄したいと考えました。バッファ付きリーダーでデータを廃棄する
スキップする必要があるバイト数を正確に把握せずにバッファードリーダーをクリアする可能性はありますか?バッファが準備されている間にRead Lineを呼び出すwhileループは非常に面倒であるように見えますが、十分高速であるかどうかはわかりません。
値を読み取ってバッファリングされたリーダーをクリアし、100ミリ秒待ってからもう一度古い値を読み取っても問題ありません。もう一つの可能性は、arduinoがデータを送信する速度を制限することですが、これは私がより高速に依存する可能性があるので、これが私の最も気に入っていないアプローチです。
コンピュータに問題はありません。 arduino IDEのシリアルモニタはうまく動作しますが、これらの値をJavaに送ることは問題の始まりです。私は今日後で家に帰ると、whileループソリューションを試してみましょう。私は、私が考えなかったより良い解決策がなければならないと考えました。 – John
ありがとうございます。 whileループは問題を解決しました。リスナーがボトルネックを起こしたイベントに頼っているようです。 – John