劉瑞瑞, 王福平
(1.北方民族大學計算機科學與工程學院,寧夏銀川 750021; 2.北方民族大學創新創業學院,寧夏銀川 750021)
馬鈴薯是僅次于小麥、玉米、水稻的第四大糧食作物,世界超過2/3的國家都在種植,我國年產量為8 000萬t,居世界前列[1]。隨著我國馬鈴薯主糧化戰略的推進和智慧農業的興起,將獲取的海量農業信息進行采集、分析、融合及處理,同時通過智能化操作終端實現科學管理和全程實時監控和服務成為新型農業發展的一大趨勢。本研究將傳感器采集數據、無線網絡、GPRS移動通信等硬件技術與Java軟件技術相結合,通過對窖中各個節點的實時監測,以及系統自動和手動2種模式,來確保窖中的適宜環境。管理平臺以Java技術為基礎,采用B/S結構實現Web程序開發,并在此基礎上運用了成熟穩定的框架技術SSH(Struts,Spring,Hibernate)等,同時嵌入友好的人機交互接口,來實現系統的各個功能模塊。
Java是由sun公司推出的跨越多平臺、移植性最高的一種面向對象的編程語言,非常適用于企業網絡和Internet環境,比目前常用的C++更簡潔、可靠、安全,除去最大的程序錯誤根源,有廣泛的應用系統開發領域,如桌面應用、嵌入式、交互式、分布式、web應用等[2]。該系統是建立在廣域網的web訪問,因此選用B/S結構,通過星型拓撲結構構建內部通信網絡及Internet虛擬專網,無需專門的硬件環境,不受地域限制,安全、快捷、準確,節約成本,用戶界面完全可以通過www瀏覽器實現。
采用一種面向對象設計的框架模式MVC,核心思想是將程序分成模型層、視圖層、控制層,這3層既相對獨立又能一起工作。處理過程是用戶通過視圖層向控制器發出請求;控制器接收用戶的請求并將其映射到相應的模型,該模型處理用戶的請求,然后模型處理業務邏輯,并返回數據;最后控制器將處理的結果傳遞給相應的視圖,處理后的結果在視圖層顯示。MVC主要依靠Struts框架中的Servlet和JSP技術實現,Struts支持一套完善的規范和基礎類庫,在很大程度上減少程序員開發程序的工作量,使系統具有較強的擴展性[3]。Spring是一個開源的輕量級分層架構,可以將簡單的組件配置組合成復雜的應用,其模塊化的特性更符合開發的需要,且便于管理、修改及擴展。Hibernate是一個開源代碼的對象關系框架,將對象及其屬性映射到數據庫中的表及表的字段中,通過對象的編輯可以實現對數據庫的操作,可以對JDBC對象輕量級封裝,同時提供了數據獲取以及查詢的方法[4],從而解決了面向對象編程與關系數據庫不適配問題,大大降低了編寫SQL和JDBC的時間。
系統需求分析在整個系統開發的生命周期中起著至關重要的作用,主要用于提前了解到用戶需求、明確開發的目標、系統功能及信息處理的方式,本研究將從功能、非功能、可行性3個角度進行需求分析[5]。
系統平臺可以通過瀏覽器輸入網址或通過下載手機APP進入操作界面,進行可靠控制和管理,功能主要包括用戶信息管理、檢測數據查詢、智能監控、設備管理和平臺中心等。在非功能性需求方面,系統在具兼容性、安全性、可擴展性的同時盡量縮短系統響應時間。系統在開發中所應用的Java、數據庫等技術已經非常成熟,并且得以廣泛推廣。馬鈴薯智能監測系統及時準確監控窖內的情況,降低了因環境變化造成的經濟損失,與開發所用成本相比,是可行的。
馬鈴薯窖藏環境監測系統是由數據采集層、網絡傳輸層、上位機3大部分組成。上位機部分主要包括數據庫、服務器以及客戶端。網絡傳輸層為ZigBee無線傳感器網絡、GPRS等數傳設備。數據采集層部分包括溫濕度傳感器、二氧化碳傳感器、攝像頭等硬件設備。整體的運作過程是由溫濕度、二氧化碳傳感器對馬鈴薯窖的不同節點的數據進行檢測,由攝像頭對地窖內情況進行實時視頻監控,由數據采集器采集田間各節點的傳感器參數,經過ZigBee無線通信發送給傳輸基站至參數程序,經過數據處理后存入數據庫,經GPRS無線通信發送給服務器,客戶端可以通過訪問服務器來獲得數據,客戶可以用Google瀏覽器來操作查詢數據的客戶終端,即登錄遠程監控平臺來了解窖中情況。馬鈴薯貯藏智能監控系統總體設計框圖見圖1。

馬鈴薯貯藏環境遠程監測系統的網站平臺是整個設計的靈魂;不僅是數據處理的重要環節,也是用最直觀的方式和友好的交互界面實現功能;在滿足用戶要求的前提下,還應該便于管理員對信息的管理及監控。以模塊化的思想設計界面,不僅在開發過程中便于代碼的編寫、修改與擴展,在網站的界面上也能清晰地展示出各個功能,便于用戶查詢與操作。根據對監控系統的需求分析,整個系統的功能結構框圖見圖2。

系統的上位機軟件部分是在裝有Windows操作系統的PC上采用B/S的系統模式,自下而上分為3層:數據訪問層(DAL)、業務邏輯層(BLL)、表示層。數據訪問層用于實現系統對數據庫的操作,實現業務流程對數據庫中數據的插入、更新、修改、刪除、查詢等,設計關鍵在于合理設計處理參數的方法同時保證數據庫的完整性。業務邏輯層是系統實現的核心,用于對上下層之間的交互數據做邏輯處理以實現數據業務流程,重點在于設計通用業務接口,獨特的業務流程可對BLL層中相關類進行繼承和重載,包括指令發布以及數據的接收、采集、管理、錄入、匯總、校對、上報、導入、導出等[6]。業務層數據通信模塊代碼如下:
Public class Purchase ApplicationBLL
{public static<返回參數>業務功能1()
{//業務功能1實現代碼}
public static<返回參數>業務功能 n()
{//業務功能n實現代碼}
界面層根據用戶綁定的不同控件通過GET和SET操作代碼完成實體類屬性操作并將其值綁定至對應控件屬性上,從而提供友好的人機交互界面和操作結果的展示。界面上通常顯示查詢、添加、刪除、修改、打印、審核等以及首頁、上一頁、下一頁、最后一頁等功能。
數據庫模塊是系統設計中的一個關鍵要素。農業生產實踐因素的復雜性和多變性導致數據庫設計的復雜性,因此,數據庫選擇決定了系統質量的好壞以及今后運營及維護的成本。鑒于穩定性、安全機制、可擴展性等幾個方面,且支持B/S 3層模式,本設計選用SQL Server來創建系統的數據庫,建立了農戶信息表、地窖信息表、氣象信息表、傳感器信息表、設備信息表、歷史操作表等。在清楚分析數據庫間關系的同時應該選擇合適的數據庫連接方式,Microsoft公司推出一款定義數據庫訪問API的規范ODBC,適用于不同的DBMS及編程語言。采用JDBC提供Java程序連結與存取數據庫的套件,即應用程序通過JDBC驅動程序與數據庫管理系統溝通[7],JDBC的應用過程見圖3。
主要的代碼如下:
Connection con=DriverManager(jdbc:mysql://localhost/sample,username,password);

//連接MySQL
String username;//登錄MySQL數據庫的用戶名
String password;//登錄數據庫密碼
Connection con=DriverManager.getConnection(“url”,“username”,password);
Statement stmt=con.createStatement();//創建一個語句對象
ResultSet rs =statement.executeQuery(“SELECT sno,sname FROM student”);
//執行select類型的SQL語句
int num = statement.executeQuery(“INSERT INTO farmer valus(‘10001’,‘zhangsan’,‘男’)”);
登錄模塊的部分實現代碼如下:
publicvoid loginCheck() throws ChecksException
{
/**驗證用戶名密碼 */
if(!checkNamePassword()thrownewChecksException(“userNameOrPassword~error”);
if(theloginer.getState()==null||theloginer.getState()!=1) thrownew ChecksException(“error_authorizationerror”);
if(!systemBegin())thrownew ChecksException(“error_initialization”);
/**當前登陸用戶信息存入session*/
if(WebContextMaker.getRequest()!=null){
WebContextMaker.getRequest().getSession(true);
WebContextMaker.getRequest().getSession().setAttribute(“t_user”,theloginer);
}else
WebContextMaker.getSession().put(“t_user”,theloginer); LogMaker.loger(“0”,theloginer.getLoginName(),“success_login”,theloginer.toXml(),“login”,“LoginAction”,6);
/**當前登錄用戶信息存入登錄隊列*/
LoginInfo temper=new LoginInfo(theloginer.getLoginName(),
,WebContextMaker.getSession().toString(),WebContextMaker.getRequest().getRemoteAddr(),new Date(),new Date(),new Date(),new Date());
SystemParms.loginUserMap.put(theloginer.getLoginName(),temper);
}
各級用戶可以選擇谷歌瀏覽器訪問網址進入登錄頁面,輸入正確的登錄賬號進入平臺,通過一定的權限認證進行登錄,在自己的權限內進行平臺管理操作。網頁的登錄界面見圖4。

控制平臺主頁面分為個人中心、智能監控、設備管理、區域管理、平臺中心5個功能模塊(圖5)。
以最核心的智能監控模塊為例,包括視頻、實時數據、統計數據以及最新的統計數據折線圖。在歷史數據欄打開區域列表,在當前登錄用戶有權限去操作的區域列表右側選擇需要展示的數據時間段,點擊查詢,下方即可生成數據的折線圖。首先輸入開始時間與結束時間(圖6),觀察在此時間段所有的溫度變化曲線見圖7,濕度變化曲線見圖8,二氧化碳含量變化曲線見圖9。
筆者著重介紹了基于Java的馬鈴薯窖貯藏監控系統軟件的設計與開發過程,實現了系統需求分析中各個功能模塊的設計工作。此系統突破了傳統對地域的限制,只要有網絡的地方就能登錄此系統,實現對馬鈴薯窖內環境的遠程監測和控制,降低了生產成本和環境突變造成的損失,使寧夏偏遠地區向智慧農業邁進。




參考文獻:
[1]李壁成,安韶山. 黃土高原馬鈴薯產業化開發的潛力、市場與對策[J]. 水土保持研究,2005,12(3):151-153.

[2]趙洛育. Java從入門到精通[M]. 3版. 北京:清華大學出版社,2012.
[3]穆勝德. 基于SSH多層框架web應用系統的研究與設計[D]. 沈陽:沈陽工業大學,2007:6-7.
[4]Bauer C,King G. Java persistence with hibernate[M]. Greenwich:Manning Publications Co.,2006:35.
[5]鄭申茂. 基于JavaEE與Android的農業信息服務平臺設計與開發[D]. 武漢:華中師范大學,2014:20-23.
[6]李軍. 數據采集系統整體設計與開發[M]. 北京:北京航空航天大學出版社,2014.
[7]王福平,劉芳,馮盼盼. 基于Java的農田節水灌溉監控系統的設計與實現[J]. 微型機與應用,2013(22):83-84.