0

現在、シリアルポートを介してレーザー変位センサーから測定データを同時に取り込み、データをライブでグラフ化するプログラムに取り組んでいます。私は、C# の I/O でこれを広範囲に使用したことはありません。チャート コントロールで大きなデータ セットを処理する場合はさらに少なくなります。

現在、バックグラウンドワーカーを使用してシリアルポートからデータを継続的に読み取り、それをアレイに移動しています。ポートから各番号が読み取られた後、バックグラウンドワーカーは進行状況レポートを通じて利用可能な新しい番号があることを報告します。レポート ハンドラーから、この新しい点をチャートにプロットし、平均値、最頻値、標準偏差、管理限界の上限と下限などを再計算します。他のいくつかのグラフとビュー ポートも新しいデータで更新されます。これは、継続的に実行できる必要があります。

(疑問に思っている方のために、このサイトからのランダムな提案が過去に大きな助けになったという理由だけで、この情報をすべて書き留めておきます)

ここに私の質問があります:

キャプチャしたデータをテキスト ファイルに保存したいのですが、データのキャプチャやプロットを中断して保存することができません。サンプリングしたデータをすぐにテキスト ファイルに書き込み、最新の 500 ポイントのみを配列にコピーした方がよいでしょうか? その後、約 10 分ごとに新しいテキスト ファイルを開始してサイズを制限し、後で参照できるようにデータ キャプチャの日時を追加します。チャートをキューのようなものにバインドする方法はありますか?キューに値を追加するたびに、最も古いポイントが破棄されますか? ポイントが追加されるにつれてチャート コントロールの速度が低下するように見えるため、500 サンプルよりも古いチャート シリーズのポイントを処分する方法が必要です。

これはマルチスレッドでの私の最初のショットなので、何かひどく間違ったことをしたとしても、喉を飛び越えないように最善を尽くしてください。

ご提案いただきありがとうございます。任意のガイダンスをいただければ幸いです。

4

1 に答える 1

0

キューの問題については、制限されたサイズのキューに関するこのスレッドを参照してください。

ロギングについて、優先順位の低いスレッドで実行され、グラフ化するのではなくログに記録する 2 番目のハンドラーを作成していただけますか?

于 2012-05-24T03:31:18.200 に答える