2012-05-24 48 views
0

目前,我正在開發一個程序,該程序將通過串行端口同時接收來自激光位移傳感器的測量數據並將生成實時數據。我從來沒有在C#中使用I/O進行廣泛的工作,甚至在圖表控件中處理大型數據集時也更少。使用C#圖表控件進行數據處理

現在我正在使用後臺工作人員從串行端口不斷讀取數據並將其移入數組,並且在從端口讀取每個數字後,後臺工作人員報告會通過進度報告提供新數字。從報告管理員那裏,我在圖表上繪製了這個新點並重新計算了平均值,模式,標準偏差,上限和下限控制限值等。其他一些圖形和視圖端口也使用新數據更新。這應該能夠持續完成。

(對於那些你們誰不知道,林將所有這些信息,只是因爲從這個網站隨機的建議已經在過去的一個很大的幫助)

現在,這裏是我的問題:

我想要將捕獲的數據保存到文本文件中,但不能中斷數據捕獲或繪圖。我最好立即將採樣數據寫入文本文件,並且只將最近的500個點複製到數組中?然後,我可以每隔10分鐘左右開始一個新的文本文件以保持大小有限,然後添加時間和數據捕獲日期以供日後參考。 有沒有辦法將圖表綁定到隊列之類的東西上,然後每次向隊列中添加一個值就會丟棄最老的點?我需要一種方式來處理圖表系列中的點數超過500個樣本的舊點,因爲隨着越來越多的點被添加,它似乎會減慢圖表控件的速度。

這是我第一次使用多線程,所以如果我做了非常錯誤的事情,儘量不要跳下我的喉嚨。

在此先感謝您的所有建議!任何指導將不勝感激。

回答

0

對於您的排隊問題,請查看this thread關於有限大小的隊列。

對於你的日誌記錄的東西,你可以編寫第二個處理程序,運行在低優先級的線程上,記錄事物而不是繪製它們?