文小玲,鄒艷華,周 洵
武漢工程大學(xué)電氣信息學(xué)院,湖北武漢 430205
隨著農(nóng)業(yè)信息技術(shù)的快速發(fā)展和廣泛應(yīng)用,農(nóng)業(yè)生產(chǎn)正逐步由傳統(tǒng)農(nóng)業(yè)向信息化、自動(dòng)化、智能化農(nóng)業(yè)的方向發(fā)展.我國(guó)農(nóng)業(yè)生產(chǎn)因基礎(chǔ)薄弱、生產(chǎn)技術(shù)落后而導(dǎo)致農(nóng)業(yè)生產(chǎn)成本高、產(chǎn)量增長(zhǎng)緩慢、生產(chǎn)效益低下、農(nóng)業(yè)不能得到很好的發(fā)展等諸多問(wèn)題.搭建農(nóng)業(yè)生產(chǎn)環(huán)境信息監(jiān)測(cè)系統(tǒng),對(duì)農(nóng)業(yè)生產(chǎn)環(huán)境進(jìn)行遠(yuǎn)程實(shí)時(shí)準(zhǔn)確的監(jiān)測(cè),從而實(shí)現(xiàn)農(nóng)業(yè)生產(chǎn)的信息化管理,可有效降低農(nóng)業(yè)生產(chǎn)運(yùn)行成本,提高生產(chǎn)效率以及農(nóng)作物的生產(chǎn)質(zhì)量和產(chǎn)量.國(guó)內(nèi)外已有較多對(duì)農(nóng)業(yè)生產(chǎn)信息進(jìn)行實(shí)時(shí)自動(dòng)監(jiān)測(cè)的設(shè)備,如基于.NET的農(nóng)業(yè)生產(chǎn)環(huán)境信息監(jiān)測(cè)系統(tǒng)、基于組態(tài)平臺(tái)的日光溫室群監(jiān)控系統(tǒng)等[1-4]..NET是一個(gè)微軟開(kāi)發(fā)平臺(tái),它集成了微軟VC++、VB、VC#等語(yǔ)言開(kāi)發(fā)環(huán)境,但是實(shí)際上它對(duì)C#語(yǔ)言的支持是最好的,與C++語(yǔ)言相比較,C#語(yǔ)言具有強(qiáng)大的網(wǎng)絡(luò)操作,但在Windows環(huán)境下編程,采用C++開(kāi)發(fā)應(yīng)用程序調(diào)用win32 API函數(shù)比C#方便很多;組態(tài)軟件是包含了很多程序模塊的軟件系統(tǒng),用組態(tài)軟件開(kāi)發(fā)程序周期較短,但組態(tài)軟件的模塊大多也是用VC++來(lái)編寫的,與VC++開(kāi)發(fā)應(yīng)用程序相比較,其靈活性較差.
在眾多的可視化集成開(kāi)發(fā)環(huán)境中,用C++語(yǔ)言編寫Windows應(yīng)用程序,Visual C++6.0是最佳選擇,它功能強(qiáng)大,具有靈活的消息傳遞機(jī)制和友好的編程界面,它提供的微軟基礎(chǔ)類庫(kù)(Microsoft Foundation Classes,以下簡(jiǎn)稱:MFC)內(nèi)部封裝了Windows API函數(shù),用戶可以充分利用類的封裝性、繼承性和多態(tài)性,方便地設(shè)計(jì)所需要的類.另外,它提供了數(shù)據(jù)庫(kù)的開(kāi)發(fā)平臺(tái),對(duì)硬件、內(nèi)存的操作也較容易,是底層編程環(huán)境的最佳選擇;MySQL是源碼開(kāi)放的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)[5],因其體積小、速度快、可靠性高和適應(yīng)性強(qiáng)而備受關(guān)注,而且由于其是開(kāi)放源碼軟件,可以大大降低總體開(kāi)發(fā)成本.因此,本文在VC++環(huán)境下,應(yīng)用開(kāi)發(fā)工具提供的MFC類庫(kù)、微軟通信控制(Microsoft Communications Control,以下簡(jiǎn)稱:MSComm)軟件,結(jié)合MySQL數(shù)據(jù)庫(kù)技術(shù)開(kāi)發(fā)基于串行通信的上位機(jī)監(jiān)測(cè)系統(tǒng).該系統(tǒng)實(shí)現(xiàn)了農(nóng)業(yè)生產(chǎn)環(huán)境多元信息的規(guī)范化、信息化、智能化實(shí)時(shí)遠(yuǎn)程監(jiān)測(cè)與管理,有利于提高農(nóng)業(yè)生產(chǎn)效率,降低生產(chǎn)成本.同時(shí),系統(tǒng)將監(jiān)測(cè)數(shù)據(jù)及時(shí)、規(guī)范地存儲(chǔ)到數(shù)據(jù)庫(kù)中,為農(nóng)業(yè)生產(chǎn)科學(xué)管理提供充分、可靠的科學(xué)依據(jù).
本系統(tǒng)采用 客戶機(jī)/服務(wù)器(Client/Server,以下簡(jiǎn)稱:C/S)模型,實(shí)現(xiàn)對(duì)大面積農(nóng)業(yè)生產(chǎn)環(huán)境信息的遠(yuǎn)程集中監(jiān)測(cè)和農(nóng)戶管理人員的異步查詢.整個(gè)系統(tǒng)主要包括遠(yuǎn)程監(jiān)測(cè)終端、通信鏈路和數(shù)據(jù)采集終端3部分.系統(tǒng)原理框圖如圖1所示.
圖1 系統(tǒng)結(jié)構(gòu)框圖Fig.1 Diagram of system structure
遠(yuǎn)程監(jiān)測(cè)終端包括內(nèi)部運(yùn)行了上位機(jī)監(jiān)測(cè)程序和存儲(chǔ)了系統(tǒng)決策支持相關(guān)信息數(shù)據(jù)庫(kù)的個(gè)人計(jì)算機(jī)(Personal Computer,以下簡(jiǎn)稱:PC);通信鏈路包括PC機(jī)與紫蜂(ZigBee)協(xié)調(diào)器間串行通信鏈路及ZigBee近距離無(wú)線通訊網(wǎng)絡(luò),無(wú)線通信網(wǎng)絡(luò)以ARM9為核心,結(jié)合ZigBee無(wú)線網(wǎng)絡(luò)技術(shù),實(shí)現(xiàn)農(nóng)業(yè)環(huán)境多參數(shù)的實(shí)時(shí)與遠(yuǎn)程監(jiān)測(cè)[6-8];數(shù)據(jù)采集終端包括農(nóng)田環(huán)境溫度傳感器、CO2濃度傳感器、土壤水分傳感器以及光照強(qiáng)度傳感器.
基于VC++和數(shù)據(jù)庫(kù)的農(nóng)業(yè)環(huán)境監(jiān)測(cè)系統(tǒng),便于用戶及時(shí)掌握農(nóng)業(yè)生產(chǎn)多元信息.用戶可登陸上位機(jī)監(jiān)測(cè)系統(tǒng)實(shí)時(shí)監(jiān)測(cè)農(nóng)田環(huán)境信息,并可進(jìn)行數(shù)據(jù)的歷史查詢、動(dòng)態(tài)分析、異常預(yù)警等操作.系統(tǒng)整體功能結(jié)構(gòu)如圖2所示.器節(jié)點(diǎn)基本信息,如節(jié)點(diǎn)位置、節(jié)點(diǎn)名稱及節(jié)點(diǎn)狀態(tài)等,節(jié)點(diǎn)信息存儲(chǔ)到節(jié)點(diǎn)信息數(shù)據(jù)庫(kù)表中.
圖2 系統(tǒng)功能模塊圖Fig.2 Diagram of system functional block
用戶信息管理模塊:管理用戶基本信息,通過(guò)操作用戶信息數(shù)據(jù)庫(kù)可以查看用戶注冊(cè)的基本信息、用戶訪問(wèn)時(shí)間和次數(shù)及設(shè)置用戶訪問(wèn)權(quán)限等.
實(shí)時(shí)數(shù)據(jù)監(jiān)測(cè)模塊:將傳感器終端采集到的空氣溫濕度、光照強(qiáng)度、CO2濃度、土壤水分等數(shù)據(jù)實(shí)時(shí)上傳至PC機(jī),首先存儲(chǔ)到實(shí)時(shí)數(shù)據(jù)表中,用戶通過(guò)單擊數(shù)據(jù)顯示按鈕,動(dòng)態(tài)刷新顯示界面查看實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù),實(shí)現(xiàn)多參數(shù)信息的實(shí)時(shí)監(jiān)測(cè)與存儲(chǔ).
歷史數(shù)據(jù)查詢模塊:實(shí)現(xiàn)對(duì)某指定監(jiān)測(cè)節(jié)點(diǎn)指定時(shí)間段的感知數(shù)據(jù)信息的查詢.
數(shù)據(jù)動(dòng)態(tài)分析模塊:以動(dòng)態(tài)波形形式實(shí)現(xiàn)對(duì)監(jiān)測(cè)點(diǎn)環(huán)境參數(shù)變化趨勢(shì)的分析,通過(guò)單擊系統(tǒng)主界面數(shù)據(jù)動(dòng)態(tài)分析按鈕查看動(dòng)態(tài)波形圖.
異常預(yù)警模塊:設(shè)定監(jiān)測(cè)點(diǎn)的監(jiān)測(cè)標(biāo)準(zhǔn)值,并進(jìn)行邏輯判斷,超出閥值,記錄報(bào)警.
登陸模塊:為提高系統(tǒng)信息安全性,登陸模塊分為管理員登陸與普通用戶登陸2部分.
參數(shù)設(shè)置模塊:設(shè)置串口參數(shù)值及異常預(yù)警閥值,如串行通信端口號(hào)、波特率、數(shù)據(jù)位、校驗(yàn)位、停止位、空氣溫度濕度上下限值等.
節(jié)點(diǎn)信息管理模塊:管理布設(shè)在田間的傳感
在Windows下進(jìn)行串行通信編程的方法有:①利用Win32 API函數(shù)編程;②利用VC++6.0類庫(kù)中提供的CSerialPort類編程;③利用開(kāi)發(fā)工具提供的MSComm控件編程.
筆者選用MSComm控件編寫串口通信程序.MSComm控件是一種ActiveX控件,能在簡(jiǎn)化了的Windows環(huán)境下進(jìn)行串行通信編程,由Microsoft公司提供,該控件通過(guò)串口收發(fā)數(shù)據(jù),為應(yīng)用程序編寫串行通信提供了簡(jiǎn)便方法.VC為其提供了標(biāo)準(zhǔn)的事件處理函數(shù)和過(guò)程,同時(shí)提供了進(jìn)行數(shù)據(jù)通信所需的RS 232協(xié)議,軟件開(kāi)發(fā)人員可方便地通過(guò)設(shè)置和監(jiān)視MSComm控件的屬性和事件編寫串口通信程序[9].
用MSComm控件進(jìn)行串口編程的具體方法如下:
(1)在對(duì)話框中插入MSComm控件.可以把MSComm控件從對(duì)話框控件工具欄中拖入對(duì)話框中,若控件工具欄中缺少該控件,可通過(guò)菜單Project→Add to Project→Components and Control插入即可.
(2)為MSComm控件ID添加一個(gè)控制對(duì)象.可手動(dòng)添加該控制對(duì)象,也可通過(guò)ClassWizard的成員函數(shù)選項(xiàng)卡提示步驟來(lái)添加.
(3)設(shè)置MSComm屬性,初始化串口.
(4)添加消息處理函數(shù)OnComm(),這一過(guò)程可以由ClassWizard自動(dòng)實(shí)現(xiàn).
(5)編寫串口接收、發(fā)送相關(guān)代碼,如獲取控件數(shù)據(jù)、讀緩沖區(qū)、送入臨時(shí)變量、加入接收字符串等代碼.
(6)關(guān)閉串口.可通過(guò)MSComm控制對(duì)象調(diào)用SetPortOpen()函數(shù)關(guān)閉串口.
數(shù)據(jù)是農(nóng)業(yè)環(huán)境信息化管理系統(tǒng)的基礎(chǔ),數(shù)據(jù)的有效采集、存儲(chǔ)、分析處理是系統(tǒng)功能穩(wěn)定發(fā)揮的關(guān)鍵環(huán)節(jié),而數(shù)據(jù)庫(kù)是整個(gè)系統(tǒng)中數(shù)據(jù)處理、組織、分析及管理的核心,它設(shè)計(jì)的合理與否直接影響到整個(gè)系統(tǒng)的開(kāi)發(fā)和運(yùn)行效率.
本系統(tǒng)從分析數(shù)據(jù)信息入手設(shè)計(jì)系統(tǒng)數(shù)據(jù)庫(kù),后臺(tái)數(shù)據(jù)庫(kù)管理系統(tǒng)選用MySQL 5.5;應(yīng)用程序通過(guò)開(kāi)放數(shù)據(jù)源互聯(lián)(Open Database Connectivity,以下簡(jiǎn)稱:ODBC)配置連接到 MySQL數(shù)據(jù)庫(kù)[10],數(shù)據(jù)庫(kù)查詢語(yǔ)言使用結(jié)構(gòu)查詢語(yǔ)言(Structured Query Language,以下簡(jiǎn)稱:SQL).
筆者根據(jù)數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)范的要求,在考慮設(shè)計(jì)數(shù)據(jù)庫(kù)結(jié)構(gòu)時(shí),既考慮便于用戶使用,又力求數(shù)據(jù)庫(kù)表結(jié)構(gòu)規(guī)范化,以提高數(shù)據(jù)庫(kù)的查詢效率.根據(jù)系統(tǒng)實(shí)際情況,設(shè)計(jì)3個(gè)數(shù)據(jù)庫(kù),分別為用戶信息數(shù)據(jù)庫(kù)、環(huán)境監(jiān)測(cè)信息數(shù)據(jù)庫(kù)、閥值信息數(shù)據(jù)庫(kù).每個(gè)數(shù)據(jù)庫(kù)采用一庫(kù)多表的形式設(shè)計(jì)數(shù)據(jù)庫(kù)結(jié)構(gòu),從而實(shí)現(xiàn)監(jiān)測(cè)系統(tǒng)相關(guān)信息的結(jié)構(gòu)化、規(guī)范化存儲(chǔ).設(shè)計(jì)數(shù)據(jù)庫(kù)結(jié)構(gòu)具體如下:
用戶信息數(shù)據(jù)庫(kù).主要存儲(chǔ)系統(tǒng)用戶基本信息,包括用戶注冊(cè)信息、用戶類別、用戶權(quán)限、權(quán)限選擇、相應(yīng)權(quán)限功能等.
監(jiān)測(cè)信息數(shù)據(jù)庫(kù).該數(shù)據(jù)庫(kù)主要存放3類信息:①節(jié)點(diǎn)信息,主要存儲(chǔ)與監(jiān)測(cè)節(jié)點(diǎn)相關(guān)的信息,包括節(jié)點(diǎn)名、節(jié)點(diǎn)位置、節(jié)點(diǎn)類型、節(jié)點(diǎn)狀態(tài)等;②監(jiān)測(cè)點(diǎn)資料信息,主要存放各個(gè)農(nóng)田監(jiān)測(cè)點(diǎn)基本資料,包括監(jiān)測(cè)點(diǎn)位置名、位置經(jīng)度、位置緯度、所屬田戶、農(nóng)作物類別等;③監(jiān)測(cè)數(shù)據(jù)信息,主要用于存儲(chǔ)系統(tǒng)監(jiān)測(cè)數(shù)據(jù),包括實(shí)時(shí)數(shù)據(jù)規(guī)范化存儲(chǔ)、歷史數(shù)據(jù)分類存儲(chǔ)、監(jiān)測(cè)情況記錄等.
閥值信息數(shù)據(jù)庫(kù).主要用于存儲(chǔ)各監(jiān)測(cè)值的上下限,監(jiān)測(cè)數(shù)據(jù)超出閥值時(shí)系統(tǒng)啟動(dòng)報(bào)警功能,包括監(jiān)測(cè)點(diǎn)、溫度閥值、濕度閥值、光照強(qiáng)度閥值等.
部分?jǐn)?shù)據(jù)庫(kù)表結(jié)構(gòu)及相互之間的關(guān)系如圖3所示.
圖3 環(huán)境監(jiān)測(cè)信息數(shù)據(jù)庫(kù)表結(jié)構(gòu)及關(guān)系Fig.3 Structures of monitoring information database tables and their relationship
運(yùn)行系統(tǒng),首先進(jìn)入登陸界面,輸入用戶信息數(shù)據(jù)庫(kù)表中有效的用戶信息,點(diǎn)擊登錄按鈕即可進(jìn)入如圖4所示的系統(tǒng)主界面.
圖4 系統(tǒng)主界面圖Fig.4 Diagram of system main interface
為了檢驗(yàn)系統(tǒng)的可行性和穩(wěn)定性,首先在實(shí)驗(yàn)室進(jìn)行了系統(tǒng)組裝測(cè)試,系統(tǒng)ZigBee終端節(jié)點(diǎn)安裝了空氣溫度傳感器、空氣濕度傳感器,采集時(shí)間設(shè)置為20 min采集一次,測(cè)試成功后在實(shí)驗(yàn)室正常運(yùn)行一段時(shí)間,系統(tǒng)檢測(cè)到的數(shù)據(jù)首先存儲(chǔ)到數(shù)據(jù)庫(kù)實(shí)時(shí)數(shù)據(jù)表中,用戶通過(guò)單擊實(shí)時(shí)監(jiān)測(cè)按鈕可動(dòng)態(tài)刷新監(jiān)測(cè)界面,查看當(dāng)前時(shí)刻環(huán)境信息,如圖4所示.通過(guò)操作上位機(jī)監(jiān)控軟件可動(dòng)態(tài)分析某一時(shí)間段內(nèi)環(huán)境參數(shù)值變化情況;通過(guò)查詢數(shù)據(jù)庫(kù)歷史數(shù)據(jù)表了解某塊地農(nóng)作物的生長(zhǎng)環(huán)境歷史信息,從而為來(lái)年農(nóng)作物的選種、播種等做出有效判斷.系統(tǒng)數(shù)據(jù)的動(dòng)態(tài)分析與歷史查詢測(cè)試如圖5所示.
圖5 數(shù)據(jù)動(dòng)態(tài)分析與歷史查詢圖Fig.5 Diagram of data dynamic analysis and historical query
筆者設(shè)計(jì)了一個(gè)基于VC++的農(nóng)業(yè)環(huán)境監(jiān)測(cè)系統(tǒng),系統(tǒng)應(yīng)用C/S體系結(jié)構(gòu)進(jìn)行數(shù)據(jù)存取,實(shí)現(xiàn)了用戶通過(guò)登錄監(jiān)測(cè)系統(tǒng)遠(yuǎn)程監(jiān)測(cè)農(nóng)業(yè)環(huán)境信息的功能.實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)人機(jī)界面友好,功能較為完善,運(yùn)行穩(wěn)定可靠,并且易于擴(kuò)展和維護(hù).它有效地結(jié)合MySQL數(shù)據(jù)庫(kù)技術(shù),使龐大的監(jiān)測(cè)數(shù)據(jù)得到快速、靈活、高效的處理,為農(nóng)業(yè)決策提供重要的數(shù)據(jù)支持.
該系統(tǒng)通過(guò)ZigBee無(wú)線傳感器技術(shù)結(jié)合嵌入式技術(shù)進(jìn)行數(shù)據(jù)采集、融合與傳輸,實(shí)現(xiàn)農(nóng)作物的生長(zhǎng)環(huán)境信息的實(shí)時(shí)監(jiān)測(cè),解決了現(xiàn)有的有線傳輸帶來(lái)的布線復(fù)雜、成本高、維護(hù)麻煩等困難,提高了系統(tǒng)擴(kuò)展性、可移動(dòng)性,節(jié)省了安裝成本和人力資源,較大地提高了農(nóng)業(yè)環(huán)境信息監(jiān)測(cè)與管理的質(zhì)量,有利于大面積農(nóng)田環(huán)境的智能化、統(tǒng)一化管理.
[1]KITCHEN R.Newell.Emerging technologies for realtime and integrated agriculture decisions[J].Computers and Electronics in Agriculture,2008,61(1):1-3.
[2]張帆,劉剛.基于.NET的農(nóng)業(yè)生產(chǎn)環(huán)境信息監(jiān)測(cè)系統(tǒng)[J].計(jì)算機(jī)工程與設(shè)計(jì),2013,34(2):696-701.ZHANG Fan,LIU Gang.Agricultural production environment information monitoring system based on.NET[J].Computer Engineering and Design,2013,34(2):696-701.(in Chinese)
[3]楊瑋,李民贊.基于ZigBee、3G網(wǎng)絡(luò)的溫室遠(yuǎn)程監(jiān)測(cè)系統(tǒng)[C]//中國(guó)農(nóng)業(yè)工程學(xué)會(huì)2011年學(xué)術(shù)年會(huì)論文集.北京:中國(guó)農(nóng)業(yè)工程學(xué)會(huì),2011:67-71.YANG Wei,LI Min-Zan.Remote monitoring system of greenhouse based on ZigBee and 3G[C]//Procedings of Chinese Society of Agricultural Engineering Conference.Beijing:Chinese Society of Agricultural Engineering,2011:67-71.(in Chinese)
[4]薛文英,傅平,張馨,等.基于組態(tài)平臺(tái)的日光溫室群監(jiān)控系統(tǒng)軟件設(shè)計(jì)與應(yīng)用[J].北方園藝,2011(9):53-56.XUE Wen-ying,F(xiàn)U Ping,ZHANG Xin,et a1.Design and application about monitoring and control system for greenhouse group based on configuration platform[J].Northern Horticulture,2011(9):53-56.(in Chinese)
[5]張永梅.MySQL數(shù)據(jù)庫(kù)技術(shù)在公民健康信息管理系統(tǒng)中的應(yīng)用[D].西安:西安電子科技大學(xué),2010.ZHANG Yong-mei.The application of MySQL database technology in Citizen's Health Information Management System[D].Xi An:Xidian University,2010.(in Chinese)
[6]ZigBee Alliance.ZigBee specification version 1.0[M].CA USA:ZigBee Standards Organization,2004.
[7]ZHANG Jie,LI Ai-cheng,LI Jian-long,et al.Research of real-time image acquisition system based on ARM 7 for agricultural environmentalmonitoring[C]//2011 International Conference on Remote Sensing,Environment and Transportation Engineering(RSETE 2011),2011 June 24-26,Nanjing,China.Piscataway,NJ:the Institute of Electrical and Electronics Engineers,Inc.(IEEE),2011:6216-6220.
[8]YANG Shu-hui,DAI Fei,CARDEI M,et al.On connected multiple point coverage in wireless sensor networks[J].International Journal of Wireless Information Networks,2006,13(4):289-301.
[9]王正強(qiáng).VC中應(yīng)用MSComm控件實(shí)現(xiàn)串口通信[J].電子測(cè)試,2010(5):73-76.WANG Zheng-qiang.Realization of serial port communication by MSComm control in the VC enviroment[J].Electronic Test,2010(5):73-76.(in Chinese)
[10][英]福塔.MySQL必知必會(huì)[M].劉曉霞,鐘鳴,譯.北京:人民郵電出版社,2013:4-8.FORTA B.MySQL crash course[M].LIU Xiao-xia,ZHONG Ming,translate.Beijing:Posts & Tele Press,2013:4-8.(in Chinese)