基于VC++的數(shù)據(jù)監(jiān)視系統(tǒng)
引言: 目前主要的監(jiān)視系統(tǒng)軟件大多是由組態(tài)軟件或VB實現(xiàn)的。組態(tài)軟件將功能模塊化,對于較小的系統(tǒng)有一些多余的功能是用不上的,導致了資源的浪費。而VB功能有限,運行效率不高。隨著Windows操作系統(tǒng)的普及和其強大的功能,越來越多的程序支持Windows操作系統(tǒng)。由于VC是微軟的產品,用它來編寫Windows程序有強大的程序接口和豐富的開發(fā)資源的支持,加之VC嚴謹?shù)膬却婀芾?,在堆棧上良好的分配處理,生成代碼的體積小,穩(wěn)定性高的優(yōu)點,所以VC++就成為目前程序的主流開發(fā)工具。本文主要介紹如何用VC++編寫監(jiān)控程序,本程序用在基于凌陽單片機SPCE061A的數(shù)據(jù)采集及無線傳輸系統(tǒng)中監(jiān)視現(xiàn)場采集的數(shù)據(jù)。
1 .系統(tǒng)筐架及各部分的功能
本系統(tǒng)分兩大部分:數(shù)據(jù)采集及發(fā)送部分,數(shù)據(jù)接收部分。如圖1所示:
圖1 系統(tǒng)框圖
其中:數(shù)據(jù)采集部分采集外界電壓值并將電壓的模擬值轉換成數(shù)字值。
無線傳輸模塊負責收發(fā)轉換后的數(shù)字值。
顯示模塊將數(shù)字值經過處理后顯示出測量的電壓值。
數(shù)據(jù)監(jiān)視部分將接收模塊接收到的數(shù)據(jù)經過處理后顯示出測量的電壓值。
2 .數(shù)據(jù)監(jiān)視程序的設計
要實現(xiàn)數(shù)據(jù)監(jiān)視的功能要解決三個問題:
1.上位機(PC機)如何接收數(shù)據(jù)。
2.接收到數(shù)據(jù)后如何處理使顯示在屏幕上的數(shù)據(jù)更加直觀。
3.由于有測量誤差,如何用軟件的方法減少誤差。
2.1 接收數(shù)據(jù)
在無線接收模塊接收到遠處的數(shù)據(jù)后將數(shù)據(jù)發(fā)送到上位機的串口。VC++ 6.0提供的MSComm控件通過串行端口發(fā)送和接收數(shù)據(jù),為應用程序提供串行通信功能。當串口接收緩沖區(qū)中有字符時,可以利用 MSComm 控件的 OnComm 事件捕獲并處理這些數(shù)據(jù)。在編程過程中,可以在OnComm事件處理函數(shù)中加入自己的處理代碼處理得到的數(shù)據(jù)。
2.2 處理數(shù)據(jù)
從串口接收到的數(shù)據(jù)是16位2進制碼。直接顯示不直觀,需要將其轉化為電壓值。
2.2.1.原始數(shù)據(jù)的格式
因為本系統(tǒng)采集兩路數(shù)據(jù),為了分辨電壓值是哪一路的,我們將16位2進制碼的最高位(第15位)設置為路數(shù)識別位,0代表第一路1代表第二路。第14位到10位數(shù)據(jù)無用為0,第9位到0位為電壓數(shù)據(jù)。結構如圖2所示:
2.2.2 數(shù)據(jù)的處理
假設接收的16位數(shù)據(jù)為X
先判斷是哪一路電壓的數(shù)據(jù):若X ≥32768(2進制數(shù)1000000000000000對應的10進制數(shù))說明數(shù)據(jù)來自第2路。將X減去32768得到真實的電壓數(shù)據(jù)Y,再通過公式運算得到測量電壓值:公式為:V=Y*6.6/1024 (此公式是根據(jù)電壓采集模塊而定的這里就不再詳述了)。若X< 32768說明數(shù)據(jù)來自第1路,直接用上述公式得出電壓值V。
2.3 顯示電壓值
程序將兩路數(shù)據(jù)分別顯示在兩個文本框中。如圖3所示:
圖3 程序界面圖
左邊顯示第1路右邊顯示第2路,先收到的數(shù)據(jù)顯示在文本框的最上面后收到的數(shù)據(jù)依次排在下面,點擊“清空”鍵時文本框清空。
2.4 減少誤差
由于電壓采集模塊本身有一定的阻值,電壓測量值總是小于實際的值我們用軟件的方法將2.2.2中得到的Y乘以一個固定的數(shù)(經過多次試驗將此數(shù)定為1.023)使測量值于實際值更接近。以下是實驗所得結果:
第一路A/D轉換,如表1所示。
表1 A/D1轉換對照表 單位:伏
實際電壓 | 4.902 | 4.466 | 3.970 | 3.570 | 2.996 | 2.462 | 1.994 | 1.550 | 1.042 |
顯示電壓 | 4.9 | 4.5 | 4.0 | 3.5 | 3.0 | 2.5 | 2.0 | 1.5 | 1.0 |
接收電壓 | 4.90 | 4.46 | 3.96 | 3.51 | 3.00 | 2.46 | 1.99 | 1.50 | 1.03 |
第二路A/D轉換,如表2所示。
表2 A/D2轉換對照表 單位:伏
實際電壓 | 4.982 | 4.472 | 4.040 | 3.464 | 2.992 | 2.504 | 1.990 | 1.538 | 0.996 |
顯示電壓 | 5.0 | 4.5 | 4.0 | 3.5 | 3.0 | 2.5 | 2.0 | 1.5 | 1.0 |
接收電壓 | 4.98 | 4.47 | 4.03 | 3.47 | 2.99 | 2.50 | 1.98 | 1.53 | 0.99 |
2.5 程序框圖
如圖4所示
圖4 程序框圖
3.結束語
本文結合實際應用介紹了基于VC++的監(jiān)視程序的設計過程。設計的程序具有接受數(shù)據(jù),顯示數(shù)據(jù),糾正誤差等功能。并且結構簡單,運行效率高,占系統(tǒng)資源少,體現(xiàn)了VC的優(yōu)越性。在誤差矯正的功能上還可以針對A/D轉換帶來的誤差設計一種算法使顯示的電壓值更為精確,這將在下一步的工作中的繼續(xù)研究。
本文作者創(chuàng)新點:不同于大多數(shù)監(jiān)視軟件使用組態(tài)軟件或VB實現(xiàn),本文使用VC++編寫監(jiān)視程序。
參考文獻:
1 羅亞非等編著.凌陽16位單片機應用基礎.北京:北京航空航天大學出版社,2005.
2 陳偉,陳法國,王世勛.無線數(shù)據(jù)通信技術在TPMS中的應用.武漢理工大學報,2005,27 (5):241~244
3 PTR8000.pdf.訊通科技.www.freqchina.com
4 nRF905.pdf.訊通科技.www.freqchina.com
5 丁立波,江小華,張河.基于無線數(shù)字傳輸技術的數(shù)據(jù)采集系統(tǒng)設計.無線發(fā)送/接收IC芯片及其數(shù)據(jù)通訊技術選編(2):168~171
6 施運梅,劉梅彥,楊根興.網絡資源管理研究[J].微計算機信息 2006(1);109—11
評論