C# を使用して Windows 用の OBD2 スキャナー アプリを開発しています。シリアルポートからの応答を読み取る前に、車の ecu からの応答を (thread.Sleep() を使用して) 待機する最適な時間を誰かが教えてくれることを期待していました。
Bluetooth アダプターを使用して開発を行っており、ボーレートは 9600 です。現在、待機時間を 100 ミリ秒に設定していますが、可能であればそれよりもはるかに短くしたいと考えています。ポートの準備ができていないときにデータを読み取ろうとする状況に遭遇したくないだけです。スムーズな GUI と快適なエラー マージンとの間で適切なトレードオフを実現したいと考えています。
更新: アイデアに感謝します。DataReceived の処理は一般的な考え方ですが、スレッドをスリープ状態にしているのは、RPM ゲージの更新などを行うために ECU を定期的に繰り返しポーリングする必要があるためです。私は、ECU から圧倒されることなく、できるだけ多くの担当者が得られるスイートスポットを見つけようとしています。ポーリングを 1 回だけ行う場合は、イベントを処理するだけで問題ありませんが、ポーリング間の許容可能な間隔を知る必要があります。コードをイベント駆動型に変更することは間違いありませんが、ポーリング間の適切な時間の長さを知る必要があります。