2009-06-21 9 views
2

シリアルポートから2〜4バイトのパケットが入ってくるストリーミングデータ(9600ボー)をグラフ化する必要があります。パケットをグラフ化する前に処理する必要があります。現在、完全なパケットごとにイベントを発生させています。グラフ化フォームに応答性の問題が生じています。C#でストリーミングデータをグラフ化する方法

この問題に最適なソリューションです:

  • バッファデータと一定間隔でイベントにバッファされたデータを上げる(すなわち500ミリ秒)
  • ビルド・バッファと空のバッファされたデータ/のためのオブジェクトの世論調査をインスタンス化してみましょう
  • 他に(?)

答えて

5

をポーリングする際のバッファ私は間違いなく更新レートを制限します。そのようなアプリケーションでは、通常300msごとに1つあれば十分です。

それに基づいて、良い実装は、シリアルポートを読み取りバッファに追加するワーカースレッドです。 UIスレッドは、タイマーを使用してデータを照会し、ディスプレイを更新することができます。

独立したスレッドを使用すると、ワーカースレッドはより高い優先度で実行できるため、負荷の急上昇により表示の更新が遅れることがありますが、データは失われません。

もう1つのトリックは、固定タイマーを使用するのではなく、更新が完了した後にタイマーを再起動することです。従って、更新にかなりの時間がかかる場合、例えば、システムの負荷が高いため、アップデートが遅くなり、負荷が効果的に軽減されます。

+0

感謝のように働いた! – cabgef

関連する問題