廖列法,張幸平
(江西理工大學(xué) 信息工程學(xué)院,江西 贛州 341000)
數(shù)字化時(shí)代的到來在很大程度上改變了人們傳統(tǒng)的生活生產(chǎn)方式,在各行業(yè)領(lǐng)域中基于iOS移動(dòng)端的應(yīng)用越來越多,同時(shí)隨著智能設(shè)備的逐漸普遍,移動(dòng)互聯(lián)網(wǎng)技術(shù)已然成為未來高新技術(shù)發(fā)展的重要方向。與此同時(shí),移動(dòng)互聯(lián)網(wǎng)技術(shù)在傳統(tǒng)行業(yè)中的應(yīng)用越來越廣泛,各個(gè)行業(yè)的改革也都朝著智能、智慧化方向發(fā)展。例如國家電網(wǎng)、各大高校、醫(yī)院、制造業(yè),家居業(yè)等眾多領(lǐng)域都紛紛提出建設(shè)智能電網(wǎng)[1]、”互聯(lián)網(wǎng)+”課堂[2]、智慧醫(yī)療[3]、智能制造[4]、智能家居[5]。因此傳統(tǒng)指揮系統(tǒng)的升級也成為迫切需要解決的問題。
目前,傳統(tǒng)的指揮系統(tǒng)要求特定設(shè)備,功能較為單一,沒有良好的交互界面。比如樓宇對講系統(tǒng)[6]、基于Linux對講系統(tǒng)[7]分別使用對講機(jī)、Linux終端作為對講設(shè)備,同時(shí)也沒有可視化界面,難以滿足互聯(lián)網(wǎng)時(shí)代用戶的需求。在互聯(lián)網(wǎng)時(shí)代下,如何利用移動(dòng)互聯(lián)網(wǎng)技術(shù)實(shí)現(xiàn)指揮系統(tǒng)的升級成了智能化發(fā)展的一個(gè)方向。比如以目前主流的iOS系統(tǒng)設(shè)備替換原有的舊型專用設(shè)備,增加地圖上實(shí)時(shí)顯示用戶位置,通過耳機(jī)控制對講,增加狀態(tài)類消息實(shí)時(shí)顯示當(dāng)前狀態(tài),設(shè)計(jì)更加人性化的UI提升用戶體驗(yàn)效果等都是用戶提出的真實(shí)需求。因此開發(fā)基于iOS的智能可視化指揮系統(tǒng)[8]對傳統(tǒng)指揮系統(tǒng)的升級具有非常重要的意義以及應(yīng)用價(jià)值。
系統(tǒng)采用主流的C/S架構(gòu),通過TCP協(xié)議實(shí)現(xiàn)客戶端與云服務(wù)器之間的數(shù)據(jù)傳輸。首先,云服務(wù)器作為整個(gè)系統(tǒng)的數(shù)據(jù)處理中心,主要負(fù)責(zé)用戶驗(yàn)證,語音流數(shù)據(jù),上下線、位置、控制類、狀態(tài)類等消息的解析與轉(zhuǎn)發(fā),以及提供可靠的數(shù)據(jù)高速訪問和存儲(chǔ)服務(wù),同時(shí)采用Ngnix[9],Redis[10],Nodejs[11],Mysql[12]作為技術(shù)框架,支持分布式集群化部署滿足多用戶、高并發(fā)需求,實(shí)現(xiàn)云服務(wù)器的高性能,高可用。其中,Nginx為負(fù)載均衡反向代理服務(wù)器,可實(shí)現(xiàn)靜態(tài)分離,將所有客戶端的請求依據(jù)權(quán)重隨機(jī)的分配到相應(yīng)的Nodje服務(wù)器,避免單臺Nodejs服務(wù)器負(fù)載過大的問題。Nodejs為應(yīng)用服務(wù)器,負(fù)責(zé)與客戶端之間的數(shù)據(jù)分析與轉(zhuǎn)發(fā),是整個(gè)系統(tǒng)數(shù)據(jù)的流轉(zhuǎn)中心。Redis為高速緩存服務(wù)器,建立主從的集群方案,作為mysql的緩存服務(wù)器,實(shí)現(xiàn)讀寫分離,保證數(shù)據(jù)的持續(xù)高速訪問。Mysql為多臺Nodejs的共享數(shù)據(jù)庫,提供數(shù)據(jù)存儲(chǔ)服務(wù)。整個(gè)系統(tǒng)的整體框架如1所示。
圖1 系統(tǒng)架構(gòu)
在實(shí)現(xiàn)基礎(chǔ)對講功能外,客戶端以地圖作為基礎(chǔ)元素,利用網(wǎng)絡(luò)定位[13]、GPS定位[14]、離線定位[15]技術(shù)監(jiān)聽位置變化信息并實(shí)時(shí)通過云服務(wù)器轉(zhuǎn)發(fā)都所有在線的用戶,另外除了基本位置消息外,擴(kuò)展了個(gè)人信息(包括頭像,真實(shí)姓名等)、搶麥消息、麥閑與麥忙消息、上下線消息等,結(jié)合這些消息,在地圖上可以非常直觀看出用戶上下線變化、位置變化、麥狀態(tài)變化等,其主要特點(diǎn)如下:
(1)設(shè)備多型化,支持當(dāng)前主流的iOS移動(dòng)系統(tǒng)設(shè)備作為客戶端,不再需要專用設(shè)備,隨身攜帶的iOS手機(jī),iPAD就是一臺指揮設(shè)備。
(2)可視化指揮,在地圖上實(shí)時(shí)顯示用戶上下線、位置的變化,可以非常直觀反應(yīng)出每個(gè)用戶的位置信息以及運(yùn)動(dòng)軌跡。
(3)特色功能,增加管理員優(yōu)先搶麥功能,耳麥控制對講功能,人性化的狀態(tài)提功能等,增強(qiáng)了指揮系統(tǒng)的功能和提升了客戶端的體驗(yàn)效果。
云服務(wù)器作為整個(gè)系統(tǒng)的數(shù)據(jù)中心,負(fù)責(zé)所有數(shù)據(jù)的解析與轉(zhuǎn)發(fā),控制著整個(gè)數(shù)據(jù)的流向,其數(shù)據(jù)流程如圖2所示。當(dāng)收到用戶上下線、語音流、麥狀態(tài)等消息時(shí)透傳給所有在線的用戶,再更新用戶列表、對語音流進(jìn)行轉(zhuǎn)碼和播放以及顯示當(dāng)前麥的狀態(tài)。當(dāng)收到搶麥消息時(shí),如果用戶具有管理員權(quán)限,都以管理員優(yōu)先的規(guī)則保證搶麥的成功。如果用戶是普通用戶權(quán)限,此時(shí)若麥處于空閑狀態(tài)則搶麥成功,反之,則搶麥?zhǔn) H绻麚岥湷晒?,用戶可以開始說話,同時(shí)采集語音流數(shù)據(jù)進(jìn)行編碼和實(shí)時(shí)發(fā)送到云服務(wù)器,再由云服務(wù)器轉(zhuǎn)發(fā)給所有在線用戶。
圖2 服務(wù)器數(shù)據(jù)流程
客戶端主要分為登錄與對講兩個(gè)模塊。首先,用戶在登錄模塊填寫用戶名、密碼、房間名、服務(wù)器地址信息后與云服務(wù)器建立連接。其次,進(jìn)入對講模塊后,根據(jù)收到的數(shù)據(jù)類型做出不同的響應(yīng),比如位置消息在地圖上標(biāo)注位置,上下線消息更新用戶列表并在地圖上增加或刪除用戶,狀態(tài)類消息在界面上顯示提醒信息,語音流消息進(jìn)行解碼與播放。同時(shí)建立數(shù)據(jù)轉(zhuǎn)發(fā)機(jī)制,當(dāng)位置、上下線發(fā)送變化時(shí)實(shí)時(shí)發(fā)送到云服務(wù)器。當(dāng)需要說話時(shí),發(fā)送搶麥消,如果搶麥成功,則進(jìn)入對講流程,實(shí)時(shí)的采集語音流數(shù)據(jù),并將編碼后的數(shù)據(jù)實(shí)時(shí)發(fā)送到云服務(wù)器,其功能流程如圖3所示。
圖3 客戶端功能流程
利用Object-C層實(shí)現(xiàn)音頻的錄制、播放、事件回調(diào)的接口封裝(AudioStream),C層實(shí)現(xiàn)音頻的錄制、播放、網(wǎng)絡(luò)傳輸。
(1)錄音
通過原生組件AudioUnit錄制原始PCM格式的音頻流,經(jīng)Speex[8]編碼后再發(fā)送到服務(wù)器。
(2)播放
從網(wǎng)絡(luò)接收到音頻數(shù)據(jù)流,經(jīng)Speex解碼轉(zhuǎn)換為采樣位數(shù)為16 bit的PCM格式音頻數(shù)據(jù),再通過AudioUnit進(jìn)行播放。
(1)配置音頻流[[AudioStream singleStream] setupStream:(NSDictionary *)info];
Info參數(shù)參考表1。
表1 視頻流Info中的鍵值對
(2)連接
[[AudioStream singleStream] connect];
(3)斷開連接
[[AudioStream singleStream] disconnect];
(4)請求麥
[[AudioStream singleStream] reqMic];
(5)釋放麥
[[AudioStream singleStream] freeMic];
(6)錄音
[[AudioStream singleStream] record];
(7)停止錄音
[[AudioStream singleStream] stopRecord];
(8)注冊音頻流的事件回調(diào)
[[AudioStream singleStream] setAudioStreamEventHandler:
fe_audio_event_handle_t*audio_event_handle_callback];
參數(shù)為事件回調(diào)函數(shù),回調(diào)事件說明參考表2。
表2 回調(diào)的事件說明
JSON消息
{′code′:′0′,′cmd′:′xxx′,′msg′:′xxx′}
消息說明參考表3。
表3 JSON消息格式說明
cmd說明參考表4。
表4 消息類型說明
msg說明參考表5。
表5 消息狀態(tài)說明
(9)自定義消息
[[AudioStream singleStream]sendCustom Event:(id)
msg];
參數(shù)為自定義的消息類型。
(10)位置變化消息
通過自定義消息方式發(fā)送位置變化消息,具體消息格式如下:
{
"type":"location",
"data":{
"userName":"zxp",
"latitude":"23.171999",
"longitude":"113.462033"
}
}
消息說明參考表6。
表6 消息說明
系統(tǒng)測試中,采用單機(jī)部署方案,將系統(tǒng)部署在一臺騰訊云服務(wù)器,其服務(wù)器配置信息為:CentOS 7.2 64位、雙核CPU、2 G內(nèi)存、5 M帶寬、1 T磁盤。以iOS手機(jī),iPAD平板電腦作為測試客戶端,同時(shí)為了提升客戶端在不同機(jī)型下的適配性,分別在iPad系列,iPhone 5 s、6 s、7、8、X等不同設(shè)備上測試,所有的UI界面都能在這些主流機(jī)型正常的顯示。另外,分別在WiFi和4 G,3 G和2 G,網(wǎng)絡(luò)不穩(wěn)定等3種情況下進(jìn)行測試,從測試結(jié)果來看,在網(wǎng)絡(luò)信號穩(wěn)定的情況下應(yīng)用非常穩(wěn)定順暢,在網(wǎng)絡(luò)信號一般但可用的情況下基本可用,不影響正常功能的使用,在網(wǎng)絡(luò)不穩(wěn)定、時(shí)不時(shí)出現(xiàn)網(wǎng)絡(luò)斷開的情況下,應(yīng)用會(huì)斷開,但一旦網(wǎng)絡(luò)可用則會(huì)自動(dòng)重新與云服務(wù)器建立連接,恢復(fù)對講的所有功能。同時(shí)采用自動(dòng)化測試工具,對服務(wù)器性能進(jìn)行測試,其測結(jié)果見表7。
表7 服務(wù)器測試結(jié)果
從表7中可以看出,并發(fā)量從100增加到1000時(shí),CPU利用率的變化為0.2%,0.3%,0.5%,說明服務(wù)器端為輕量型應(yīng)用服務(wù)器,具有良好的性能。另外,消息數(shù)量從100增加到1000時(shí),服務(wù)器響應(yīng)時(shí)間都在毫秒之間且時(shí)間差為0.02 s,0.04 s,0.07 s,說明服務(wù)端具有較好消息處理能力,能夠達(dá)到指揮系統(tǒng)中對消息實(shí)時(shí)性的要求。
圖4登錄界面中,輸入賬號,密碼,房間名,服務(wù)器地址點(diǎn)擊登錄與服務(wù)器連接完成登錄操作。
圖4 登錄界面
圖5、圖6對講界面中,以地圖為基礎(chǔ)元素,在頂部顯示所有在線的用戶,同時(shí)在地圖上標(biāo)注所有在線用戶的位置。
圖5 對講界面-搶麥成功
圖6 對講界面-其它人正在說話
隨著人工智能與移動(dòng)互聯(lián)網(wǎng)技術(shù)在移動(dòng)端的應(yīng)用越來越廣泛,針對主流的iOS設(shè)備實(shí)現(xiàn)一套可視化指揮系統(tǒng),既能增強(qiáng)指揮系統(tǒng)的功能,又能提供多元化的界面交互。另外,整個(gè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)均來自真實(shí)項(xiàng)目中用戶的實(shí)際需求,同時(shí)在用戶環(huán)境下進(jìn)行分布式集群化部署,當(dāng)前系統(tǒng)仍在健壯的運(yùn)行中,評價(jià)較好,未收到用戶反饋的功能性問題。因此本文為傳統(tǒng)指揮系統(tǒng)的升級提供了一套非常實(shí)用有效的解決方案。下一步將在另一主流的Android系統(tǒng)上實(shí)現(xiàn)相應(yīng)的指揮系統(tǒng)。