新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于VC++的數據監視系統

        基于VC++的數據監視系統

        作者: 時間:2012-01-07 來源:網絡 收藏

        引言 目前主要的監視系統軟件大多是由組態軟件或VB實現的。組態軟件將功能模塊化,對于較小的系統有一些多余的功能是用不上的,導致了資源的浪費。而VB功能有限,運行效率不高。隨著Windows操作系統的普及和其強大的功能,越來越多的程序支持Windows操作系統。由于VC是微軟的產品,用它來編寫Windows程序有強大的程序接口和豐富的開發資源的支持,加之VC嚴謹的內存管理,在堆棧上良好的分配處理,生成代碼的體積小,穩定性高的優點,所以就成為目前程序的主流開發工具。本文主要介紹如何用編寫監控程序,本程序用在基于凌陽單片機的數據采集及無線傳輸系統中監視現場采集的數據。

        1 .系統筐架及各部分的功能

        本系統分兩大部分:數據采集及發送部分,數據接收部分。如圖1所示:

        圖1 系統框圖

        其中:數據采集部分采集外界電壓值并將電壓的模擬值轉換成數字值。

        無線傳輸模塊負責收發轉換后的數字值。

        顯示模塊將數字值經過處理后顯示出測量的電壓值。

        數據監視部分將接收模塊接收到的數據經過處理后顯示出測量的電壓值。

        2 .數據監視程序的設計

        要實現數據監視的功能要解決三個問題:

        1.上位機(PC機)如何接收數據。

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

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

        2.1 接收數據

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

        2.2 處理數據

        從串口接收到的數據是16位2進制碼。直接顯示不直觀,需要將其轉化為電壓值。

        2.2.1.原始數據的格式

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

        圖2 原始數據結構

        2.2.2 數據的處理

        假設接收的16位數據為X

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

        2.3 顯示電壓值

        程序將兩路數據分別顯示在兩個文本框中。如圖3所示:

        圖3 程序界面圖

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

        2.4 減少誤差

        由于電壓采集模塊本身有一定的阻值,電壓測量值總是小于實際的值我們用軟件的方法將2.2.2中得到的Y乘以一個固定的數(經過多次試驗將此數定為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++的監視程序的設計過程。設計的程序具有接受數據,顯示數據,糾正誤差等功能。并且結構簡單,運行效率高,占系統資源少,體現了VC的優越性。在誤差矯正的功能上還可以針對A/D轉換帶來的誤差設計一種算法使顯示的電壓值更為精確,這將在下一步的工作中的繼續研究。

        本文作者創新點:不同于大多數監視軟件使用組態軟件或VB實現,本文使用VC++編寫監視程序。

        參考文獻

        1 羅亞非等編著.凌陽16位單片機應用基礎.北京:北京航空航天大學出版社,2005.

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

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

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

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

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


        關鍵詞: SPCE061A VC++ 遠程監視

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 安塞县| 富蕴县| 托里县| 仪陇县| 隆德县| 深圳市| 青冈县| 云浮市| 广丰县| 烟台市| 田东县| 赤峰市| 东丽区| 西华县| 莱阳市| 江津市| 津市市| 南陵县| 海门市| 荃湾区| 边坝县| 钦州市| 梅河口市| 石家庄市| 祁连县| 内黄县| 且末县| 革吉县| 长春市| 邛崃市| 武强县| 岑溪市| 岳普湖县| 南乐县| 古蔺县| 深水埗区| 闵行区| 兴化市| 多伦县| 普陀区| 大洼县|