《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Android的水產(chǎn)物聯(lián)服務系統(tǒng)設計與開發(fā)
基于Android的水產(chǎn)物聯(lián)服務系統(tǒng)設計與開發(fā)
來源:電子技術應用2014年第1期
馬曉飛1, 袁永明1,2, 張紅燕2,, 陳浩成1,, 劉彥娜1
1. 南京農(nóng)業(yè)大學 漁業(yè)學院,江蘇 無錫 214081;2. 中國水產(chǎn)科學研究院淡水漁業(yè)中心 國家羅非魚產(chǎn)業(yè)技術研發(fā)中心農(nóng)業(yè)部淡水漁業(yè)和種質資源利用重點實驗室,,江蘇 無錫 214081
摘要: 設計開發(fā)了基于Android平臺的水產(chǎn)物聯(lián)服務系統(tǒng)客戶端,通過分析水產(chǎn)物聯(lián)服務系統(tǒng)客戶端的需求, 提出系統(tǒng)設計思想及實現(xiàn)方法。介紹了系統(tǒng)客戶端在線監(jiān)測和遠程控制功能的實現(xiàn)方法和步驟,完成客戶端軟件的設計與開發(fā),,實現(xiàn)了水產(chǎn)物聯(lián)服務系統(tǒng)客戶端的功能和需求。
中圖分類號: TP311
文獻標識碼: A
文章編號: 0258-7998(2014)01-0137-04
Design and development of aquaculture internet things service system based on Android
Ma Xiaofei1,,Yuan Yongming1,2,, Zhang Hongyan2, Chen Haocheng1, Liu Yanna1
1. Fisherise College,Nanjing Agricultural University,Wuxi 214081, China;2. Key Laboratory of Freshwater Fisheries and Germplasm Resources Utilization of Ministry of Agriculture, Tilapia industrial Research Center of China Agriculture Research System(CARS49), Freshwater Fisherise Reserch Center of Chinese Academy of Fishery Sciences, Wuxi 214081, China
Abstract: This paper designed and developed the client of Aquaculture internet things service system based on Android, analyzed the demand for the system,proposed the design ideas and implementation of the client. The implementation and measures of main functions for the client,such as online monitoring and remote control, are introduced. Completed the application design and development, achieved the functions and needs of aquaculture internet things service system based on Android.
Key words : aquaculture; internet things service; online monitoring; remote control

    Android是一個開放性的開發(fā)平臺,由Google公司和開放手機聯(lián)盟開發(fā),基于Linux的自由及開放源代碼的操作系統(tǒng)[1],。主要應用于移動設備,,如智能手機和平板電腦。Android的系統(tǒng)架構主要分為應用程序層,、應用程序框架層,、系統(tǒng)運行庫層和Linux內核層。
   水產(chǎn)物聯(lián)服務系統(tǒng)AITSS(Aquaculture Internet Things Service System)是一個面向水產(chǎn)養(yǎng)殖行業(yè),,應用現(xiàn)代物聯(lián)技術[2]集成行業(yè)業(yè)務處理應用系統(tǒng)的服務平臺,。系統(tǒng)采用自然語言與計算機語言相融合的方法,使用豐富的命令集(管理命令,、用戶命令,、開發(fā)命令和短信命令),實現(xiàn)人-物-物之間的信息交流,。系統(tǒng)的語音,、視頻、短信、傳感,、監(jiān)控等服務不受硬件,、通信協(xié)議及方式的限制,集成的行業(yè)業(yè)務處理應用系統(tǒng)運行穩(wěn)定,、維護簡單,、更新方便、擴展靈活,。
   本文基于Android平臺,,設計并開發(fā)了水產(chǎn)物聯(lián)服務系統(tǒng)Android手機客戶端(AITSS for Android),將在線監(jiān)測,、遠程控制,、設備遠程維護等功能集成于本應用軟件。
1 系統(tǒng)設計
    根據(jù)用戶需求,,系統(tǒng)能夠完成在線監(jiān)測,、遠程控制、設備管理,、參數(shù)設置,、外觀選擇等功能。系統(tǒng)功能結構如圖1所示,。

 (1)在線監(jiān)測:在線監(jiān)測主要完成系統(tǒng)中所有管理區(qū)監(jiān)測設備(傳感器)的管理操作,,包括設備開啟或關閉、查看設備運行狀態(tài),、監(jiān)測指標及監(jiān)測值等,。
    (2)遠程控制:遠程控制主要完成系統(tǒng)中所有管理區(qū)控制設備(控制器)的管理操作,包括設備的開啟或關閉,、查看設備運行狀態(tài),、設定控制設備的工作方式(控制模式)等。
  (3)設備管理:設備管理主要完成水產(chǎn)物聯(lián)服務系統(tǒng)支持的系統(tǒng)成員的管理操作,,主要包括系統(tǒng)成員的添加,、刪除、查詢,、系統(tǒng)作業(yè)的配置等,。
    (4)參數(shù)設置:參數(shù)設置主要完成服務器地址、端口號和系統(tǒng)刷新頻率的設置,。
    (5)外觀選擇:用于為用戶提供個性化的系統(tǒng)界面配色方案和外觀選擇。
2 開發(fā)環(huán)境
    水產(chǎn)物聯(lián)服務系統(tǒng)的服務器操作系統(tǒng)使用FreeBSD進行系統(tǒng)管理,,使用MySQL 5.0數(shù)據(jù)庫進行數(shù)據(jù)和配置的存儲,。手機客戶端與AITSS交互流程如圖2所示。

    在安裝有Windows操作系統(tǒng)的PC機進行Android開發(fā)環(huán)境的搭建[1],需要Oracle公司的Java SE JDK和Java運行環(huán)境(Java Runtime Environment),,Eclipse IDE和Android SDK,。
 開發(fā)環(huán)境如下:
 JAVA SE JDK:Java version 1.7.0_25;Java SE Runtime Envitonment <build 1.7.0_25-b16>,。
    Eclipse IDE:Eclipse Java IDE for Web Developers. Indigo Service Release 2,。
    Android SDK:Android 2.3.3(API 10)。
3 系統(tǒng)實現(xiàn)
3.1 網(wǎng)絡連接

    使用Android3.0及以上版本訪問WebService會出現(xiàn)android.os.NetworkOnMainThreadException的問題[3],通過在Activity類添加onCreate( )方法中添加Strict代碼解決,。核心代碼如下:
        //解決Android3.0以上版本的Socket連接問題
        StrictMode.setThreadPolicy(new StrictMode
         .Threadpolicy.builder().detectDiskReads()
        .detectDiskWrites().detectDiskNetwork()
              .penaltyLog().build());
        StrictMode.setVmPolicy(new StrictMode
              .VmPolicy.builder().detectLeakedSqlLite
              Objects().penaltyLog().penaltyDeath()
              .build());
3.2 在線監(jiān)測
    實現(xiàn)在線監(jiān)測功能需要解決監(jiān)測設備獲取,、監(jiān)測數(shù)據(jù)獲取和繪制監(jiān)測曲線等系統(tǒng)需求。
3.2.1 獲取監(jiān)測設備
 本程序在單獨線程中獲取水產(chǎn)物聯(lián)服務系統(tǒng),服務器端已完成配置的監(jiān)測地點和監(jiān)測設備詳情,。根據(jù)Socket的返回值使用Android提供的ListView()組件顯示獲取到的信息,。在處理Socket時,使用singleton模式[4](單例模式)獲取SocketHelper,,代碼如下:
    syncharonized(synObj){
          if(socketHelper == null) {
             socketHelper = new SocketHelper(context);
         }
    }
    根據(jù)Socket返回值顯示加載有監(jiān)測地點和設備信息的彈出窗口popupwindow時,,需要將其setFocusable屬性設置為true,否則無法獲取到彈出窗口里的焦點,,由此導致彈出窗口中可能存在輸入框等控件無法輸入,。
3.2.2 獲取監(jiān)測數(shù)據(jù)
     傳感設備監(jiān)測到的環(huán)境數(shù)據(jù)會通過數(shù)傳設備實時傳輸并儲存在服務器端。在使用手機客戶端進行在線監(jiān)測時,,需要使用monitorDataHandler( )方法對服務器端的數(shù)據(jù)進行實時獲取,,代碼如下:
       //獲取每行監(jiān)測數(shù)據(jù)(格式為373737:34.44[時間整數(shù):監(jiān)測數(shù)據(jù)值])
     String[] md = infos[i].split(Constants
         .Command.COMMAND_SEPARATOR);
     if (&ldquo;&rdquo;.equals(md[0].trim()))
          continue;
     date = MathHelper.getLong(md[0],0) * 1000;
     value = MathHelper.round(Float.valueOf(md[1]),3);
     series.addData(date,value);
     實時獲取到的監(jiān)測數(shù)據(jù)將在監(jiān)測顯示容器TextView( )組件中進行顯示和實時更新。
3.2.3 監(jiān)測曲線繪制
    為便于用戶查看一定時間段內的監(jiān)測指標變化趨勢,,設計開發(fā)了監(jiān)測曲線繪制功能,。
    監(jiān)測曲線的橫軸為實時時間參數(shù),表示服務器端獲取到該監(jiān)測值的時間點,,橫軸刻度根據(jù)時間變化實時更新,,監(jiān)測曲線的為使用監(jiān)測值,表示對應時間點的監(jiān)測指標值,;縱軸使用動態(tài)坐標,,根據(jù)當前數(shù)據(jù)的最大最小值進行自動調節(jié),并在最大最小值相等時根據(jù)數(shù)據(jù)精度進行上下縮放,。
    使用Android提供的TextView( )組件作為曲線顯示容器,,定義并使用drawLine(Canvas canvas)函數(shù)進行曲線繪制,關鍵代碼如下:
    canvas.drawPoint(mChartRect.left,mChart.bottom - y0,this.mSeriesPaint);
    canvas.drawLine(mChartRect.left + x0 *
         mXSrawUnit, mChartRect.bottom - y0,
         mChartRect.left+x1* mXDrawUnit,
         mChartRect.bottom-y1, mSeriesPaint);
3.3 遠程控制
    遠程控制主要對用于水產(chǎn)養(yǎng)殖生產(chǎn)的自動化設備進行遠程控制,。設備控制模式根據(jù)生產(chǎn)需要分為人工控制,、定時控制和自動控制三種。
3.3.1 選擇控制模式
    系統(tǒng)根據(jù)用戶的需要,,設計開發(fā)了三種控制模式:(1)人工模式,,滿足用戶隨時隨地控制設備的需求,;(2)定時模式,通過設置時間隊列,,滿足設備定時控制,;(3)自動模式,結合水產(chǎn)養(yǎng)殖專家系統(tǒng),,進行智能化決策及設備控制,。在遠程控制界面,選擇不同控制模式,,顯示不同視圖View( ),。選擇人工模式時,切換控制模式顯示視圖的代碼如下:
     case R.id.chkManualControl:
     startContent.setVisibility(Constants.Visibility.GONE);
     endContent.setVisibility(Constants.Visibility.GONE);
     break;
3.3.2 獲取設備狀態(tài)
    準確獲取設備當前狀態(tài)是進行設備遠程控制的重要前提,。本程序定義設備狀態(tài)變量devState為一個可進行滑動操作的SlipButton對象[5],。賦值代碼為:
    devState=(SlipButton)findViewById
                     (R.id.devstate)
    獲取設備狀態(tài)代碼如下:
       float open = MathHelper.getFloat(dev[1],0);
       devState.setCheck(open>0);
       paraZone.setVisibility(Constants.Visibility.VISIBLE);
3.3.3 定時控制
    定時本文控制的原理是用戶根據(jù)需要自主設定改變控制設備狀態(tài)的起止時間點。如當前增氧機狀態(tài)為開啟,,用戶可以根據(jù)需要,,設定在某一時間點將增氧機狀態(tài)更改為關閉,并在另一時間點再次開啟增氧機,。關鍵代碼為:
        String mode= oprMode==0?&rdquo;auto&rdquo;:(devdate
                  .isChecked()?&rdquo;on&rdquo;:&rdquo;off&rdquo;)
        try{
           String b= startTime.getText().toString();
           long beginTime =DateHelper.convert2long(b,
                    &ldquo;yyyy-MM-dd HH:mm&rdquo;);
           begin =(int)(beginTime- currentTime);
        }
4 試驗與結果分析
 使用設計并開發(fā)的客戶端程序,,進行基于Android平臺的水產(chǎn)物聯(lián)服務系統(tǒng)的應用試驗。本實例使用安裝有Android4.0.3版本的手機,,在CDMA2000的3G網(wǎng)絡環(huán)境進行,。
    軟件使用流程為:打開應用程序,輸入用戶名和密碼,,以默認服務器地址和端口號登錄,;手機根據(jù)用戶的手勢指令將信息發(fā)送到服務器,并將解析后的信息及時回送到手機端,,經(jīng)應用程序處理后顯示在手機上,。用戶可以實時管理監(jiān)測設備,查看實時監(jiān)測數(shù)據(jù)和指標變化曲線,;通過遠程控制命令進行設備的人工開啟和關閉,、定時開啟和關閉,也可連接到專家系統(tǒng)使用自動智能控制模式[6],。系統(tǒng)應用實例如圖3,、圖4所示。

 

 

    程序的開發(fā)和應用實驗證明,,客戶端軟件能夠完成與服務器端水產(chǎn)物聯(lián)服務系統(tǒng)的交互,,實現(xiàn)水產(chǎn)養(yǎng)殖環(huán)境的在線監(jiān)測和水產(chǎn)養(yǎng)殖生產(chǎn)設備的遠程控制。由于Android平臺對硬件配置的適應性和平臺的開放性,,用戶可以將已有視頻監(jiān)控設備移植到客戶端中,,實現(xiàn)真正的實時在線監(jiān)控[7],。基于Android平臺的客戶端程序易于獲取,,通過網(wǎng)絡即可方便地下載安裝,享受物聯(lián)服務,。
    本文基于Android平臺,,結合水產(chǎn)養(yǎng)殖行業(yè)所需的環(huán)境監(jiān)測指標和生產(chǎn)設備,設計開發(fā)了一個開放式的智能手機客戶端平臺,。該客戶端平臺與物聯(lián)服務系統(tǒng)服務器進行交互,,起到信息展示和發(fā)布的作用,而信息的處理和存儲皆由物聯(lián)服務系統(tǒng)完成,。還可以根據(jù)用戶的不同需求配置不同的傳感監(jiān)測設備和控制設備,,將該客戶端應用于其他行業(yè), 設計出適用于各個領域的物聯(lián)服務系統(tǒng),。
 此方案可以有效降低系統(tǒng)開發(fā)成本,,延長系統(tǒng)存活周期,具有靈活,、高效,、可擴展的特性,應用前景較好,。
參考文獻
[1] JACKSON W. Android apps for absolute beginners[M]. New York City:Apress,2011.
[2] 孫其博,劉杰,黎羴,等. 物聯(lián)網(wǎng):概念,、架構與關鍵技術研究綜述[J].北京郵電大學學報,2010,33(3):1-9.
[3] 鄧蕊.基于Android的視頻監(jiān)控的研究與實現(xiàn)[D].西安:西安電子科技大學,2012.
[4] SHALLOWAY A, TROTT J R.設計模式解析[M].徐言聲譯.北京:人民郵電出版社,2006.
[5] 鄭云卿,黃琦.基于Android平臺的軟件自動化監(jiān)控工具的設計開發(fā)[J].計算機應用與軟件,2013,30(2):235-238.
[6] 江燕良.基于Android智能終端的遠程控制系統(tǒng)[J].電子技術應用,2012,38(8):129-132.
[7] 李昂,宋海聲,蘇小蕓. 基于Android的視頻監(jiān)控系統(tǒng)設計與實現(xiàn)[J].電子技術應用,2012,38(7):138-143.

此內容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載,。