0

C# を使用して Windows 用の OBD2 スキャナー アプリを開発しています。シリアルポートからの応答を読み取る前に、車の ecu からの応答を (thread.Sleep() を使用して) 待機する最適な時間を誰かが教えてくれることを期待していました。

Bluetooth アダプターを使用して開発を行っており、ボーレートは 9600 です。現在、待機時間を 100 ミリ秒に設定していますが、可能であればそれよりもはるかに短くしたいと考えています。ポートの準備ができていないときにデータを読み取ろうとする状況に遭遇したくないだけです。スムーズな GUI と快適なエラー マージンとの間で適切なトレードオフを実現したいと考えています。

更新: アイデアに感謝します。DataReceived の処理は一般的な考え方ですが、スレッドをスリープ状態にしているのは、RPM ゲージの更新などを行うために ECU を定期的に繰り返しポーリングする必要があるためです。私は、ECU から圧倒されることなく、できるだけ多くの担当者が得られるスイートスポットを見つけようとしています。ポーリングを 1 回だけ行う場合は、イベントを処理するだけで問題ありませんが、ポーリング間の許容可能な間隔を知る必要があります。コードをイベント駆動型に変更することは間違いありませんが、ポーリング間の適切な時間の長さを知る必要があります。

4

2 に答える 2

0

車に内蔵されているトリップ コンピューターに従って、1000 ミリ秒ごとに値を更新することにしました。より正確には、100 ミリ秒、200 ミリ秒、300 ミリ秒などで 1 つずつ、1 秒あたり 10 個の値を更新することにしました。

また、即時消費、RPM、いくつかの特殊なセンサーなど、より頻繁に変化するものを優先しました. バッテリー電圧、温度、燃料レベルなどは、現実的にはそれぞれ 5、10、20 秒ごとにポーリングする必要があるだけなので、優先順位を付ける余地がたくさんあります。

于 2013-07-12T07:24:37.693 に答える