監測項目採用16個傳感器,採樣頻率50hz,採用oracle數據庫,結構簡單:record_time + sensor_data。通過數據庫高頻數據實時曲線顯示,可行嗎?
Create Table real_data(
record_time timestamp(3),
ac_1 Float,
ac_2 Float,
ac_3 Float,
ac_4 Float,
ac_5 Float,
ac_6 Float,
ac_7 Float,
ac_8 Float,
ac_9 Float,
ac_10 Float,
ac_11 Float,
ac_12 Float,
ac_13 Float,
ac_14 Float,
ac_15 Float,
ac_16 Float
)
Tablespace data_test;
我使用livecharts WPF控件讀取數據庫,顯示實時曲線。
要求:20ms顯示數據,曲線左移,不顯示暫停。
現在兩種方法來讀取數據庫:
常規刷新
Timer = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(1000) };
的問題是,1秒的間隔,閱讀最新1秒數據數據庫(約50個數據),曲線有一個暫停(每1秒左移一次);轉移到20ms刷新,讀取最新的數據並插入曲線後,多次讀取相同的數據,因爲數據庫查詢時間在100ms左右(選擇頂部),導致很多直線曲線,不符合實際的變化趨勢。
- 使用線程,具體來說是一個線程讀取數據庫,選擇啓動時間,有偶爾暫停,分析的原因:讀取數據的時間一般20ms,偶爾300ms,因爲數據庫裏有頻繁的插入和刪除,而操作系統的內存也是實時變化的,會影響讀取的速度。時間越長,曲線延遲越嚴重。
無論是高頻數據顯示,通過數據庫讀取的方式都不可行?只有通過直接讀取設備API可行?
謝謝!
你真的需要提高你的提問技巧。閱讀是可怕的。如果您不是以英語爲母語的人,請隨意使用圖片來幫助您瞭解您的觀點。 –