2011-02-10 12 views
4

私は、リアルタイムでc#とwindows mobile 5を使用してBluetoothシリアルポート経由で収集されているPDAにデータをプロットしようとしています。 。私は働いていた点の配列から線を引くことを試みましたが、本当に表示されたデータの個別の塊だけを表示しました。私はこのフォーラムでECGデータを参照して同様の解決策を見つけましたが、これもうまくいきましたが、もう一度データの量が示されてから非常に目に見えてリフレッシュされました。私は、ビットマップ上にポイントを描画し、ビットマップをスムーズにするためにペイントしてみましたが、もう一度十分高速ではありません。リアルタイムプロットC#

私が最後にしたいのは、WindowsタスクマネージャのCPU使用履歴グラフのように動作するものです。データポイントは、プロットの右側で開始し、スムーズに左に移動します。このような問題に対する標準的なアプローチはありますか?質問が少し曖昧な場合はお詫び申し上げますが、よく知られている一般的な解決策に問題がある場合は、さまざまなことを試してみたいと思っています。

答えて

1

どのように視覚的に動作するかによって異なります。タスクマネージャのCPU使用率は、グラフ全体を右から左にスクロールしますが、スムーズではありません。それは(私にとってはとにかく)約1秒ごとにリフレッシュし、リフレッシュすると、チャート全体が横に跳ね返ります。

1.0日後にCFで何かをしましたが、グラフを静的にしてデータ線を左から右に連続して描画し、右端に達したら描画を開始しました再び左に戻り、(ECGのように)進行するにつれて最も古いチャートデータを消去します。

このシナリオでは、ビットマップはほとんど変更されないため、全体を再描画しないでください。私は、基本的には縦の帯や四角形のグラフの高さで、例えば10pxの幅のクリッピング領域を使ってこれを行いました。そのバンドを更新された軸の値でリライトし、実際に再描画される唯一のビットがその小さなバンドであるようにします。また、チャートの最初に戻ったときに一番古いデータを「消去」するという追加の利点もありました。

+0

+1。私は、ECGスタイルのリフレッシュが周期的な信号に適していると思います。 – Niki

+0

遅いプロセッサーとグラフィックアクセラレーションがないハードウェアでは、よりスムーズに描画されます。 – ctacke

+0

そのおかげでありがたいことに感謝してくれた – Bowler