C#でストリーミングデータをグラフ化する方法
-
06-07-2019 - |
質問
ストリーミングデータ(9600ボー)をグラフ化する必要があります。これは、シリアルポートから2〜4バイトのパケットで受信されます。グラフ化する前にパケットを処理する必要があります。現在、完全なパケットごとにイベントを発生させているため、グラフ作成フォームで応答性の問題が発生しています。
この問題の最善の解決策はどれですか:
- 一定の間隔(500ミリ秒)でイベントのデータをバッファリングし、バッファリングされたデータを生成します
- バッファを構築し、インスタンス化するオブジェクトに、ポーリングされたときにバッファされたデータ/空のバッファをポーリングさせます
- その他(?)
解決
間違いなく更新レートを制限します。そのようなアプリケーションでは、通常300msごとに1つで十分です。
それに基づいて、適切な実装は、シリアルポートを読み取り、バッファに追加するワーカースレッドになります。 UIスレッドはタイマーを使用してデータを照会し、表示を更新できます。
個別のスレッドを使用すると、ワーカースレッドはより高い優先度で実行できるため、負荷の急上昇により表示の更新が遅れることがありますが、データは失われません。
もう1つのトリックは、固定タイマーを使用せず、更新が完了した後にタイマーを再起動することです。したがって、更新にかなりの時間がかかる場合システムの負荷が高いため、更新の速度が低下し、負荷が効果的に削減されます。
所属していません StackOverflow