楊代利,汪怡梅
(1.四川文理學(xué)院 計算機學(xué)院,達(dá)州 635000;2.成都金網(wǎng)安泰信息技術(shù)有限公司)
?
智慧農(nóng)業(yè)控制系統(tǒng)的服務(wù)軟件設(shè)計
楊代利1,汪怡梅2
(1.四川文理學(xué)院 計算機學(xué)院,達(dá)州 635000;2.成都金網(wǎng)安泰信息技術(shù)有限公司)
基于Android技術(shù)、計算機網(wǎng)絡(luò)技術(shù)設(shè)計了智慧農(nóng)業(yè)控制系統(tǒng)手機APP客戶端、上位機軟件,搭建了服務(wù)器。上位機作為服務(wù)器和硬件控制系統(tǒng)中介,實時接收硬件系統(tǒng)的農(nóng)作物環(huán)境信息,并通過服務(wù)器保存。APP客戶端實時獲取服務(wù)器信息,直觀形象呈現(xiàn)給用戶,且可以設(shè)置參數(shù)報警閥值,及時提醒用戶,用戶可選擇智能模式或者手動模式遠(yuǎn)程調(diào)節(jié)農(nóng)作物生長環(huán)境因素。
智慧農(nóng)業(yè);Android;APP;計算機網(wǎng)絡(luò);智能模式
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,智慧農(nóng)業(yè)將成為現(xiàn)代農(nóng)業(yè)未來發(fā)展的一個趨勢[3]。將物聯(lián)網(wǎng)、Android、計算機網(wǎng)絡(luò)技術(shù)、ZigBee等技術(shù)應(yīng)用于農(nóng)業(yè)中,能夠促進(jìn)農(nóng)業(yè)信息化發(fā)展,改進(jìn)生產(chǎn)管理模式,提高生產(chǎn)效率,為農(nóng)業(yè)發(fā)展提供了方便[5]。
智慧農(nóng)業(yè)控制系統(tǒng)可以讓用戶選擇自動控制或者手動控制,能夠?qū)崿F(xiàn)實時觀察農(nóng)作物的狀態(tài),不需要浪費大量的人力和物力來專門進(jìn)行檢查和記錄。該項目也可以手動設(shè)置不同農(nóng)作物的不同溫度、濕度、光照及土壤濕度的范圍,一旦超過或者低于作物生長所需要的條件范圍,系統(tǒng)將進(jìn)行報警處理。
1.1 移動終端
該項目移動終端是一個智能手機,可以通過其運行APP,并與服務(wù)器相連,從而實現(xiàn)控制和查看農(nóng)作物生長情況功能。APP功能如下:
① 用戶可以通過手機APP,申請一個屬于自己的賬號和密碼。
② 用戶登錄后,可以隨時隨地查看農(nóng)作物的環(huán)境信息及動態(tài)變化折線圖。
③ 用戶可以根據(jù)需要自主設(shè)置某些農(nóng)作物的環(huán)境信息范圍。
④ 用戶可以根據(jù)需要選擇控制方式,自動控制或者手動控制。
⑤ 若用戶選擇自動控制方式,當(dāng)農(nóng)作物的環(huán)境信息超出所設(shè)置的范圍時,硬件將根據(jù)服務(wù)器的數(shù)據(jù)自動進(jìn)行操作,如打開抽水機、燈光等。
⑥ 若選擇手動控制方式,用戶可以根據(jù)不同環(huán)境,開關(guān)燈光、繼電器等,并設(shè)置燈光的亮度。
⑦ 手動控制時,當(dāng)農(nóng)作物的環(huán)境因素超出所設(shè)置的范圍時,手機將進(jìn)行報警,提示用戶,當(dāng)用戶收到報警信息后,可以進(jìn)行相應(yīng)的報警處理。
1.2 服務(wù)器
服務(wù)器是硬件和應(yīng)用程序的一個中介,手機應(yīng)用程序APP通過TCP/IP協(xié)議與服務(wù)器相連后,用戶通過APP向服務(wù)器上傳農(nóng)作物生長環(huán)境信息并保存數(shù)據(jù);硬件也是通過一個上位機程序與服務(wù)器進(jìn)行Socket連接,向服務(wù)器傳送硬件所采集到的各種環(huán)境信息,服務(wù)器也通過Socket連接向硬件發(fā)送控制命令等。服務(wù)器作為一個中介來運行,一方通過端口8080和TCP/IP協(xié)議與移動終端APP進(jìn)行通信,另一方通過端口2077和Socket連接與上位機程序進(jìn)行通信。
服務(wù)器功能如下:
① 根據(jù)發(fā)送過來的Tag標(biāo)志,來判斷用戶想要的操作并返回需要的數(shù)據(jù)給用戶。
② 實時接收上位機程序發(fā)送過來的數(shù)據(jù),并根據(jù)自定義的通信協(xié)議來進(jìn)行分析和處理。
③ 服務(wù)器得到數(shù)據(jù)后,將其保存在服務(wù)器特定的數(shù)據(jù)庫中。
④ 服務(wù)器返回數(shù)據(jù)給上位機,從數(shù)據(jù)庫中查詢后處理成一定格式的數(shù)據(jù)。
1.3 上位機
上位機是硬件與服務(wù)器之間的中介,硬件并不是直接通過WiFi模塊將數(shù)據(jù)發(fā)送給服務(wù)器,而是通過上位機程序作一個中間接口發(fā)送的;當(dāng)然,硬件也是可以通過WiFi模塊向服務(wù)器發(fā)送數(shù)據(jù),但是通過上位機能更加體現(xiàn)本項目的實現(xiàn)過程。上位機是一個Java Project,它的功能就是讀取開發(fā)板通過串口發(fā)送的數(shù)據(jù),然后通過Socket連接將收到的數(shù)據(jù)發(fā)送給服務(wù)器,接著將服務(wù)器返回的控制命令發(fā)送給硬件,讓硬件根據(jù)信息作出反應(yīng)。上位機的任務(wù)就是收取/發(fā)送串口數(shù)據(jù)和發(fā)送/收取服務(wù)器數(shù)據(jù)。
上位機通過串口和協(xié)調(diào)器相連,通過Socket與服務(wù)器相連,通過串口接收數(shù)據(jù)后進(jìn)行一定的轉(zhuǎn)化,然后通過Socket再轉(zhuǎn)發(fā)給服務(wù)器。
上位機主要功能如下:
① 通過串口接收硬件發(fā)送過來的環(huán)境信息。
② 將接收的環(huán)境信息通過Socket連接發(fā)送給服務(wù)器。
③ 將服務(wù)器返回的控制數(shù)據(jù)轉(zhuǎn)發(fā)給串口。
2.1 設(shè)計流程
該系統(tǒng)運用手機APP方式進(jìn)行控制。APP設(shè)計的核心功能包含設(shè)置閾值、查看數(shù)據(jù)、模式控制和報警處理。APP開發(fā)流程圖如圖1所示。
圖1 APP開發(fā)流程圖
2.2 APP開發(fā)
2.2.1 界面布局設(shè)計
圖2是該APP的登錄注冊頁面,該頁面采用了本地記住密碼功能,當(dāng)用戶選擇記住密碼后,在該移動設(shè)備上再次登錄,便可以不用再繼續(xù)輸入用戶名和密碼,具有較強的實用性。在該頁面上,采用了同數(shù)據(jù)庫交互技術(shù),當(dāng)用戶名和密碼均存在并正確的情況下,用戶才能進(jìn)行下一步,否則不能。
圖3是一個注冊頁面,如果用戶之前在數(shù)據(jù)庫中沒有數(shù)據(jù)(即沒有賬號),在登錄頁面選擇注冊按鈕便可以進(jìn)入該頁面,該頁面是對數(shù)據(jù)庫的一個插入數(shù)據(jù)過程。當(dāng)用戶在該頁面填寫信息并點擊注冊按鈕后,用戶填寫的信息將實時插入到數(shù)據(jù)庫,進(jìn)行更新保存,以后用戶便可以在登錄頁面使用此信息。
圖4是用戶進(jìn)入該系統(tǒng)的主要功能列表,該頁面采用list技術(shù),將所有的主要功能排列起來,讓用戶更加方便直觀地運用該APP。該頁面上的每條記錄都對應(yīng)著另一個不同的頁面。
圖2 注冊登錄頁面
圖3 注冊頁面
圖5是用戶在控制列表中選擇報警管理后跳轉(zhuǎn)的頁面。在該頁面中,用戶可以直觀地看見空氣的溫度、濕度、光照和土壤濕度等是否合格,且這些參數(shù)過高或者過低,都會進(jìn)行報警,提醒用戶關(guān)注當(dāng)前數(shù)據(jù)。該功能和數(shù)據(jù)庫交互比較頻繁,頁面上的數(shù)據(jù)都是從數(shù)據(jù)庫中采集并進(jìn)行分析計算得到的。
圖4 系統(tǒng)主要功能列表
圖5 報警管理跳轉(zhuǎn)頁面
圖6是用戶在控制列表中選擇閾值設(shè)置后跳轉(zhuǎn)的頁面。在該頁面中,用戶可以根據(jù)需要設(shè)置生產(chǎn)環(huán)境中的各種參數(shù),讓系統(tǒng)使用起來更加具有延伸性。用戶在該頁面中所填寫的數(shù)據(jù),都會通過HttpServlet提供的接口傳遞到數(shù)據(jù)庫所對應(yīng)的表中,進(jìn)行保存和更新。
圖7是用戶在控制列表中選擇數(shù)據(jù)查看后跳轉(zhuǎn)的頁面。在該頁面中,用戶可以實時對當(dāng)前環(huán)境數(shù)據(jù)進(jìn)行動態(tài)查看,在該頁面中的動態(tài)圖會顯示每一秒的數(shù)據(jù),并用動態(tài)折線圖進(jìn)行顯示。該頁面采用Android的canvas動態(tài)圖技術(shù),實時采集數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行顯示。
圖6 閾值設(shè)置后跳轉(zhuǎn)頁面
圖7 數(shù)據(jù)查看后跳轉(zhuǎn)頁面
圖8是用戶在控制列表中選擇模式切換后跳轉(zhuǎn)的頁面。在該頁面中,用戶可以選擇該系統(tǒng)的控制方式:自動控制或手動控制。如果用戶選擇自動控制,則系統(tǒng)數(shù)據(jù)不在合格區(qū)域內(nèi),APP不會產(chǎn)生報警聲,而是通過控制執(zhí)行機構(gòu)調(diào)節(jié)當(dāng)前狀態(tài)。該頁采用了服務(wù)技術(shù),只要APP在使用中,便會和服務(wù)器保持實時交互。
圖9是用戶選擇手動控制后跳轉(zhuǎn)的頁面。在該頁面中用戶可以對硬件進(jìn)行控制,即燈光和繼電器的開關(guān)等。當(dāng)燈光打開或者關(guān)閉后,傳遞到數(shù)據(jù)庫,并且數(shù)據(jù)庫及時通過Socket與硬件通信,讓硬件進(jìn)行操作。
圖8 選擇模式切換后跳轉(zhuǎn)頁面
圖9 選擇手動控制后跳轉(zhuǎn)頁面
2.2.2 服務(wù)器設(shè)計流程
(1) 服務(wù)器搭建、數(shù)據(jù)庫的建立
數(shù)據(jù)得以保存和使用都是靠數(shù)據(jù)庫來進(jìn)行的,設(shè)計數(shù)據(jù)庫使用MySQL技術(shù),建立了一個user用戶,里面建立了4張表,其中一張表為用戶名和密碼表,一張表為用戶設(shè)置的環(huán)境數(shù)據(jù),一張表為燈光控制,一張表為硬件實時傳遞的當(dāng)前數(shù)據(jù)。
服務(wù)器是運用JAVA EE軟件建立的Dynamic Web Project編寫代碼。服務(wù)器模塊,一方面要通過Tag標(biāo)識來和用戶APP端進(jìn)行信息交互,另一方面要通過Socket與硬件進(jìn)行信息交互。
手機APP通信時,服務(wù)器是通過Tag標(biāo)識識別用戶需求,當(dāng)服務(wù)器識別到某一個Tag標(biāo)識時,將根據(jù)需要來操作數(shù)據(jù)庫,為此,服務(wù)器必須要考慮到用戶的要求,根據(jù)需要來執(zhí)行一定的操作。所以,服務(wù)器一定要和數(shù)據(jù)庫相連接,否則,就算用戶發(fā)送了Tag標(biāo)識給服務(wù)器,服務(wù)器也收到了請求,仍然不能夠操作數(shù)據(jù)庫,用戶的請求不能實現(xiàn)。
與硬件通信時,服務(wù)器首先要建立Socket連接,并設(shè)定端口號,讓硬件能夠通過端口號識別服務(wù)器,服務(wù)器和硬件建立起連接后,開始工作。服務(wù)器讀取開發(fā)板發(fā)送過來的信息數(shù)據(jù)后,便開始進(jìn)行分析和處理工作,根據(jù)事先定義好的數(shù)據(jù)通信協(xié)議分析數(shù)據(jù),并進(jìn)行拆分,然后將拆分后的數(shù)據(jù)保存在之前的數(shù)據(jù)庫中;用戶查看數(shù)據(jù)時,就能得到最新的記錄。服務(wù)器完成這些工作后,將返回一些數(shù)據(jù)給硬件執(zhí)行機構(gòu)。同理,服務(wù)器也將要發(fā)送的數(shù)據(jù)進(jìn)行處理,處理成硬件能夠識別的信息,返回給硬件執(zhí)行機構(gòu)。
(2) 服務(wù)器和MySQL連接,并建立相應(yīng)的數(shù)據(jù)
部分代碼如下:
try {
//得到數(shù)據(jù)庫連接
conn = DBUtils.getConnection();
//給具體的參數(shù)賦值
ptst.setString(1, mer.getMer_userName());
ptst.setString(2, mer.getMer_Password());
ptst.setString(3, mer.getMer_Tell());
//執(zhí)行查詢操作,返回查詢結(jié)果(結(jié)果集對象)
ResultSet rs = ptst.executeQuery();
//判斷結(jié)果集是否有數(shù)據(jù),有則返回true
return rs.next();
catch (SQLException e) {
e.printStackTrace();
} finally {//關(guān)閉連接
DBUtils.free(conn, null, null);}
(3) 與APP交互
服務(wù)器與APP通信,通過Servlet實現(xiàn)。主要是APP對服務(wù)器發(fā)送讀取數(shù)據(jù)請求,而不是服務(wù)器主動發(fā)送數(shù)據(jù)給APP。如此,可以減輕服務(wù)器的壓力,讓系統(tǒng)更實用。
(4) 與上位機交互
硬件系統(tǒng)發(fā)送的數(shù)據(jù)流是字節(jié),并且不方便識別,要想將其變?yōu)橐鬃x取數(shù)據(jù),需要通過字符串截取技術(shù)進(jìn)行解析,并通過數(shù)組分別保存。
硬件系統(tǒng)發(fā)送的數(shù)據(jù)流是開發(fā)者自定義的。該數(shù)據(jù)有多少位,每一位代表什么,在需求階段就要確定。因此,在服務(wù)器和上位機通信時,對數(shù)據(jù)的解析就要方便很多。
public void run() {
byte[] buf = new byte[128];
while (true) {
try {
if(client.isClosed()){
return;
}
else{
if (!client.isInputShutdown()) {
//讀取開發(fā)板發(fā)過來的字節(jié)流
int len = dis.read(buf);
String dataFromHard = new String(buf);
System.out.println("===___"+dataFromHard);
//打印
if(len > 0) {
String receiveData=new String(buf, 0, len).trim();
String[] splitData=SplitDataFromReceive.splitReceive(receiveData,8);
Boolean result=hardDaoImpl.addData2DB(splitData);
boolean flag=client.isOutputShutdown();
if (!flag){
hardDaoImpl.findAllcaiData(dos);
try {
Thread.sleep(100);
}catch (InterruptedException e) {
e.printStackTrace();
}}}}}catch (IOException e){
e.printStackTrace();
}
finally {
try {
if (dis !=null)
dis.close();
if (dos !=null)
dos.close();
}
catch (IOException e) {
e.printStackTrace();
}}}}
2.2.3 上位機設(shè)計
(1) 基本框架建立
服務(wù)器與硬件連接是通過上位機來實現(xiàn)的。所謂上位機,本質(zhì)是一段JAVA程序代碼,主要功能是讀取硬件傳遞過來的數(shù)據(jù)并發(fā)送給服務(wù)器,同時將服務(wù)器發(fā)送給硬件的控制命令傳遞給硬件系統(tǒng),讓其作出相應(yīng)操作。
(2) 自定義數(shù)據(jù)格式
public String Bytes2HexString(byte[] b){
//將byte數(shù)組轉(zhuǎn)換為16進(jìn)制數(shù)組
String ret = "";
for(int i=0;i String hex=Integer.toHexString(b[i]&0xff); if (hex.length() == 1){ hex = '0' + hex; } ret += hex.toUpperCase(); } return ret; } (3) 通過串口和硬件系統(tǒng)交互 硬件與上位機連接通過串口實現(xiàn),下面代碼為用戶判斷串口COM4是否可用,如果可用,則時刻閱讀硬件系統(tǒng)是否有傳遞過來的數(shù)據(jù)。 while (portList.hasMoreElements()) { portId=(CommPortIdentifier) portList.nextElement(); if(portId.getPortType()==CommPortIdentifier.PORT_SERIAL){ if(portId.getName().equals("COM4")){ try{ serialPort=(SerialPort) portId.open("Main", 2000); } catch (PortInUseException e){} try{ inputStream=serialPort.getInputStream(); Service Software of Intelligent Agriculture Control System Yang Daili1,Wang Yimei2 (1.Shool of Computer,Sichuan University of Arts and Science Department of computer,Dazhou 635000,China;2.Chengdu Network Aetna Information Technology Co.,Ltd.) Based on Android technology and computer network technology,the mobile phone APP client and the upper computer of intelligent agricultural control system are designed.The upper computer is the intermediary between the server and the hardware control system,it receives the real-time crop environment information of the hardware system,and saves the real-time crop environment information through the server.The APP customer real-timely gets the server information,intuitivly and vividly presents the information to the user.The user can set alarm threshold of the parameters to remind.The intelligent mode or manual mode can be chosen to remotely regulate the environment factors of crop growth. intelligent agriculture;Android;APP;computer network;intelligent mode TP315 A