魏子輝
隨著信息技術(shù)的發(fā)展,用戶不僅僅限于設(shè)備功能穩(wěn)定實(shí)用,更注重于顯示控制軟件的友好,設(shè)備顯控軟件多是采用類似MFC 的技術(shù)實(shí)現(xiàn)的應(yīng)用軟件,其優(yōu)勢(shì)在于面對(duì)的是固定用戶群,對(duì)信息安全的控制能力很強(qiáng),并且具有強(qiáng)大的數(shù)據(jù)操作和業(yè)務(wù)處理能力,但是應(yīng)用軟件的整體性也讓系統(tǒng)升級(jí)代價(jià)增加,對(duì)軟件環(huán)境要求高,不易于移植。本文采用B/S 的架構(gòu)來實(shí)現(xiàn)設(shè)備顯控軟件,B/S 體系的優(yōu)勢(shì)在于其便于跨平臺(tái)布置,簡(jiǎn)化客戶端從而使操作簡(jiǎn)單明了,維護(hù)成本低,系統(tǒng)升級(jí)迭代快,開發(fā)迅捷[1-4]。
通用軟件無線電平臺(tái)支持多種波形的動(dòng)態(tài)加載,實(shí)現(xiàn)“一種架構(gòu)統(tǒng)多種平臺(tái),一種平臺(tái)加載多種波形,一種波形適應(yīng)多種平臺(tái)”。其中,綜合顯控軟件實(shí)現(xiàn)對(duì)平臺(tái)內(nèi)波形和設(shè)備的狀態(tài)進(jìn)行監(jiān)控與控制,主要包括:波形安裝、波形動(dòng)態(tài)部署、波形加/卸載等SCA 波形控制功能,設(shè)備狀態(tài)監(jiān)測(cè)與控制、波形運(yùn)行狀態(tài)監(jiān)測(cè),設(shè)備資源配置,波形參數(shù)控制。
綜合顯控軟件前端界面可讓操作員實(shí)時(shí)查看各個(gè)硬件模塊的工作狀態(tài)、資源占用情況、溫度等狀態(tài),也能實(shí)時(shí)查看硬件模塊所運(yùn)行的波形狀態(tài),同時(shí)可以進(jìn)行設(shè)備工作的控制。
本文將綜合顯控系統(tǒng)控制前端軟件設(shè)計(jì)為Web 軟件,依照J(rèn)avaEE 開發(fā)規(guī)范部署在應(yīng)用服務(wù)器上,客戶端使用瀏覽器,支持常見的桌面瀏覽器。本系統(tǒng)為了將各對(duì)象間的耦合程度降到最小,采用經(jīng)典的MVC 分層設(shè)計(jì)。
綜合顯控軟件前端使用javascript/jquery/css 進(jìn)行視圖界面開發(fā);服務(wù)端主要使用Java 語言,選擇Spring 4.0 作為服務(wù)端框架組件;數(shù)據(jù)持久層擬選用數(shù)據(jù)庫mysql5 進(jìn)行持久化數(shù)據(jù)存儲(chǔ)實(shí)現(xiàn);應(yīng)用服務(wù)器選用Tomcat8 作為服務(wù)端軟件部署并提供對(duì)外訪問。
顯控前端軟件系統(tǒng)組成部分有:
(1)客戶端,可多用戶訪問。
(2)服務(wù)器,其中包括應(yīng)用服務(wù)器tomcat,服務(wù)主機(jī),數(shù)據(jù)庫。
(3)設(shè)備。
其中客戶端和服務(wù)器之間基于Http 協(xié)議進(jìn)行通信,服務(wù)器與設(shè)備之間基于TCP/UDP 協(xié)議通信。
客戶端主要負(fù)責(zé)與用戶之間的對(duì)話,提供基于瀏覽器的人機(jī)交互界面、數(shù)據(jù)輸入輸出,通過Http 協(xié)議與服務(wù)端進(jìn)行通信,訪問業(yè)務(wù)數(shù)據(jù)資源。
服務(wù)端中功能層是通過部署應(yīng)用服務(wù)器和數(shù)據(jù)庫,處理來自客戶端的業(yè)務(wù)請(qǐng)求,通過接口響應(yīng)表示層發(fā)出的請(qǐng)求,完成相關(guān)業(yè)務(wù)處理后把結(jié)果返回客戶端;數(shù)據(jù)層是提供相關(guān)持久化數(shù)據(jù)存儲(chǔ)訪問服務(wù),通過TCP/UDP 協(xié)議與波形代理服務(wù)器進(jìn)行數(shù)據(jù)通信,獲取波形組件和設(shè)備組件信息提供給客戶端訪問,以及進(jìn)行波形參數(shù)配置和波形部署、加載卸載、運(yùn)行狀態(tài)監(jiān)控等,通過TCP/UDP 與設(shè)備通信的功能與持久化數(shù)據(jù)存儲(chǔ)訪問類似,所以將該功能放入數(shù)據(jù)層。
本系統(tǒng)數(shù)據(jù)封裝和解析借用Java 虛擬機(jī)對(duì)動(dòng)態(tài)鏈接庫調(diào)用的技術(shù)實(shí)現(xiàn),動(dòng)態(tài)鏈接庫即DLL,又稱為應(yīng)用程序拓展,DLL文件中存放的是各類程序的函數(shù)(子過程)實(shí)現(xiàn)過程,當(dāng)程序需要調(diào)用函數(shù)時(shí)需要先載入DLL,然后取得函數(shù)地址,最后進(jìn)行調(diào)用,這樣程序就不需要在運(yùn)行初加載所有代碼,只在某個(gè)使用時(shí)調(diào)用。該方法更加節(jié)省內(nèi)存;DLL 文件與系統(tǒng)文件獨(dú)立,只要輸出接口不變(即名稱、參數(shù)、返回值類型和調(diào)用約定不變),更換DLL 文件不會(huì)對(duì)系統(tǒng)造成任何影響,極大地提高了可維護(hù)性和可擴(kuò)展性;開發(fā)過程獨(dú)立、耦合度小,便于測(cè)試。
本系統(tǒng)DLL 按照具體協(xié)議內(nèi)容,編寫相應(yīng)指令的數(shù)據(jù)封裝和解析函數(shù),最后利用C++項(xiàng)目生成相應(yīng)的DLL 文件,放于項(xiàng)目目錄下,在本系統(tǒng)的業(yè)務(wù)處理層進(jìn)行加載和調(diào)用,實(shí)現(xiàn)數(shù)據(jù)的封裝或者解析。本系統(tǒng)中協(xié)議格式為:指令標(biāo)識(shí)+數(shù)據(jù)長(zhǎng)度+數(shù)據(jù)內(nèi)容,指令標(biāo)識(shí)大小為兩個(gè)byte,數(shù)據(jù)長(zhǎng)度大小為兩個(gè)byte,數(shù)據(jù)內(nèi)容的長(zhǎng)度按照實(shí)際的內(nèi)容長(zhǎng)度而定。
綜合顯控軟件按數(shù)據(jù)流向可分解為用戶界面、業(yè)務(wù)處理、數(shù)據(jù)庫、設(shè)備數(shù)據(jù)。用戶界面與業(yè)務(wù)處理之間通過用戶的操控來交互,業(yè)務(wù)處理與數(shù)據(jù)庫和設(shè)備之間進(jìn)行交互,與數(shù)據(jù)庫之間通過持久化訪問,與設(shè)備之間通過TCP/UDP 進(jìn)行通信。
其中綜合顯控軟件通過B/S 架構(gòu)中的表示層實(shí)現(xiàn)和用戶的交互,通過TCP/UDP 實(shí)現(xiàn)與設(shè)備之間的信息輸入輸出。
綜合顯控軟件中需要用B/S 架構(gòu)實(shí)現(xiàn)按照功能可以分為設(shè)備監(jiān)測(cè)控制和數(shù)據(jù)顯示處理兩部分。設(shè)備監(jiān)測(cè)控制即硬件設(shè)備狀態(tài)查詢、波形監(jiān)測(cè)與控制、SCA 組件監(jiān)控;數(shù)據(jù)顯示處理則為波形信息管理、系統(tǒng)信息管理、設(shè)備信息管理。除了與設(shè)備之間信息的交互外,其他功能都需B/S 架構(gòu)中實(shí)現(xiàn)。
本系統(tǒng)的 B/S 分為:用戶界面層,ActionFilter 層,ServiceImpl 層,數(shù)據(jù)庫層。用戶界面層利用http 請(qǐng)求訪問ActionFilter 層,ActionFilter 層通過和 ServiceImpl 層業(yè)務(wù)適配,由SerciceImpl 直接訪問數(shù)據(jù)庫進(jìn)行業(yè)務(wù)處理,將處理后的結(jié)果以Json 的形式一層一層上傳給用戶界面顯示。
綜合顯控軟件中波形監(jiān)測(cè),波形動(dòng)態(tài)控制(動(dòng)態(tài)安裝、部署、刪除、加載、停止等)、設(shè)備狀態(tài)監(jiān)測(cè)與控制、SCA 組件監(jiān)控等功能需要與設(shè)備交互,用網(wǎng)口傳輸數(shù)據(jù),采用TCP/UDP 通信,在項(xiàng)目中配置好IP 和端口號(hào),創(chuàng)建線程進(jìn)行監(jiān)聽,當(dāng)軟件接收到數(shù)據(jù)后,利用報(bào)文解析,調(diào)用動(dòng)態(tài)鏈接庫進(jìn)行數(shù)據(jù)解析,當(dāng)軟件需要下發(fā)指令時(shí),先用動(dòng)態(tài)鏈接庫進(jìn)行數(shù)據(jù)封裝,打包成報(bào)文后通過網(wǎng)絡(luò)傳輸。
綜合顯控軟件與設(shè)備之間通信控制可分為四層:用戶界面層,ActionFilter 層,ServiceImpl 層及設(shè)備層。用戶界面通過http請(qǐng)求訪問ActionFilter 層,ActionFilter 層通過請(qǐng)求的不同,訪問ServiceImpl 層不同的業(yè)務(wù),由ServiceImpl 層通過TCP/UDP 訪問設(shè)備,待設(shè)備響應(yīng)后將響應(yīng)結(jié)果按照協(xié)議打包形成json,再通過一層層傳遞,返回給用戶界面,顯示給用戶。
B/S 體系結(jié)構(gòu)利用不斷成熟的WWW 瀏覽器技術(shù),實(shí)現(xiàn)原需要專用軟件才能實(shí)現(xiàn)的強(qiáng)大功能,維護(hù)代價(jià)低,只需為一套設(shè)備配置一套服務(wù)器,便可以滿足多個(gè)用戶端進(jìn)行訪問和控制,避免了專用軟件安裝專用環(huán)境的麻煩,簡(jiǎn)化客戶端,方便操作。