齊保良,孫 敏,季從宏,王 旭,藺玉璞,孫 悅
(山東建筑大學(xué) 信息與電氣工程學(xué)院,濟南 250101)
近年來,隨著社會經(jīng)濟的快速發(fā)展,城市中的中高層住宅小區(qū)大量出現(xiàn),電梯已成為必不可少的垂直交通運輸設(shè)備,為人們的日常生活提供了便利.目前電梯控制方式靈活,多采用分布式控制和監(jiān)控中心集中監(jiān)控的控制方式[1,2],但在電梯呼梯方面存在一些問題,首先電梯呼梯方式較為單一,一般采用電梯廳按鍵呼梯的方式,并且電梯轎廂運行位置只能在候梯廳實時顯示,乘坐人員在手動按動按鈕后,還要等待電梯.其次由于無法預(yù)判轎廂內(nèi)外人員狀況,在高峰擁擠時,容易造成候梯廳擁堵,出現(xiàn)“中國式乘梯”的現(xiàn)象[3].同時隨著Android智能手機普及,各行各業(yè)都通過智能終端設(shè)備提升自身服務(wù)質(zhì)量,由于Android有著移動性好、數(shù)據(jù)通信便捷、自身具有運算能力等特點,將智能手機應(yīng)用到電梯遠程呼梯系統(tǒng)中,可以實現(xiàn)電梯數(shù)據(jù)的監(jiān)控,真正意義上實現(xiàn)信息化、智能化管理.目前針對電梯遠程監(jiān)控存在的弊端,文獻[4]通過電梯的遠程監(jiān)控的方式,讓維保人員實時了解電梯動態(tài),保障電梯安全可靠,但普通用戶無法觀測電梯運行位置.文獻[5]只實現(xiàn)了對電梯進行遠程呼梯的設(shè)計,但并未對乘候人數(shù)檢測進行研究.
本文為實現(xiàn)遠程可預(yù)約呼梯功能,采用具有跨平臺性、面向?qū)ο笈c開放性的Java語言[6],設(shè)計了一款集電梯運行情況查詢、載客運行優(yōu)化與遠程呼梯為一體的手機App電梯預(yù)約系統(tǒng),系統(tǒng)實現(xiàn)了遠程觀察轎廂內(nèi)外人員擁擠情況、遠程呼梯的功能,能夠減少候梯時間,疏導(dǎo)高峰期電梯使用人群,提高電梯的利用率.
該系統(tǒng)主要由現(xiàn)場設(shè)備、數(shù)據(jù)采集控制終端、服務(wù)器和遠程客戶端組成.系統(tǒng)結(jié)構(gòu)框圖如圖1所示.現(xiàn)場設(shè)備包括電梯控制柜和攝像頭模塊,電梯控制柜主要完成對電梯運行參數(shù)檢測與控制,作為數(shù)據(jù)信息的源頭;數(shù)據(jù)采集控制終端采集電梯數(shù)據(jù)和圖像信息打包并上傳服務(wù)器;用戶通過客戶端遠程訪問服務(wù)器,實時獲得電梯運行狀態(tài)數(shù)據(jù)和乘候梯圖像信息,在確認當前電梯符合自己的使用要求時,電梯用戶在客戶端上輸入自己當前所在樓層位置與預(yù)期的電梯運行方向.服務(wù)器對APP數(shù)據(jù)請求進行匯總,向電梯控制柜發(fā)送控制命令,并將電梯轎廂內(nèi)外圖像與電梯運行數(shù)據(jù)回傳給客戶端,最終實現(xiàn)電梯遠程預(yù)約.
整個系統(tǒng)的工作流程分為三部分:
(1)電梯數(shù)據(jù)和圖像信息的采集與上傳
其中電梯運行狀態(tài)數(shù)據(jù)通過RS485總線傳輸?shù)綌?shù)據(jù)采集控制終端,轎廂內(nèi)外的乘候梯圖像信息通過網(wǎng)絡(luò)線的TCP/IP協(xié)議進行傳輸.數(shù)據(jù)采集控制終端分析處理采集到的數(shù)據(jù)(包括電梯運行狀態(tài)信號處理和圖像信息的編碼和壓縮),主處理芯片按照預(yù)先設(shè)定好的通信協(xié)議對數(shù)據(jù)進行封裝打包并通過網(wǎng)絡(luò)的TCP/IP協(xié)議發(fā)送給服務(wù)器,服務(wù)器通過網(wǎng)絡(luò)線接入Internet網(wǎng)絡(luò),接收數(shù)據(jù)并將數(shù)據(jù)保存在數(shù)據(jù)庫中,實時更新數(shù)據(jù),完成數(shù)據(jù)的傳輸.
(2)用戶查詢指令和呼梯指令的下達
用戶指令的下達是通過客戶端完成的,手機客戶端通過移動互聯(lián)網(wǎng)轉(zhuǎn)接到Internet網(wǎng)絡(luò),實現(xiàn)客戶端到服務(wù)器間的通信.用戶通過客戶端提交控制指令到服務(wù)器后,服務(wù)器的Servlet組件接收指令并解析指令類型,若為查詢指令,服務(wù)器通過JDBC組件調(diào)取數(shù)據(jù)庫里的數(shù)據(jù)信息,并將數(shù)據(jù)打包成JSON格式數(shù)據(jù)返回客戶端,客戶端進行解析并顯示;若為呼梯指令,則首先將指令要求寫入數(shù)據(jù)庫對應(yīng)數(shù)據(jù)表中.
(3)電梯響應(yīng)處理呼梯命令
服務(wù)器完成數(shù)據(jù)處理后,將數(shù)據(jù)打包發(fā)送給數(shù)據(jù)采集控制終端,數(shù)據(jù)采集控制終端根據(jù)控制命令實現(xiàn)對電梯控制柜的控制,最終點亮候梯廳轎廂外的呼梯按鈕,完成遠程呼梯.
數(shù)據(jù)采集控制終端采集的數(shù)據(jù)包括視頻圖像信息和電梯的運行狀態(tài)數(shù)據(jù)(上行、下行、所在樓層位置),硬件結(jié)構(gòu)圖如圖2所示.數(shù)據(jù)采集控制電路主要實現(xiàn)對外圍其他設(shè)備的控制,本文采用基于ARM920T內(nèi)核的嵌入式微處理器S3C2440A作為核心,該芯片的處理速度快、低功耗以及內(nèi)存大,同時該芯片具有RS485模塊、網(wǎng)口模塊、USB模塊和專用攝像頭接口,接口類型豐富[7].控制終端硬件主要由電源模塊、RS485與以太網(wǎng)通信模塊、攝像頭接口、存儲模塊組成.數(shù)據(jù)采集控制終端采用5 V的開關(guān)電源供電,通過電源轉(zhuǎn)換電路將5 V的電源轉(zhuǎn)換成2路3.3 V的直流電源,一路為S3C2440主控板供電,另一路為攝像頭模塊供電.通過采用隔離的方法降低2路電源電路的干擾.電梯控制柜與數(shù)據(jù)采集控制終端采用RS485串口電路連接,RS485電路采用MAX-485芯片.攝像頭通過專用攝像頭接口連接,采集模塊將采集到的圖像信息和電梯狀態(tài)數(shù)據(jù)預(yù)處理后保存在采集終端中,通信模塊通過以太網(wǎng)接口的TCP/IP協(xié)議將數(shù)據(jù)送至服務(wù)器.
本文圖像數(shù)據(jù)格式采用H.264編碼格式[8].H.264的壓縮編碼主要針對圖像數(shù)據(jù)格式為YUV420,所以本文直接選用圖像格式為YUV420的攝像頭.數(shù)據(jù)傳輸協(xié)議采用RTP/UDP[9]協(xié)議,UDP負責(zé)數(shù)據(jù)包的傳送,RTP為數(shù)據(jù)流提供時間信息,提高數(shù)據(jù)傳輸效率.
圖2 數(shù)據(jù)采集控制終端的硬件結(jié)構(gòu)圖
本文根據(jù)電梯控制柜、攝像頭與數(shù)據(jù)采集控制終端的數(shù)據(jù)傳輸?shù)奶攸c,在MODBUS與H.264圖像編碼格式的基礎(chǔ)上,制定了通信協(xié)議,電梯控制柜發(fā)送和接受的數(shù)據(jù)形式均采用十六進制.當電梯的運行狀態(tài)發(fā)生變化時,電梯控制柜自動上傳數(shù)據(jù),電梯控制柜與數(shù)據(jù)采集控制終端通信采用的數(shù)據(jù)幀格式如表1所示.
表1 電梯控制柜與數(shù)據(jù)采集控制終端通信幀格式
其中,幀頭部分0XAAAA為整個數(shù)據(jù)幀的開始,用于數(shù)據(jù)對齊并作為數(shù)據(jù)開始的標志.地址1的數(shù)據(jù)作為電梯的唯一ID號.數(shù)據(jù)1的內(nèi)容為電梯當前所在樓層數(shù).數(shù)據(jù)2表示了電梯當前的運行狀態(tài),其中最高位和次高位為00時,代表電梯正在靜止;01表示電梯正在向上運行;10代表電梯正在向下運行.另外本字節(jié)的其他位為預(yù)留位.校驗字節(jié)的內(nèi)容為前面所有字節(jié)數(shù)據(jù)(不包括幀頭)的異或結(jié)果.幀尾部分為兩個字節(jié),其內(nèi)容為固定的0X5555,用于指示數(shù)據(jù)的傳輸完成.
攝像頭模塊收到數(shù)據(jù)采集控制終端讀圖像的控制指令后,首先抓捕一幀的視屏數(shù)(像素點640×480),然后對抓取的幀數(shù)據(jù)按照H.264標準進行壓縮編碼,并添加攝像頭位置標識,最終將數(shù)據(jù)發(fā)送至服務(wù)器.圖像數(shù)據(jù)通信幀格式如表2所示.
表2 圖像數(shù)據(jù)通信幀格式
其中,圖像數(shù)據(jù)幀的幀頭部分為固定的0x0A0A,用于指示數(shù)據(jù)傳輸開始和數(shù)據(jù)對齊;地址1作為攝像機ID的唯一標識.數(shù)據(jù)1用來表示圖片拍攝的樓層數(shù),數(shù)據(jù)2用來表示轎廂內(nèi)外編號;數(shù)據(jù)3為圖像數(shù)據(jù),采用YUV420格式的640×480個像素點的圖片作為采集結(jié)果.校驗字節(jié)的內(nèi)容為前面字節(jié)數(shù)據(jù)(不包含幀頭)異或的結(jié)果,方便服務(wù)器驗證傳輸?shù)臄?shù)據(jù)的正確性與是否需要重發(fā).幀尾部分為兩個字節(jié),其內(nèi)容為固定的0X5555,用于指示數(shù)據(jù)的傳輸完成.
本系統(tǒng)采用B/S架構(gòu),主要由Android客戶端、Web服務(wù)器和數(shù)據(jù)庫三部分組成.客戶端可以實現(xiàn)電梯數(shù)據(jù)的查詢、顯示和遠程呼梯功能.Web服務(wù)器端使用Servlet技術(shù)響應(yīng)數(shù)據(jù)請求,采用Tomcat服務(wù)器作為Servlet的容器,接收請求并將響應(yīng)返回給客戶端.數(shù)據(jù)存儲分為2部分,一部分數(shù)據(jù)存儲在客戶端數(shù)據(jù)庫SQLIte中,一部分數(shù)據(jù)存儲在服務(wù)器端數(shù)據(jù)庫MySQL中,服務(wù)器訪問數(shù)據(jù)庫的數(shù)據(jù)必須通過JDBC技術(shù)實現(xiàn),調(diào)用SQL語句實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的增刪改查.
客戶端面向用戶開發(fā),在客戶端UI界面顯示的電梯圖像數(shù)據(jù)和電梯運行數(shù)據(jù),用戶能夠獲得電梯載客情況、所處樓層、每層的候梯人數(shù).用戶可根據(jù)UI界面顯示的數(shù)據(jù),選擇乘梯樓層和方向,完成電梯預(yù)約,點亮對應(yīng)樓層轎廂外的呼梯按鈕.主要包括四個模塊,分別為:注冊/登陸模塊、數(shù)據(jù)查詢顯示模塊、電梯預(yù)約模塊和黑名單模塊.
(1)注冊/登陸模塊
該模塊是構(gòu)建App系統(tǒng)的第一步,用于驗證用戶注冊/登陸的賬號信息,對用戶賬號安全起到基礎(chǔ)的保護作用.用戶注冊功能模塊通過POST方式提交用戶注冊、登陸的相關(guān)數(shù)據(jù)信息到服務(wù)器,并將注冊數(shù)據(jù)保存在數(shù)據(jù)庫中.用戶登陸模塊也同樣采用POST方式提交數(shù)據(jù)信息到服務(wù)器,服務(wù)器Servlet接口接收客戶端發(fā)來的驗證請求,比對數(shù)據(jù)庫的用戶數(shù)據(jù),根據(jù)服務(wù)器端返回的結(jié)果來判斷用戶是否登陸成功.
該模塊還具有找回密碼、更改密碼、查看/修改用戶信息的功能.
(2)數(shù)據(jù)查詢顯示模塊
該模塊了實現(xiàn)對所選電梯的相關(guān)運行數(shù)據(jù)的查詢顯示功能.在此模塊下,界面整體采用LinearLayout布局,通過Spinner下拉菜單選擇要查詢的樓層數(shù),查詢數(shù)據(jù)的加載需要根據(jù)服務(wù)器提供的API接口,通過HTTP協(xié)議采用POST方式提交請求到服務(wù)器,并通過GET或者POST請求從服務(wù)器獲得封裝好的JSONArray對象,客戶端接收解析顯示到UI界面.
(3)電梯預(yù)約模塊
該模塊數(shù)據(jù)提交方式與查詢模塊相同,同樣采用Spinner下拉菜單選擇要查詢的樓層數(shù),通過HTTP協(xié)議的POST方式提交數(shù)據(jù)到服務(wù)器服務(wù)器解析數(shù)據(jù)并把數(shù)據(jù)命令通過服務(wù)器端HTTP協(xié)議連接電梯數(shù)據(jù)采集控制終端,點亮該樓層呼梯大廳內(nèi)的呼梯按鈕.
(4)黑名單模塊
此模塊用戶管理使用客戶端惡意呼梯的用戶.電梯預(yù)約流程圖如圖3所示.
Android系統(tǒng)的客戶端應(yīng)用程序一般是不能與數(shù)據(jù)庫直接進行數(shù)據(jù)交互的,需要通過后端服務(wù)器完成對數(shù)據(jù)庫中數(shù)據(jù)的修改、刪除、查詢等操作.在本系統(tǒng)中服務(wù)器采用Apache提供的輕量級服務(wù)器Tomcat,并將Tomcat服務(wù)器部署到Eclipse平臺上.需要在Eclipse平臺上新建一個Dynamic Web Project,并將新建的項目添加到Tomcat中,重新啟動服務(wù)器即可.
本系統(tǒng)中Android客戶端通過Http協(xié)議訪問Web服務(wù)器,完成對客戶端數(shù)據(jù)的請求與響應(yīng).客戶端通過Android自帶的HttpClient類提交Http請求,并通過GET請求或POST請求向指定的服務(wù)器提交數(shù)據(jù),GET請求用于下載服務(wù)器圖片文件,POST請求用于查詢和修改服務(wù)器內(nèi)容.客戶端和服務(wù)器的數(shù)據(jù)交互必須通過Servlet組件(即服務(wù)器端的小應(yīng)用程序),Servlet包含有doGet和doPost兩個方法,分別用于處理和接收Http協(xié)議的GET請求和POST請求.Android客戶端通過Http協(xié)議提交用戶請求,WEB服務(wù)器接收用戶請求并將接收的請求轉(zhuǎn)發(fā)至Servlet驅(qū)動,對應(yīng)的Servlet接收請求后完成相應(yīng)的業(yè)務(wù)處理,Servlet將響應(yīng)結(jié)果按照規(guī)定的數(shù)據(jù)格式進行封裝返回到服務(wù)器,服務(wù)器接收后將結(jié)果集返回到客戶端,客戶端解析數(shù)據(jù)包并在UI界面顯示響應(yīng)結(jié)果.服務(wù)器接收請求數(shù)據(jù)示意圖如圖4所示.
圖3 電梯預(yù)約流程圖
圖4 服務(wù)器接收請求數(shù)據(jù)示意圖
在本系統(tǒng)中,數(shù)據(jù)庫采用Android自帶的輕量級小型的SQLite數(shù)據(jù)庫和MySQL數(shù)據(jù)庫,SQLite負責(zé)保存用戶的賬號名和密碼,通過SQLitedataBase和SQLiteOpenHelper兩個類完成數(shù)據(jù)庫的增刪改查功能;MySQL數(shù)據(jù)庫負責(zé)驗證用戶的登陸信息、存儲電梯的運行數(shù)據(jù)、乘候梯圖像信息和電梯預(yù)約信息.在MySQL數(shù)據(jù)庫中,新建一個數(shù)據(jù)庫并命名,同時在新建的數(shù)據(jù)庫中添加4張數(shù)據(jù)表,分別為用戶信息表user、電梯數(shù)據(jù)表elevator_data、圖像信息表camera_info、預(yù)約數(shù)據(jù)表reservation_data.
WEB服務(wù)器調(diào)取MySQL數(shù)據(jù)庫的數(shù)據(jù)需要借助JDBC接口完成,通過JDBC接口可實現(xiàn)向數(shù)據(jù)庫中插入數(shù)據(jù)、查詢數(shù)據(jù)、刪除數(shù)據(jù)以及更改數(shù)據(jù)庫紀錄等操作.在系統(tǒng)中需要新建一個DBUtil包用來封裝連接數(shù)據(jù)庫的代碼,首先通過Class.forName()方法注冊驅(qū)動,通過Connection()方法與數(shù)據(jù)庫建立連接,此方法中包含數(shù)據(jù)庫的URL,用戶名和密碼,連接成功后,通過Statement接口的createStatement()方法創(chuàng)建操作SQL語句的對象,利用接口中executeQuery()方法和executeUpdata()方法操作SQL語句,最后將響應(yīng)結(jié)果集返回到ResultSet接口并將響應(yīng)結(jié)果集進行封裝.
軟件打開后進入登陸界面圖5(a)注冊登錄界面所示.客戶端接收到用戶名和密碼登錄后,根據(jù)用戶輸入的登錄信息,在數(shù)據(jù)庫的用戶表(user)中搜尋與此信息相匹配的記錄,驗證其合法性.如果用戶合法,則將請求網(wǎng)絡(luò)獲得主界面,否則返回初始界面并提示“用戶名或密碼錯誤”.
用戶登陸主界面后,可執(zhí)行兩種操作:查看功能和預(yù)約功能,如圖5(d)、(e)所示.當用戶輸入指令后,服務(wù)器進行JSON數(shù)據(jù)解析,判斷指令內(nèi)容,若為查看功能,顯示所選電梯的當前位置、運行方向,以及所選樓層轎廂內(nèi)外的圖像信息,如圖5(c)所示;若為預(yù)約指令,服務(wù)器和數(shù)據(jù)采集控制終端通訊,將呼梯指令下達到電梯控制器,完成預(yù)約功能.部分功能實現(xiàn)效果圖如圖5所示.
經(jīng)測試,該系統(tǒng)功能可靠,方便快捷,實時性和可靠性強,滿足了系統(tǒng)設(shè)計需求,具有廣泛的應(yīng)用情景.
本系統(tǒng)采用C/S架構(gòu),結(jié)合通訊技術(shù)、互聯(lián)網(wǎng)技術(shù)、嵌入式技術(shù)等多種技術(shù),在Android平臺上實現(xiàn)了電梯的運行監(jiān)視和預(yù)約功能,經(jīng)過Android模擬機的調(diào)試實驗,該系統(tǒng)能夠?qū)崿F(xiàn)手機客戶端遠程呼梯,并通過APP顯示轎廂內(nèi)外實時圖片,指導(dǎo)用戶錯開時間乘梯,節(jié)約了用戶候梯時間,提高了電梯利用率.
圖5 部分功能實現(xiàn)效果圖