常文龍 賀亞龍 漆昭鈴
作者簡(jiǎn)介:常文龍(1992-),男,山西大同人,研究生學(xué)歷,助理工程師,研究方向?yàn)轱@控軟件設(shè)計(jì)。
摘 要: 水聲信號(hào)處理機(jī)是聲納系統(tǒng)的數(shù)據(jù)處理中心,負(fù)責(zé)水聲數(shù)據(jù)的運(yùn)算。本文介紹了一種以Qt組件為基礎(chǔ)的水聲信號(hào)處理機(jī)調(diào)試環(huán)境的設(shè)計(jì)與實(shí)現(xiàn)。該軟件基于以太網(wǎng)通信實(shí)現(xiàn)了節(jié)點(diǎn)顯示、程序加載、終端打印輸出、內(nèi)存數(shù)據(jù)繪圖等各個(gè)功能,滿足了用戶需求,可用于信號(hào)處理機(jī)程序調(diào)試,并具有良好的可拓展性,便于二次開(kāi)發(fā)。
關(guān)鍵詞: Qt 網(wǎng)絡(luò)通信;信號(hào)處理機(jī);顯控
【中圖分類號(hào)】TN929.3 ? ? 【文獻(xiàn)標(biāo)識(shí)碼】A ? ? 【DOI】10.12215/j.issn.1674-3733.2020.26.150
0 引言
水聲信號(hào)處理機(jī)的硬件狀態(tài)監(jiān)控、控制操作皆為無(wú)界面狀態(tài),使用上通過(guò)命令行進(jìn)行操作,用戶無(wú)法非常直觀的觀察到硬件狀態(tài)的變化,也無(wú)法非常便利的對(duì)硬件進(jìn)行控制操作。水聲算法調(diào)試使用硬件串口進(jìn)行調(diào)試,受到串口通信距離、串口數(shù)量以及諸多硬件環(huán)境限制,用戶使用上局限性非常巨大。信號(hào)處理機(jī)使用中發(fā)生故障時(shí),通常不能及時(shí)保存錯(cuò)誤現(xiàn)場(chǎng)的信息,導(dǎo)致后期排故困難,工作量大。信號(hào)處理機(jī)板卡數(shù)量與類型眾多,各類軟件的版本信息管理工作量大且繁瑣。
1 Qt簡(jiǎn)介
Qt 是一個(gè)1991年由Qt Company開(kāi)發(fā)的跨平臺(tái)C++圖形用戶界面應(yīng)用程序開(kāi)發(fā)框架。它既可以開(kāi)發(fā)GUI程序,也可用于開(kāi)發(fā)非GUI程序,比如控制臺(tái)工具和服務(wù)器中[1]。Qt是面向?qū)ο蟮目蚣?,使用特殊的代碼生成擴(kuò)展(稱為元對(duì)象編譯器(Meta Object Compiler, moc))以及一些宏,Qt很容易擴(kuò)展,并且允許真正地組件編程。此外,Qt開(kāi)發(fā)工具對(duì)C++庫(kù)進(jìn)行了封裝,提供了更豐富的API接口,在跨平臺(tái)方面QtMinGW版本也提供了更好的支持,因此,我們選擇Qt5.9MinGW版本作為本軟件的開(kāi)發(fā)工具,開(kāi)發(fā)平臺(tái)為Windows7[2]。
2 調(diào)試界面設(shè)計(jì)
2.1 軟件整體架構(gòu)
軟件整體架構(gòu)如圖1所示,分為網(wǎng)絡(luò)層、應(yīng)用層、顯示層三部分。網(wǎng)絡(luò)層用來(lái)傳輸控制命令與數(shù)據(jù)內(nèi)容,具體為心跳交互信息和遠(yuǎn)程控制命令信息;應(yīng)用層用來(lái)進(jìn)行各類功能的實(shí)現(xiàn),如應(yīng)用部署、終端打印、節(jié)點(diǎn)復(fù)位等;顯示層用于和用戶進(jìn)行命令交互以及最終數(shù)據(jù)的顯示,如節(jié)點(diǎn)樹(shù)狀圖的顯示、內(nèi)存數(shù)據(jù)繪圖的顯示、終端打印輸出的顯示等。
2.2 軟件各功能模塊分析
如下圖2所示,軟件可分為兩大功能模塊,資源管理與終端調(diào)試。資源管理包括6個(gè)功能模塊,分別為資源監(jiān)控、應(yīng)用部署、內(nèi)存查詢繪圖、符號(hào)表查詢、文件管理、版本管理。終端調(diào)試包含節(jié)點(diǎn)搜索、節(jié)點(diǎn)分組、終端打印、關(guān)鍵字過(guò)濾等4個(gè)功能模塊。下面依次對(duì)各功能模塊進(jìn)行介紹。
資源監(jiān)控:支持以樹(shù)形圖的方式顯示機(jī)箱結(jié)構(gòu)圖,支持實(shí)時(shí)動(dòng)態(tài)顯示機(jī)柜、機(jī)箱、模塊和處理器狀態(tài),顯示各模塊的機(jī)箱號(hào)、槽位號(hào)、節(jié)點(diǎn)號(hào)、網(wǎng)絡(luò)地址。
應(yīng)用部署:支持通過(guò)TCP網(wǎng)絡(luò)協(xié)議將本地應(yīng)用程序部署在資源節(jié)點(diǎn),并可多節(jié)點(diǎn)批量部署,提供復(fù)位和停止等命令。
內(nèi)存查詢繪圖:支持以圖形化和表格化的方式顯示內(nèi)存數(shù)據(jù),支持內(nèi)存數(shù)據(jù)的條件化查詢?nèi)缙鹗嫉刂?、地址長(zhǎng)度、數(shù)據(jù)類型等,并可以文本形式導(dǎo)出進(jìn)行進(jìn)一步處理。
符號(hào)表查詢:支持操作系統(tǒng)符號(hào)表顯示功能,包括全局函數(shù)和全局變量的名稱、地址、值、類型等關(guān)鍵信息,支持查看符號(hào)所指向的內(nèi)存的值。
文件管理:支持遠(yuǎn)程查看,操作目標(biāo)節(jié)點(diǎn)文件系統(tǒng),包括新建、上傳、下載、刪除等。
版本管理:支持顯示各資源節(jié)點(diǎn)的軟件版本信息,并可導(dǎo)出。
節(jié)點(diǎn)搜索:支持按指定條件搜索資源節(jié)點(diǎn)信息。
節(jié)點(diǎn)分組:支持將符合某條件的資源節(jié)點(diǎn)進(jìn)行分組。
終端打?。褐С謱?duì)多個(gè)資源節(jié)點(diǎn)的多窗口打印顯示。
關(guān)鍵字過(guò)濾:支持按相關(guān)的關(guān)鍵字對(duì)打印信息進(jìn)行過(guò)濾。
3 關(guān)鍵設(shè)計(jì)
交互協(xié)議:設(shè)計(jì)統(tǒng)一的資源管理協(xié)議用于調(diào)試界面與資源節(jié)點(diǎn)的信息交互。包含了節(jié)點(diǎn)的機(jī)箱號(hào)、槽位號(hào)、CPU號(hào)、IP地址、運(yùn)行狀態(tài)等信息,用于調(diào)試界面解析并顯示。
心跳設(shè)計(jì):心跳機(jī)制用于調(diào)試界面對(duì)資源節(jié)點(diǎn)的狀態(tài)監(jiān)控,調(diào)試界面周期性發(fā)送心跳查詢報(bào)文,資源節(jié)點(diǎn)的代理程序收到后會(huì)回復(fù)心跳響應(yīng)報(bào)文,進(jìn)行界面顯示。
批量部署設(shè)計(jì):實(shí)際使用中,批量部署是最常用的功能,用戶可直接加載XML格式的批量文件,解析后采用多線程的方式同時(shí)部署多個(gè)節(jié)點(diǎn)的多個(gè)任務(wù),提高操作效率。
節(jié)點(diǎn)圖形化設(shè)計(jì):通過(guò)獲取心跳信息,判斷節(jié)點(diǎn)當(dāng)前狀態(tài),利用QImage類在主界面繪制圖形化的節(jié)點(diǎn),根據(jù)不同顏色來(lái)區(qū)分節(jié)點(diǎn)的運(yùn)行狀態(tài),如藍(lán)色、灰色、白色分別代表運(yùn)行中、失聯(lián)、在線但無(wú)程序運(yùn)行的狀態(tài),分別用戶直觀查看節(jié)點(diǎn)狀態(tài)。程序流程圖如圖3所示。
節(jié)點(diǎn)數(shù)據(jù)庫(kù)設(shè)計(jì):采用SQLite數(shù)據(jù)庫(kù)進(jìn)行節(jié)點(diǎn)數(shù)據(jù)庫(kù)的設(shè)計(jì),根據(jù)資源節(jié)點(diǎn)的心跳報(bào)文提取各類信息存入節(jié)點(diǎn)數(shù)據(jù)庫(kù)中,便于其它功能的調(diào)用。SQLite數(shù)據(jù)庫(kù)擁有眾多優(yōu)點(diǎn)如管理簡(jiǎn)單,操作方便,生成的數(shù)據(jù)庫(kù)文件可以在各個(gè)平臺(tái)無(wú)縫移植;可以非常方便的以多種形式嵌入到其他應(yīng)用程序中,如靜態(tài)庫(kù)、動(dòng)態(tài)庫(kù)且易于維護(hù)等。
內(nèi)存繪圖設(shè)計(jì):內(nèi)存數(shù)據(jù)繪圖采用Qt Charts組件,Qt Charts組件模塊提供了一組易于使用的圖表組件,它使用Qt Graphics View Framework,圖表可以輕松集成到現(xiàn)代用戶界面中。Qt Charts可用作QWidgets、QGraphicsWidget或QML類型[3]。
整體布局設(shè)計(jì):菜單欄對(duì)應(yīng)了各種功能模塊,工具欄包含了常用調(diào)試工具,左側(cè)顯示資源節(jié)點(diǎn)列表,主界面顯示內(nèi)存數(shù)據(jù)、節(jié)點(diǎn)圖形化等相關(guān)內(nèi)容。
4 結(jié)語(yǔ)
本文介紹了一種以Qt 組件為基礎(chǔ)的水聲信號(hào)處理機(jī)調(diào)試界面軟件的設(shè)計(jì)與實(shí)現(xiàn)。該軟件較好的實(shí)現(xiàn)了各個(gè)功能,滿足了用戶需求,并且具有良好的可靠性和可擴(kuò)展性、便于用戶進(jìn)行二次開(kāi)發(fā)。
參考文獻(xiàn)
[1] 張波.Qt中的C++技術(shù)[M].北京:電子工業(yè)出版社,2012.
[2] Qt5.9C++開(kāi)發(fā)指南[M]. 人民郵電出版社,王維波、栗寶鵑、侯春望, 2018.
[3] 鄧子強(qiáng),王玉玫,鄧紅艷,等.基于Qt繪圖系統(tǒng)的圖形應(yīng)用優(yōu)化研究與實(shí)現(xiàn)[J].軟件, 2016, (12) :59-62.