新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于VC++的數(shù)據(jù)監(jiān)視系統(tǒng)

基于VC++的數(shù)據(jù)監(jiān)視系統(tǒng)

作者: 時間:2012-01-07 來源:網(wǎng)絡(luò) 收藏

引言 目前主要的監(jiān)視系統(tǒng)軟件大多是由組態(tài)軟件或VB實現(xiàn)的。組態(tài)軟件將功能模塊化,對于較小的系統(tǒng)有一些多余的功能是用不上的,導(dǎo)致了資源的浪費。而VB功能有限,運行效率不高。隨著Windows操作系統(tǒng)的普及和其強(qiáng)大的功能,越來越多的程序支持Windows操作系統(tǒng)。由于VC是微軟的產(chǎn)品,用它來編寫Windows程序有強(qiáng)大的程序接口和豐富的開發(fā)資源的支持,加之VC嚴(yán)謹(jǐn)?shù)膬?nèi)存管理,在堆棧上良好的分配處理,生成代碼的體積小,穩(wěn)定性高的優(yōu)點,所以就成為目前程序的主流開發(fā)工具。本文主要介紹如何用編寫監(jiān)控程序,本程序用在基于凌陽單片機(jī)的數(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ù)采集部分采集外界電壓值并將電壓的模擬值轉(zhuǎn)換成數(shù)字值。

無線傳輸模塊負(fù)責(zé)收發(fā)轉(zhuǎn)換后的數(shù)字值。

顯示模塊將數(shù)字值經(jīng)過處理后顯示出測量的電壓值。

數(shù)據(jù)監(jiān)視部分將接收模塊接收到的數(shù)據(jù)經(jīng)過處理后顯示出測量的電壓值。

2 .數(shù)據(jù)監(jiān)視程序的設(shè)計

要實現(xiàn)數(shù)據(jù)監(jiān)視的功能要解決三個問題:

1.上位機(jī)(PC機(jī))如何接收數(shù)據(jù)。

2.接收到數(shù)據(jù)后如何處理使顯示在屏幕上的數(shù)據(jù)更加直觀。

3.由于有測量誤差,如何用軟件的方法減少誤差。

2.1 接收數(shù)據(jù)

在無線接收模塊接收到遠(yuǎn)處的數(shù)據(jù)后將數(shù)據(jù)發(fā)送到上位機(jī)的串口。 6.0提供的MSComm控件通過串行端口發(fā)送和接收數(shù)據(jù),為應(yīng)用程序提供串行通信功能。當(dāng)串口接收緩沖區(qū)中有字符時,可以利用 MSComm 控件的 OnComm 事件捕獲并處理這些數(shù)據(jù)。在編程過程中,可以在OnComm事件處理函數(shù)中加入自己的處理代碼處理得到的數(shù)據(jù)。

2.2 處理數(shù)據(jù)

從串口接收到的數(shù)據(jù)是16位2進(jìn)制碼。直接顯示不直觀,需要將其轉(zhuǎn)化為電壓值。

2.2.1.原始數(shù)據(jù)的格式

因為本系統(tǒng)采集兩路數(shù)據(jù),為了分辨電壓值是哪一路的,我們將16位2進(jìn)制碼的最高位(第15位)設(shè)置為路數(shù)識別位,0代表第一路1代表第二路。第14位到10位數(shù)據(jù)無用為0,第9位到0位為電壓數(shù)據(jù)。結(jié)構(gòu)如圖2所示:

圖2 原始數(shù)據(jù)結(jié)構(gòu)

2.2.2 數(shù)據(jù)的處理

假設(shè)接收的16位數(shù)據(jù)為X

先判斷是哪一路電壓的數(shù)據(jù):若X ≥32768(2進(jìn)制數(shù)1000000000000000對應(yīng)的10進(jìn)制數(shù))說明數(shù)據(jù)來自第2路。將X減去32768得到真實的電壓數(shù)據(jù)Y,再通過公式運算得到測量電壓值:公式為:V=Y*6.6/1024 (此公式是根據(jù)電壓采集模塊而定的這里就不再詳述了)。若X< 32768說明數(shù)據(jù)來自第1路,直接用上述公式得出電壓值V。

2.3 顯示電壓值

程序?qū)陕窋?shù)據(jù)分別顯示在兩個文本框中。如圖3所示:

圖3 程序界面圖

左邊顯示第1路右邊顯示第2路,先收到的數(shù)據(jù)顯示在文本框的最上面后收到的數(shù)據(jù)依次排在下面,點擊“清空”鍵時文本框清空。

2.4 減少誤差

由于電壓采集模塊本身有一定的阻值,電壓測量值總是小于實際的值我們用軟件的方法將2.2.2中得到的Y乘以一個固定的數(shù)(經(jīng)過多次試驗將此數(shù)定為1.023)使測量值于實際值更接近。以下是實驗所得結(jié)果:

第一路A/D轉(zhuǎn)換,如表1所示。

表1 A/D1轉(zhuǎn)換對照表 單位:伏

實際電壓

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轉(zhuǎn)換,如表2所示。

表2 A/D2轉(zhuǎn)換對照表 單位:伏

實際電壓

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.結(jié)束語

本文結(jié)合實際應(yīng)用介紹了基于VC++的監(jiān)視程序的設(shè)計過程。設(shè)計的程序具有接受數(shù)據(jù),顯示數(shù)據(jù),糾正誤差等功能。并且結(jié)構(gòu)簡單,運行效率高,占系統(tǒng)資源少,體現(xiàn)了VC的優(yōu)越性。在誤差矯正的功能上還可以針對A/D轉(zhuǎn)換帶來的誤差設(shè)計一種算法使顯示的電壓值更為精確,這將在下一步的工作中的繼續(xù)研究。

本文作者創(chuàng)新點:不同于大多數(shù)監(jiān)視軟件使用組態(tài)軟件或VB實現(xiàn),本文使用VC++編寫監(jiān)視程序。

參考文獻(xiàn)

1 羅亞非等編著.凌陽16位單片機(jī)應(yīng)用基礎(chǔ).北京:北京航空航天大學(xué)出版社,2005.

2 陳偉,陳法國,王世勛.無線數(shù)據(jù)通信技術(shù)在TPMS中的應(yīng)用.武漢理工大學(xué)報,2005,27 (5):241~244

3 PTR8000.pdf.訊通科技.www.freqchina.com

4 nRF905.pdf.訊通科技.www.freqchina.com

5 丁立波,江小華,張河.基于無線數(shù)字傳輸技術(shù)的數(shù)據(jù)采集系統(tǒng)設(shè)計.無線發(fā)送/接收IC芯片及其數(shù)據(jù)通訊技術(shù)選編(2):168~171

6 施運梅,劉梅彥,楊根興.網(wǎng)絡(luò)資源管理研究[J].微計算機(jī)信息 2006(1);109—11


評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉