余 夢,李慧敏
(東華大學 機械工程學院,上海 201620)
近年來,隨著社會的發(fā)展,科技的進步,人們的生活質(zhì)量有了很大提升,大型超市日益增多,市場上對于制冷壓縮機的需求量也逐漸增加。為了提高服務質(zhì)量,冷鏈節(jié)能設備企業(yè)逐漸開始重視對制冷壓縮機運行情況的監(jiān)測。
傳統(tǒng)的監(jiān)測方式主要依靠技術人員親臨現(xiàn)場,對制冷壓縮機的運行參數(shù)進行采集,然而這種人工監(jiān)測的方式已經(jīng)不能滿足現(xiàn)代企業(yè)的需求。同時,企業(yè)的設備維護人員在現(xiàn)場進行調(diào)試時,無法方便、有效地查看設備運行情況。對此,有必要開發(fā)設計一種基于移動終端的無線數(shù)據(jù)監(jiān)測系統(tǒng)。該系統(tǒng)不僅能移動、便攜地實現(xiàn)各項數(shù)據(jù)的監(jiān)測,減少監(jiān)測人員的工作量,而且便于對分散的超市冷鏈系統(tǒng)實現(xiàn)集中化管理,并能及時預警,提高系統(tǒng)的安全性。
在移動終端普及度極高的今天,手機或平板電腦上網(wǎng)已經(jīng)成為人們生活的一部分。Android由于其開源、市場占有率高等優(yōu)勢成為移動端軟件開發(fā)的熱門平臺[1]。在此,利用Android平臺推出的SDK,藍牙傳輸技術、Tomcat服務器和SQL Server數(shù)據(jù)庫,進行超市冷鏈設備數(shù)據(jù)監(jiān)測系統(tǒng)的開發(fā),實現(xiàn)數(shù)據(jù)的遠程監(jiān)控、信息管理和藍牙現(xiàn)場調(diào)試等功能。
圖 1 超市冷鏈設備數(shù)據(jù)監(jiān)測系統(tǒng)總體架構(gòu)Fig.1 Overall structure of supermarket cold chain equipment data monitoring system
圖3 各模塊界面Fig.3 Interface of each module
基于Android的超市冷鏈設備數(shù)據(jù)監(jiān)測系統(tǒng)總體架如圖1所示。該系統(tǒng)由4部分構(gòu)成:Android移動終端、現(xiàn)場藍牙傳輸模塊、Tomcat服務器和SQL Server數(shù)據(jù)庫。
現(xiàn)場調(diào)試模式下,Android移動終端通過調(diào)用藍牙串口,與現(xiàn)場藍牙模塊進行配對,使用Socket連接來進行數(shù)據(jù)傳輸,主要用于維護人員進行現(xiàn)場調(diào)試,也可實現(xiàn)監(jiān)測人員由無線網(wǎng)絡切換為藍牙進行現(xiàn)場實時監(jiān)測。
遠程監(jiān)控模式下,系統(tǒng)采用C/S架構(gòu),Android移動終端通過HTTP協(xié)議和服務器進行通信,Tomcat服務器通過JDBC——一種用于執(zhí)行SQL語句的Java API——連接數(shù)據(jù)庫,對數(shù)據(jù)庫進行增刪查改等操作[2],SQL Server數(shù)據(jù)庫存儲著從下位機發(fā)送來的超市冷鏈設備各項數(shù)據(jù)和用戶信息。當用戶遠程手持Android移動終端,通過前臺APP進行相關操作,移動終端便可通過HTTP協(xié)議與后臺服務器建立連接,連接建立后前臺發(fā)送請求,服務器響應請求,通過JDBC對數(shù)據(jù)庫進行增刪查改等操作,并返回相關數(shù)據(jù)到前臺移動終端,將結(jié)果顯示在APP界面上。
該監(jiān)測系統(tǒng)前臺客戶端共有10大模塊,如圖2所示。
前臺客戶端的信息管理、實時數(shù)據(jù)監(jiān)測、現(xiàn)場藍牙實時數(shù)據(jù)、硬件調(diào)試等模塊的界面如圖3所示。
客戶端應用程序啟動后,顯示用戶登錄界面,當用戶輸入正確的用戶名和密碼后,即可進入主界面。該界面有門店選擇模塊、用戶管理模塊和現(xiàn)場藍牙調(diào)試模塊可供選擇。在門店選擇界面中,當用戶選擇了城市之后,可看到該城市的所有門店,此時用戶可通過點擊任意門店,進入相應門店的實時數(shù)據(jù)監(jiān)測模塊和歷史數(shù)據(jù)查詢模塊。在其實時數(shù)據(jù)監(jiān)測模塊中,用戶可監(jiān)測到壓力值、電能值、開關、繼電器和報警燈的實時數(shù)據(jù)與狀態(tài);在歷史數(shù)據(jù)查詢模塊中,用戶還可以通過選擇日期和器件來查看該元器件當日的所有歷史數(shù)據(jù)。
在用戶管理界面中,用戶可進行注冊用戶和查詢用戶信息的操作。在注冊用戶界面,管理人員可以注冊新員工(或門店)的姓名(門店名稱)、部門(門店地址)、電話、郵箱、賬戶、密碼等信息,提交之后存儲到數(shù)據(jù)庫中;在信息查詢界面,企業(yè)管理人員可以查詢所有員工和門店的相關信息。
在現(xiàn)場藍牙調(diào)試模塊中,用戶可以打開藍牙,選擇掃描到的附近藍牙設備進行配對。配對成功后,用戶可以進入該藍牙設備所在的超市門店實時數(shù)據(jù)監(jiān)測界面和硬件調(diào)試界面。在實時數(shù)據(jù)監(jiān)測界面中,用戶可以下拉刷新界面,監(jiān)測到當前現(xiàn)場設備的最新實時數(shù)據(jù),便于設備維護人員了解設備的運行情況;在硬件調(diào)試界面,維護人員可以通過藍牙來設置硬件的各項參數(shù)。同時,現(xiàn)場用戶可將界面跳轉(zhuǎn)至藍牙調(diào)試模塊界面,進行配對連接,配對成功后,數(shù)據(jù)傳輸方式由無線網(wǎng)絡傳輸轉(zhuǎn)換為藍牙傳輸,用戶可以監(jiān)測到當下實時的數(shù)據(jù),減少了遠程監(jiān)控模式下由于時間差導致的數(shù)據(jù)誤差。
圖4 遠程監(jiān)控流程Fig.4 Remote monitoring flow chart
遠程監(jiān)控的流程如圖4所示。前臺客戶端的任意遠程監(jiān)控activity打開后,先初始化控件,顯示界面布局。當客戶端接收到點擊事件后,隨即向服務器端發(fā)送請求,如果請求成功則接收服務器端的響應,獲取到JSON格式的數(shù)據(jù),然后客戶端再解析JSON數(shù)據(jù),并將數(shù)據(jù)顯示在界面中;如果請求服務器失敗則回復客戶端請求失敗的信息,提醒用戶。
設計中,采用HTTP協(xié)議以實現(xiàn)Android客戶端與后臺服務器的通信,選用HttpURLConnection方式發(fā)送POST請求。具體步驟如下:
步驟1創(chuàng)建1個URL,知道連接服務器的地址。
步驟2 設置HTTP協(xié)議的內(nèi)容。
步驟3 使用流寫入內(nèi)容。
步驟4 獲取響應的輸入流。
要使用Android客戶端的網(wǎng)絡功能,必須在AndroidManifest.xml文件中增加訪問互聯(lián)網(wǎng)的權(quán)限[3],其代碼如下:
由于Android程序不允許在主線程中訪問網(wǎng)絡,所以必須開啟1個子線程,在子線程中實現(xiàn)客戶端與后臺的通信。開啟子線程的方法是:在主程序中創(chuàng)建Thread對象,然后調(diào)用Thread類的start方法啟動。
系統(tǒng)后臺服務器的流程如圖5所示。服務器開啟后,等待前臺客戶端的連接,當有請求到達后,服務器端設置編碼格式,接收用戶請求,隨即連接數(shù)據(jù)庫,根據(jù)請求操作數(shù)據(jù)庫,最后獲取數(shù)據(jù),響應用戶請求。
圖5 后臺服務器流程Fig.5 Background server flow chart
系統(tǒng)選用Tomcat作為服務器,在eclipse軟件上進行程序的編寫。服務器主要實現(xiàn)與客戶端的交互,以及對數(shù)據(jù)庫的增刪查改等操作。為了使與客戶端交互的數(shù)據(jù)傳輸效率更高,系統(tǒng)采用了JSON格式的數(shù)據(jù),Android提供JSON的API,故使用起來非常方便。
服務器程序包的構(gòu)成如下:①Dao包 對數(shù)據(jù)庫的操作類即增刪查改等;②DBUtil包 用于連接數(shù)據(jù)庫;③entity包 封裝了數(shù)據(jù)表的實體類;④JsonUtil包 將數(shù)據(jù)轉(zhuǎn)換成JSON格式;⑤servlet包實現(xiàn)服務器與數(shù)據(jù)庫的交互;⑥D(zhuǎn)BConfig.Properties包含SQL Server數(shù)據(jù)庫的JDBC驅(qū)動、數(shù)據(jù)庫URL、數(shù)據(jù)庫的用戶名和密碼。
服務器通過request.getParameter()獲取客戶端請求參數(shù),response.getOutputStream()響應客戶端內(nèi)容。
連接數(shù)據(jù)庫的部分關鍵程序如下:
數(shù)據(jù)庫采用了Microsoft SQL Server 2008數(shù)據(jù)管理系統(tǒng),其主要功能是存儲并管理超市冷鏈設備遠程實時監(jiān)測系統(tǒng)的相關數(shù)據(jù)。根據(jù)功能需求,數(shù)據(jù)庫需要建立1張用戶信息表、1張城市門店表、n張門店數(shù)據(jù)表。用戶信息表包含了門店和員工的具體信息;城市門店表包含各個城市的所有門店;門店數(shù)據(jù)表則包含該門店冷鏈設備的所有監(jiān)測數(shù)據(jù)。
門店數(shù)據(jù)表的結(jié)構(gòu)見表1。
表1 門店數(shù)據(jù)表結(jié)構(gòu)Tab.1 Structure of store data
系統(tǒng)服務器應用程序與后臺數(shù)據(jù)的鏈接采用JDBC接口。它由1組用Java語言編寫的類和接口組成,提供了標準API,可向相應數(shù)據(jù)庫發(fā)送SQL調(diào)用[5]。系統(tǒng)中DBUtil包用于連接數(shù)據(jù)庫。
現(xiàn)場藍牙監(jiān)控流程如圖6所示。進入藍牙監(jiān)控界面后,先判斷移動端藍牙是否開啟,如果沒有開啟則跳轉(zhuǎn)至打開藍牙;藍牙開啟后進行搜索配對,然后建立socket連接,如果連接失敗則顯示“連接失敗”以提醒用戶。如果連接成功則創(chuàng)建輸入流,進行數(shù)據(jù)接收與解析,并顯示到用戶界面,同時創(chuàng)建輸出流,為需發(fā)送的數(shù)據(jù)創(chuàng)建數(shù)據(jù)格式,然后發(fā)送到后臺藍牙模塊中。當用戶退出藍牙監(jiān)測界面時,斷開socket連接。
圖6 現(xiàn)場藍牙監(jiān)控流程Fig.6 Field bluetooth monitoring flow chart
Android進行藍牙開發(fā),必須在Android Manifest.xml文件中加入以下權(quán)限[4]:
基于Android的超市冷鏈設備數(shù)據(jù)監(jiān)測系統(tǒng),不僅能移動、便攜地實現(xiàn)各項數(shù)據(jù)的采集監(jiān)測,減少監(jiān)測人員的工作量,還能方便地對分散的超市冷鏈系統(tǒng)進行集中化管理,且能夠及時預警,大大提高系統(tǒng)的安全性。相較于傳統(tǒng)現(xiàn)場監(jiān)測模式,移動互聯(lián)網(wǎng)平臺下的數(shù)據(jù)監(jiān)測管理系統(tǒng),將使數(shù)據(jù)監(jiān)測變得更加便捷高效,同時利用無線藍牙通信技術進行現(xiàn)場數(shù)據(jù)監(jiān)測會使維護人員更方便、有效地進行設備的調(diào)試。
該系統(tǒng)客戶端遠程監(jiān)測通過無線互聯(lián)網(wǎng)絡,訪問系統(tǒng)Web服務器以獲取后臺數(shù)據(jù)信息,所采用的C/S結(jié)構(gòu)在較大程度上透明化數(shù)據(jù)的儲存管理功能,同時又降低了客戶端運行負荷,減少對于本機資源的占用。短距離現(xiàn)場調(diào)試通過藍牙和現(xiàn)場藍牙模塊進行數(shù)據(jù)通信,可以獲取當下實時的數(shù)據(jù),減少了遠程監(jiān)測由于時間差造成的數(shù)據(jù)誤差,極大地方便了維護人員的調(diào)試工作。系統(tǒng)運行穩(wěn)定可靠,且不需高昂的建設和維護成本,非常適用于企業(yè)管理人員對于超市冷鏈設備數(shù)據(jù)的監(jiān)測和管理。
[1]孫麗娟.基于Android的物聯(lián)網(wǎng)數(shù)據(jù)采集監(jiān)測系統(tǒng)開發(fā)[D].南京:南京理工大學,2016.
[2]劉勝前,陳立定.基于Android平臺的車輛導航系統(tǒng)設計與實現(xiàn)[J].自動化與儀表,2012,27(4):1-4.
[3]于嘯天.基于Android+Java EE的設備監(jiān)測和臺站設備信息管理系統(tǒng)[D].石家莊:河北師范大學,2014.
[4]侯新琦,李佳.基于Android藍牙通訊的研究[J].電子世界,2012,34(11):84-85.
[5]宋恒力.基于Android平臺與Web服務器的課程管理信息系統(tǒng)[J].電子技術,2014,43(12):59-63.