張 波
(常州紡織服裝職業(yè)技術學院 教育技術中心,江蘇 常州 213164)
基于Socket通信的多媒體教室移動監(jiān)控模塊的設計
張波
(常州紡織服裝職業(yè)技術學院 教育技術中心,江蘇 常州 213164)
文章主要討論了多媒體教室遠程管理系統(tǒng)中的移動監(jiān)控模塊的設計。移動監(jiān)控模塊主要由運動的方式進行通信。APP程序定時從服務器獲取網絡中控節(jié)點的實時狀態(tài),同時給用戶提供調用接口,通過服務器向下位機(網絡中控)發(fā)送控制指令完成控制動作。最后,文章總結了移動監(jiān)控模塊的設計意義。
多媒體教室;移動監(jiān)控模塊;Socket;APP;線程
隨著多媒體教學的日益普及,各個學校的多媒體教室數量在迅速增長。在現有管理人員不變的情況下,實現高效地管理多媒體教學設備成為學校迫切需要解決的問題。隨著手機、平板等手持移動端電子設備的逐漸增多,人們的日常生活方式和行為習慣正悄悄發(fā)生著改變,支付寶消費、微信紅包等給人們日常生活帶來了很大的便利。本論文從技術的角度給出一種多媒體教室移動監(jiān)控方案。通過該方案,只要有網絡,管理人員就可以在任何時間任何地點通過移動端APP程序對遠程教室的多媒體教學設備進行監(jiān)測和控制。
多媒體教室移動監(jiān)控模塊的實現有兩個總體思路:直接監(jiān)控方式和間接監(jiān)控方式。所謂直接監(jiān)控方式是教室下位機通過GSM/GPRS模塊連接移動網絡,以短信的形式將設備狀態(tài)反饋給移動端手機或者帶移動網絡的其他設備。移動端也以短信的形式向遠程教室下位機GSM/GPRS模塊直接發(fā)送控制命令。但這樣的設計需要在教室下位機增加GSM/ GPRS模塊,增加了硬件的復雜度和生產成本,復雜的電路同時降低了通信的穩(wěn)定性,當教室數量很多并且經常變動時,SIM卡號碼的管理也是件讓人頭痛的事情。本設計采用的是間接監(jiān)控方式,在原有監(jiān)控中心服務器(上位機)—教室網絡中控(下位機)的遠程監(jiān)控方案的基礎上增加了移動監(jiān)控模塊,原有硬件和軟件架構完全不需要變動,很方便地實現了系統(tǒng)功能模塊的擴展。移動監(jiān)控模塊主要由兩部分程序構成:運行于移動設備端的APP程序和運行于監(jiān)控服務器端的上位機程序以及后臺數據庫。由于遠程教室端設備狀態(tài)均存儲于服務器上的后臺數據庫并會實時更新,移動端APP只需要定時讀取后臺數據并實時刷新UI界面就可以向管理人員呈現最新的設備狀態(tài);另一方面,移動端APP不需要直接向遠程教室下位機發(fā)送控制指令,只需要向服務器上位機發(fā)送控制指令,再由服務器上位機向對應教室下位機轉發(fā)相同的控制指令即可。只要選取合適的數據刷新頻率,間接監(jiān)控方式也可以有很好的實時效果。移動監(jiān)控模塊的結構圖如圖1所示。
移動端APP,Android版采用Java原生語言開發(fā),ios版基于Object C語言開發(fā),兩種開發(fā)環(huán)境這里不做介紹,本文以Android版APP為例來闡述,IOS版與之類似。既然是移動監(jiān)控程序,那么網絡通信是必不可少的,Android Java開發(fā)環(huán)境中涉及網絡通信的組件對象有很多,比如HttpClient,Http URLConnection和Socket等,Http對象通常和某種服務器語言配合使用,比如jsp,php等。在這里我們選擇Socket對象,原因是在服務器端我們采用.net c#開發(fā)的服務器程序也是基于Socket對象的,移動端APP采用Socket對象和服務器程序通信,兩邊就能很方便地進行對接。
圖1 移動監(jiān)控模塊的結構
所謂Socket通常也稱作“套接字”,用于描述IP地址和端口,是一個通信鏈的句柄。應用程序通常通過“套接字”向網絡發(fā)送請求或者應答網絡請求。Socket有兩種主要的操作方式:面向連接(TCP)的和無連接的(UDP),在這里我們選擇面向連接(TCP)的操作方式,原因也是為了能和我們的服務器端程序匹配。Java中提供了兩個類Socket和ServerSocket,分別用來表示雙向連接的客戶端和服務端。
在移動端APP主程序中,首先實例化一個客戶端線程類,該類實例將負責與服務器通信,實例化的同時會新建一個Socket對象,并指定服務器地址和端口,我們可以新建一個InetSocket Address類來描述一個網絡目標地址,參數包括IP地址和端口號,InetSocket Address類作為Socket對象的連接參數。其次如果和服務器連接失敗則返回網絡錯誤,如果和服務器連接成功則開始如下的工作:每5s鐘向服務器提交教室設備狀態(tài)刷新請求;每15s鐘定時向服務器發(fā)送保持在線狀態(tài)的心跳包。為了保證手持移動設備在按下電源鍵關閉屏幕后仍然能夠定時向服務器發(fā)送消息包,我們不使用Handler 與timer及TimerTask結合的方法,而是采用Handler與線程的sleep(long)方法或者采用Handler的postDelayed(Runnable, long)方法,假設這里采用前者,啟用兩個線程暫停(sleep)一段時間以后發(fā)包。最后在Socket對象和服務器連接成功之后,我們需要通過Socket對象的getOutputStream()方法來獲取輸出流OutputStream發(fā)送消息包,通過Socket對象的getInputStream()方法來獲取輸入流InputStream接收消息包。值得注意的是,需要在客戶端類實例中單獨開啟一個線程來接收從服務器發(fā)送過來的消息包,而且該線程的讀取過程需要往復循環(huán)進行以保證不會丟包,我們可以用一個死循環(huán)比如while(true),也可以用循環(huán)對象Looper來實現。另外在從服務器讀取到設備狀態(tài)數據以后,不是直接更新主線程中的UI界面,而是向主線程發(fā)送消息Message,主線程接收到消息Message以后根據消息內容來更新UI界面。在搞清楚上述一系列問題以后,移動端APP主程序的流程便非常清楚了,如圖2所示。
對遠程多媒體教室設備的控制過程是這樣的,當管理者用手指觸控APP UI中的按鈕發(fā)出各種控制指令時,APP主程序首先需要判斷是何種控制命令(打開中控電源命令或打開投影機命令),然后根據命令類型封裝消息包,最后利用客戶端線程類實例句柄(handler)來向該線程類實例發(fā)送消息,在該類實例的消息處理函數中由Socket對象的輸出流OutputStream完成最終的消息包發(fā)送。
圖2 移動端APP主程序
服務器端是采用.net c#語言環(huán)境開發(fā)的winform類型應用程序,主線程啟動以后首先創(chuàng)建用于服務端偵聽的主Socket,打開相應的偵聽端口接收移動端和下位機的Socket接入。然后啟動一個處理接入Socket連接的子線程,該線程默認處于阻塞狀態(tài),當有遠端Socket連入時,該線程會在服務端創(chuàng)建相應的Socket來處理和遠端Socket的通信,同時會啟動一個新線程來負責和這個遠端Socket通信消息包的接收和發(fā)送。為了能夠維護和管理客戶端Socket,我們需要設計一個客戶端連接對象,這個結構將客戶端Socket、新的連接子線程關聯起來,并且將這個客戶端連接對象增加到客戶端連接對象集合中,這樣對于后期的遍歷、檢索、引用以及對象的增刪改操作都將非常方便;管理子線程是主線程啟動以后需要啟動的另外一個子線程,該線程負責離線客戶端對象的清理、自動恢復和刪除選中的客戶端、讀取服務器后臺數據庫狀態(tài)并更新服務器樹形列表UI、查詢服務器后臺數據庫顯示當前教室狀態(tài)等事務。服務器端程序主流程如圖3所示。
服務器程序處理移動端消息包是單獨啟動一個連接子線程進行的,當收到有效數據包時首先記錄時間戳,管理子線程根據這個時間戳判斷移動端是否離線。然后判斷設備狀態(tài)數據是否請求消息包,如果是則讀取請求消息包的教室號字段,再根據教室號檢索后臺數據庫,最后將檢索到的教室設備狀態(tài)數據封裝成消息包返回給移動端;如果不是設備狀態(tài)數據請求消息包就判斷是否保持在線狀態(tài)消息包,如果是保持在線狀態(tài)消息包則更新該移動端的激活時間為當前時間;如果既不是設備狀態(tài)數據請求消息又不是保持在線狀態(tài)消息則判斷是否為設備控制消息包,如果是設備控制消息包則根據獲取的教室號將消息包轉發(fā)至對應教室的下位機(網絡中控)以完成設備控制動作。
通過本模塊的設計,能夠讓管理人員在任何時間任何地點,只要有網絡信號、有安裝了APP的手機或者平板等移動端設備,就能夠實現對多媒體教室設備的遠程監(jiān)控和維護管理。發(fā)生故障的設備能夠在第一時間發(fā)現、診斷和維修,提高了設備的運行效率,減少了設備管理人員的工作量。據統(tǒng)計,使用了該管理模塊以后,設備維修的平均響應時間縮短75%,教室設備的平均故障率降低53%,設備管理人員的維護工作量減少了68%,師生對于多媒體教室的使用滿意度大幅度提升。
圖3 服務器端主程序
[1]梁曉明,王惠芳,張新嶺,等.基于ARM及GPRS的多媒體教室中控系統(tǒng)設計[J].河北工業(yè)科技,2012(6):435-437.
Design of mobile monitoring module of multimedia classroom based on Sockets communication
Zhang Bo
(Education and Technology Center of Changzhou Textile Garment Institute, Changzhou 213164, China)
This paper mainly discussed the design of mobile remote monitoring module management system in multimedia classroom. Mobile monitoring module mainly communicates by way of movement. The APP program obtain real-time status in network control nodes timing from the server, and provides the user with interface at the same time, completing control action through the the server(WEB)sending control command. Finally, the article summarized the design significance of mobile monitoring module.
multimedia classroom; mobile monitoring module; Socket; APP; thread
常州紡織服裝職業(yè)技術學院2012年校級應用課題;項目名稱:多媒體教室遠程集中控制系統(tǒng)的設計與實現;項目編號:CFK201207。
張波(1982— ),男,江蘇鹽城,碩士;研究方向:計算機軟件開發(fā)方面教學與管理。