基于VC++的數據監視系統
引言: 目前主要的監視系統軟件大多是由組態(tài)軟件或VB實(shí)現的。組態(tài)軟件將功能模塊化,對于較小的系統有一些多余的功能是用不上的,導致了資源的浪費。而VB功能有限,運行效率不高。隨著(zhù)Windows操作系統的普及和其強大的功能,越來(lái)越多的程序支持Windows操作系統。由于VC是微軟的產(chǎn)品,用它來(lái)編寫(xiě)Windows程序有強大的程序接口和豐富的開(kāi)發(fā)資源的支持,加之VC嚴謹的內存管理,在堆棧上良好的分配處理,生成代碼的體積小,穩定性高的優(yōu)點(diǎn),所以VC++就成為目前程序的主流開(kāi)發(fā)工具。本文主要介紹如何用VC++編寫(xiě)監控程序,本程序用在基于凌陽(yáng)單片機SPCE061A的數據采集及無(wú)線(xiàn)傳輸系統中監視現場(chǎng)采集的數據。
1 .系統筐架及各部分的功能
本系統分兩大部分:數據采集及發(fā)送部分,數據接收部分。如圖1所示:
圖1 系統框圖
其中:數據采集部分采集外界電壓值并將電壓的模擬值轉換成數字值。
無(wú)線(xiàn)傳輸模塊負責收發(fā)轉換后的數字值。
顯示模塊將數字值經(jīng)過(guò)處理后顯示出測量的電壓值。
數據監視部分將接收模塊接收到的數據經(jīng)過(guò)處理后顯示出測量的電壓值。
2 .數據監視程序的設計
要實(shí)現數據監視的功能要解決三個(gè)問(wèn)題:
1.上位機(PC機)如何接收數據。
2.接收到數據后如何處理使顯示在屏幕上的數據更加直觀(guān)。
3.由于有測量誤差,如何用軟件的方法減少誤差。
2.1 接收數據
在無(wú)線(xiàn)接收模塊接收到遠處的數據后將數據發(fā)送到上位機的串口。VC++ 6.0提供的MSComm控件通過(guò)串行端口發(fā)送和接收數據,為應用程序提供串行通信功能。當串口接收緩沖區中有字符時(shí),可以利用 MSComm 控件的 OnComm 事件捕獲并處理這些數據。在編程過(guò)程中,可以在OnComm事件處理函數中加入自己的處理代碼處理得到的數據。
2.2 處理數據
從串口接收到的數據是16位2進(jìn)制碼。直接顯示不直觀(guān),需要將其轉化為電壓值。
2.2.1.原始數據的格式
因為本系統采集兩路數據,為了分辨電壓值是哪一路的,我們將16位2進(jìn)制碼的最高位(第15位)設置為路數識別位,0代表第一路1代表第二路。第14位到10位數據無(wú)用為0,第9位到0位為電壓數據。結構如圖2所示:

2.2.2 數據的處理
假設接收的16位數據為X
先判斷是哪一路電壓的數據:若X ≥32768(2進(jìn)制數1000000000000000對應的10進(jìn)制數)說(shuō)明數據來(lái)自第2路。將X減去32768得到真實(shí)的電壓數據Y,再通過(guò)公式運算得到測量電壓值:公式為:V=Y*6.6/1024 (此公式是根據電壓采集模塊而定的這里就不再詳述了)。若X< 32768說(shuō)明數據來(lái)自第1路,直接用上述公式得出電壓值V。
2.3 顯示電壓值
程序將兩路數據分別顯示在兩個(gè)文本框中。如圖3所示:
圖3 程序界面圖
左邊顯示第1路右邊顯示第2路,先收到的數據顯示在文本框的最上面后收到的數據依次排在下面,點(diǎn)擊“清空”鍵時(shí)文本框清空。
2.4 減少誤差
由于電壓采集模塊本身有一定的阻值,電壓測量值總是小于實(shí)際的值我們用軟件的方法將2.2.2中得到的Y乘以一個(gè)固定的數(經(jīng)過(guò)多次試驗將此數定為1.023)使測量值于實(shí)際值更接近。以下是實(shí)驗所得結果:
第一路A/D轉換,如表1所示。
表1 A/D1轉換對照表 單位:伏
實(shí)際電壓 | 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轉換對照表 單位:伏
實(shí)際電壓 | 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.結束語(yǔ)
本文結合實(shí)際應用介紹了基于VC++的監視程序的設計過(guò)程。設計的程序具有接受數據,顯示數據,糾正誤差等功能。并且結構簡(jiǎn)單,運行效率高,占系統資源少,體現了VC的優(yōu)越性。在誤差矯正的功能上還可以針對A/D轉換帶來(lái)的誤差設計一種算法使顯示的電壓值更為精確,這將在下一步的工作中的繼續研究。
本文作者創(chuàng )新點(diǎn):不同于大多數監視軟件使用組態(tài)軟件或VB實(shí)現,本文使用VC++編寫(xiě)監視程序。
參考文獻:
1 羅亞非等編著(zhù).凌陽(yáng)16位單片機應用基礎.北京:北京航空航天大學(xué)出版社,2005.
2 陳偉,陳法國,王世勛.無(wú)線(xiàn)數據通信技術(shù)在TPMS中的應用.武漢理工大學(xué)報,2005,27 (5):241~244
3 PTR8000.pdf.訊通科技.www.freqchina.com
4 nRF905.pdf.訊通科技.www.freqchina.com
5 丁立波,江小華,張河.基于無(wú)線(xiàn)數字傳輸技術(shù)的數據采集系統設計.無(wú)線(xiàn)發(fā)送/接收IC芯片及其數據通訊技術(shù)選編(2):168~171
6 施運梅,劉梅彥,楊根興.網(wǎng)絡(luò )資源管理研究[J].微計算機信息 2006(1);109—11
評論