新聞中心

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

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

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

引言 目前主要的監(jiān)視系統(tǒng)軟件大多是由組態(tài)軟件或VB實(shí)現(xiàn)的。組態(tài)軟件將功能模塊化,對(duì)于較小的系統(tǒng)有一些多余的功能是用不上的,導(dǎo)致了資源的浪費(fèi)。而VB功能有限,運(yùn)行效率不高。隨著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)點(diǎn),所以就成為目前程序的主流開發(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è)計(jì)

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

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ū)中有字符時(shí),可以利用 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ù)的格式

因?yàn)楸鞠到y(tǒng)采集兩路數(shù)據(jù),為了分辨電壓值是哪一路的,我們將16位2進(jìn)制碼的最高位(第15位)設(shè)置為路數(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對(duì)應(yīng)的10進(jìn)制數(shù))說明數(shù)據(jù)來自第2路。將X減去32768得到真實(shí)的電壓數(shù)據(jù)Y,再通過公式運(yùn)算得到測量電壓值:公式為:V=Y*6.6/1024 (此公式是根據(jù)電壓采集模塊而定的這里就不再詳述了)。若X< 32768說明數(shù)據(jù)來自第1路,直接用上述公式得出電壓值V。

2.3 顯示電壓值

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

圖3 程序界面圖

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

2.4 減少誤差

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

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

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

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

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

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

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

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

參考文獻(xiàn)

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

2 陳偉,陳法國,王世勛.無線數(shù)據(jù)通信技術(shù)在TPMS中的應(yīng)用.武漢理工大學(xué)報(bào),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è)計(jì).無線發(fā)送/接收IC芯片及其數(shù)據(jù)通訊技術(shù)選編(2):168~171

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


評(píng)論


相關(guān)推薦

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

關(guān)閉