• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      智慧農(nóng)業(yè)控制系統(tǒng)的服務軟件設計

      2017-02-09 03:12:20楊代利汪怡梅
      關鍵詞:手動上位串口

      楊代利,汪怡梅

      (1.四川文理學院 計算機學院,達州 635000;2.成都金網(wǎng)安泰信息技術有限公司)

      ?

      智慧農(nóng)業(yè)控制系統(tǒng)的服務軟件設計

      楊代利1,汪怡梅2

      (1.四川文理學院 計算機學院,達州 635000;2.成都金網(wǎng)安泰信息技術有限公司)

      基于Android技術、計算機網(wǎng)絡技術設計了智慧農(nóng)業(yè)控制系統(tǒng)手機APP客戶端、上位機軟件,搭建了服務器。上位機作為服務器和硬件控制系統(tǒng)中介,實時接收硬件系統(tǒng)的農(nóng)作物環(huán)境信息,并通過服務器保存。APP客戶端實時獲取服務器信息,直觀形象呈現(xiàn)給用戶,且可以設置參數(shù)報警閥值,及時提醒用戶,用戶可選擇智能模式或者手動模式遠程調(diào)節(jié)農(nóng)作物生長環(huán)境因素。

      智慧農(nóng)業(yè);Android;APP;計算機網(wǎng)絡;智能模式

      引 言

      隨著物聯(lián)網(wǎng)技術的發(fā)展,智慧農(nóng)業(yè)將成為現(xiàn)代農(nóng)業(yè)未來發(fā)展的一個趨勢[3]。將物聯(lián)網(wǎng)、Android、計算機網(wǎng)絡技術、ZigBee等技術應用于農(nóng)業(yè)中,能夠促進農(nóng)業(yè)信息化發(fā)展,改進生產(chǎn)管理模式,提高生產(chǎn)效率,為農(nóng)業(yè)發(fā)展提供了方便[5]。

      智慧農(nóng)業(yè)控制系統(tǒng)可以讓用戶選擇自動控制或者手動控制,能夠?qū)崿F(xiàn)實時觀察農(nóng)作物的狀態(tài),不需要浪費大量的人力和物力來專門進行檢查和記錄。該項目也可以手動設置不同農(nóng)作物的不同溫度、濕度、光照及土壤濕度的范圍,一旦超過或者低于作物生長所需要的條件范圍,系統(tǒng)將進行報警處理。

      1 智慧農(nóng)業(yè)軟件主要技術與分析

      1.1 移動終端

      該項目移動終端是一個智能手機,可以通過其運行APP,并與服務器相連,從而實現(xiàn)控制和查看農(nóng)作物生長情況功能。APP功能如下:

      ① 用戶可以通過手機APP,申請一個屬于自己的賬號和密碼。

      ② 用戶登錄后,可以隨時隨地查看農(nóng)作物的環(huán)境信息及動態(tài)變化折線圖。

      ③ 用戶可以根據(jù)需要自主設置某些農(nóng)作物的環(huán)境信息范圍。

      ④ 用戶可以根據(jù)需要選擇控制方式,自動控制或者手動控制。

      ⑤ 若用戶選擇自動控制方式,當農(nóng)作物的環(huán)境信息超出所設置的范圍時,硬件將根據(jù)服務器的數(shù)據(jù)自動進行操作,如打開抽水機、燈光等。

      ⑥ 若選擇手動控制方式,用戶可以根據(jù)不同環(huán)境,開關燈光、繼電器等,并設置燈光的亮度。

      ⑦ 手動控制時,當農(nóng)作物的環(huán)境因素超出所設置的范圍時,手機將進行報警,提示用戶,當用戶收到報警信息后,可以進行相應的報警處理。

      1.2 服務器

      服務器是硬件和應用程序的一個中介,手機應用程序APP通過TCP/IP協(xié)議與服務器相連后,用戶通過APP向服務器上傳農(nóng)作物生長環(huán)境信息并保存數(shù)據(jù);硬件也是通過一個上位機程序與服務器進行Socket連接,向服務器傳送硬件所采集到的各種環(huán)境信息,服務器也通過Socket連接向硬件發(fā)送控制命令等。服務器作為一個中介來運行,一方通過端口8080和TCP/IP協(xié)議與移動終端APP進行通信,另一方通過端口2077和Socket連接與上位機程序進行通信。

      服務器功能如下:

      ① 根據(jù)發(fā)送過來的Tag標志,來判斷用戶想要的操作并返回需要的數(shù)據(jù)給用戶。

      ② 實時接收上位機程序發(fā)送過來的數(shù)據(jù),并根據(jù)自定義的通信協(xié)議來進行分析和處理。

      ③ 服務器得到數(shù)據(jù)后,將其保存在服務器特定的數(shù)據(jù)庫中。

      ④ 服務器返回數(shù)據(jù)給上位機,從數(shù)據(jù)庫中查詢后處理成一定格式的數(shù)據(jù)。

      1.3 上位機

      上位機是硬件與服務器之間的中介,硬件并不是直接通過WiFi模塊將數(shù)據(jù)發(fā)送給服務器,而是通過上位機程序作一個中間接口發(fā)送的;當然,硬件也是可以通過WiFi模塊向服務器發(fā)送數(shù)據(jù),但是通過上位機能更加體現(xiàn)本項目的實現(xiàn)過程。上位機是一個Java Project,它的功能就是讀取開發(fā)板通過串口發(fā)送的數(shù)據(jù),然后通過Socket連接將收到的數(shù)據(jù)發(fā)送給服務器,接著將服務器返回的控制命令發(fā)送給硬件,讓硬件根據(jù)信息作出反應。上位機的任務就是收取/發(fā)送串口數(shù)據(jù)和發(fā)送/收取服務器數(shù)據(jù)。

      上位機通過串口和協(xié)調(diào)器相連,通過Socket與服務器相連,通過串口接收數(shù)據(jù)后進行一定的轉化,然后通過Socket再轉發(fā)給服務器。

      上位機主要功能如下:

      ① 通過串口接收硬件發(fā)送過來的環(huán)境信息。

      ② 將接收的環(huán)境信息通過Socket連接發(fā)送給服務器。

      ③ 將服務器返回的控制數(shù)據(jù)轉發(fā)給串口。

      2 智慧農(nóng)業(yè)軟件設計與實現(xiàn)

      2.1 設計流程

      該系統(tǒng)運用手機APP方式進行控制。APP設計的核心功能包含設置閾值、查看數(shù)據(jù)、模式控制和報警處理。APP開發(fā)流程圖如圖1所示。

      圖1 APP開發(fā)流程圖

      2.2 APP開發(fā)

      2.2.1 界面布局設計

      圖2是該APP的登錄注冊頁面,該頁面采用了本地記住密碼功能,當用戶選擇記住密碼后,在該移動設備上再次登錄,便可以不用再繼續(xù)輸入用戶名和密碼,具有較強的實用性。在該頁面上,采用了同數(shù)據(jù)庫交互技術,當用戶名和密碼均存在并正確的情況下,用戶才能進行下一步,否則不能。

      圖3是一個注冊頁面,如果用戶之前在數(shù)據(jù)庫中沒有數(shù)據(jù)(即沒有賬號),在登錄頁面選擇注冊按鈕便可以進入該頁面,該頁面是對數(shù)據(jù)庫的一個插入數(shù)據(jù)過程。當用戶在該頁面填寫信息并點擊注冊按鈕后,用戶填寫的信息將實時插入到數(shù)據(jù)庫,進行更新保存,以后用戶便可以在登錄頁面使用此信息。

      圖4是用戶進入該系統(tǒng)的主要功能列表,該頁面采用list技術,將所有的主要功能排列起來,讓用戶更加方便直觀地運用該APP。該頁面上的每條記錄都對應著另一個不同的頁面。

      圖2 注冊登錄頁面

      圖3 注冊頁面

      圖5是用戶在控制列表中選擇報警管理后跳轉的頁面。在該頁面中,用戶可以直觀地看見空氣的溫度、濕度、光照和土壤濕度等是否合格,且這些參數(shù)過高或者過低,都會進行報警,提醒用戶關注當前數(shù)據(jù)。該功能和數(shù)據(jù)庫交互比較頻繁,頁面上的數(shù)據(jù)都是從數(shù)據(jù)庫中采集并進行分析計算得到的。

      圖4 系統(tǒng)主要功能列表

      圖5 報警管理跳轉頁面

      圖6是用戶在控制列表中選擇閾值設置后跳轉的頁面。在該頁面中,用戶可以根據(jù)需要設置生產(chǎn)環(huán)境中的各種參數(shù),讓系統(tǒng)使用起來更加具有延伸性。用戶在該頁面中所填寫的數(shù)據(jù),都會通過HttpServlet提供的接口傳遞到數(shù)據(jù)庫所對應的表中,進行保存和更新。

      圖7是用戶在控制列表中選擇數(shù)據(jù)查看后跳轉的頁面。在該頁面中,用戶可以實時對當前環(huán)境數(shù)據(jù)進行動態(tài)查看,在該頁面中的動態(tài)圖會顯示每一秒的數(shù)據(jù),并用動態(tài)折線圖進行顯示。該頁面采用Android的canvas動態(tài)圖技術,實時采集數(shù)據(jù)庫的數(shù)據(jù)進行顯示。

      圖6 閾值設置后跳轉頁面

      圖7 數(shù)據(jù)查看后跳轉頁面

      圖8是用戶在控制列表中選擇模式切換后跳轉的頁面。在該頁面中,用戶可以選擇該系統(tǒng)的控制方式:自動控制或手動控制。如果用戶選擇自動控制,則系統(tǒng)數(shù)據(jù)不在合格區(qū)域內(nèi),APP不會產(chǎn)生報警聲,而是通過控制執(zhí)行機構調(diào)節(jié)當前狀態(tài)。該頁采用了服務技術,只要APP在使用中,便會和服務器保持實時交互。

      圖9是用戶選擇手動控制后跳轉的頁面。在該頁面中用戶可以對硬件進行控制,即燈光和繼電器的開關等。當燈光打開或者關閉后,傳遞到數(shù)據(jù)庫,并且數(shù)據(jù)庫及時通過Socket與硬件通信,讓硬件進行操作。

      圖8 選擇模式切換后跳轉頁面

      圖9 選擇手動控制后跳轉頁面

      2.2.2 服務器設計流程

      (1) 服務器搭建、數(shù)據(jù)庫的建立

      數(shù)據(jù)得以保存和使用都是靠數(shù)據(jù)庫來進行的,設計數(shù)據(jù)庫使用MySQL技術,建立了一個user用戶,里面建立了4張表,其中一張表為用戶名和密碼表,一張表為用戶設置的環(huán)境數(shù)據(jù),一張表為燈光控制,一張表為硬件實時傳遞的當前數(shù)據(jù)。

      服務器是運用JAVA EE軟件建立的Dynamic Web Project編寫代碼。服務器模塊,一方面要通過Tag標識來和用戶APP端進行信息交互,另一方面要通過Socket與硬件進行信息交互。

      手機APP通信時,服務器是通過Tag標識識別用戶需求,當服務器識別到某一個Tag標識時,將根據(jù)需要來操作數(shù)據(jù)庫,為此,服務器必須要考慮到用戶的要求,根據(jù)需要來執(zhí)行一定的操作。所以,服務器一定要和數(shù)據(jù)庫相連接,否則,就算用戶發(fā)送了Tag標識給服務器,服務器也收到了請求,仍然不能夠操作數(shù)據(jù)庫,用戶的請求不能實現(xiàn)。

      與硬件通信時,服務器首先要建立Socket連接,并設定端口號,讓硬件能夠通過端口號識別服務器,服務器和硬件建立起連接后,開始工作。服務器讀取開發(fā)板發(fā)送過來的信息數(shù)據(jù)后,便開始進行分析和處理工作,根據(jù)事先定義好的數(shù)據(jù)通信協(xié)議分析數(shù)據(jù),并進行拆分,然后將拆分后的數(shù)據(jù)保存在之前的數(shù)據(jù)庫中;用戶查看數(shù)據(jù)時,就能得到最新的記錄。服務器完成這些工作后,將返回一些數(shù)據(jù)給硬件執(zhí)行機構。同理,服務器也將要發(fā)送的數(shù)據(jù)進行處理,處理成硬件能夠識別的信息,返回給硬件執(zhí)行機構。

      (2) 服務器和MySQL連接,并建立相應的數(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í)行查詢操作,返回查詢結果(結果集對象)

      ResultSet rs = ptst.executeQuery();

      //判斷結果集是否有數(shù)據(jù),有則返回true

      return rs.next();

      catch (SQLException e) {

      e.printStackTrace();

      } finally {//關閉連接

      DBUtils.free(conn, null, null);}

      (3) 與APP交互

      服務器與APP通信,通過Servlet實現(xiàn)。主要是APP對服務器發(fā)送讀取數(shù)據(jù)請求,而不是服務器主動發(fā)送數(shù)據(jù)給APP。如此,可以減輕服務器的壓力,讓系統(tǒng)更實用。

      (4) 與上位機交互

      硬件系統(tǒng)發(fā)送的數(shù)據(jù)流是字節(jié),并且不方便識別,要想將其變?yōu)橐鬃x取數(shù)據(jù),需要通過字符串截取技術進行解析,并通過數(shù)組分別保存。

      硬件系統(tǒng)發(fā)送的數(shù)據(jù)流是開發(fā)者自定義的。該數(shù)據(jù)有多少位,每一位代表什么,在需求階段就要確定。因此,在服務器和上位機通信時,對數(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 上位機設計

      (1) 基本框架建立

      服務器與硬件連接是通過上位機來實現(xiàn)的。所謂上位機,本質(zhì)是一段JAVA程序代碼,主要功能是讀取硬件傳遞過來的數(shù)據(jù)并發(fā)送給服務器,同時將服務器發(fā)送給硬件的控制命令傳遞給硬件系統(tǒng),讓其作出相應操作。

      (2) 自定義數(shù)據(jù)格式

      public String Bytes2HexString(byte[] b){

      //將byte數(shù)組轉換為16進制數(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

      猜你喜歡
      手動上位串口
      淺談AB PLC串口跟RFID傳感器的通訊應用
      特斯拉 風云之老阿姨上位
      車迷(2018年12期)2018-07-26 00:42:22
      小巧手動起來
      “三扶”齊上位 決戰(zhàn)必打贏
      基于ZigBee和VC上位機的教室智能監(jiān)測管理系統(tǒng)
      風行S5001.6L手動尊享型
      世界汽車(2016年8期)2016-09-28 12:09:43
      寶駿5601.8L手動豪華型
      世界汽車(2016年8期)2016-09-28 12:09:00
      C4世嘉 1.6L手動豪華型
      世界汽車(2016年8期)2016-09-28 12:06:49
      USB接口的多串口數(shù)據(jù)并行接收方法探索
      基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
      地礦測繪(2015年3期)2015-12-22 06:27:26
      綦江县| 囊谦县| 土默特右旗| 渝中区| 瑞昌市| 白城市| 商水县| 县级市| 崇左市| 禹州市| 香港 | 三穗县| 天等县| 双流县| 尼勒克县| 峨山| 崇义县| 博野县| 崇仁县| 衢州市| 临泉县| 万宁市| 谷城县| 桐庐县| 连平县| 宣武区| 霞浦县| 砀山县| 剑河县| 金坛市| 祁连县| 玛曲县| 东安县| 淮阳县| 九寨沟县| 新巴尔虎右旗| 滕州市| 额尔古纳市| 巨鹿县| 南郑县| 桂东县|