国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Qt的衛(wèi)星通信上位機(jī)軟件架構(gòu)設(shè)計(jì)

2018-08-24 11:15李敬李昕岳
現(xiàn)代計(jì)算機(jī) 2018年21期
關(guān)鍵詞:線程上位視圖

李敬,李昕岳

(廣州海格通信集團(tuán)股份有限公司,廣州 510663)

0 引言

Qt是桌面、嵌入式和移動(dòng)的跨平臺(tái)應(yīng)用開發(fā)框架,支持的平臺(tái)包括 Linux、Windows、VxWorks、Android等。Qt本身不是一種編程語(yǔ)言,它是一個(gè)用C++編程的框架。但它不僅僅只是一個(gè)GUI工具包,它提供了在網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)、OpenGL、Web技術(shù)、傳感器、通信協(xié)議、XML和JSON處理、打印、PDF生成等領(lǐng)域的跨平臺(tái)開發(fā)模塊[1-2]。Qt5采用新的模塊化代碼庫(kù),使得移植更加簡(jiǎn)單,只需移植所需模塊即可。

上位機(jī)和下位機(jī)的操作方式為:上位機(jī)是指可以直接發(fā)出操控指令的計(jì)算機(jī)或軟件,下位機(jī)是直接控制設(shè)備獲取設(shè)備狀況的計(jì)算機(jī)或軟件。根據(jù)上位機(jī)界面上的觸生成相應(yīng)命令,此命令傳輸給下位機(jī)后,下位機(jī)再把命令翻譯成相應(yīng)時(shí)序信號(hào)來控制相應(yīng)設(shè)備或機(jī)器。下位機(jī)不定時(shí)地獲取設(shè)備狀態(tài)數(shù)據(jù),把數(shù)據(jù)轉(zhuǎn)成數(shù)字信號(hào),反饋給相應(yīng)的上位機(jī)。本文討論的上位機(jī)軟件運(yùn)行在PC上,主要功能是實(shí)現(xiàn)在PC機(jī)上控制衛(wèi)星通信板卡,對(duì)板卡進(jìn)行配置、狀態(tài)查詢、數(shù)據(jù)誤碼等測(cè)試。

1 上位機(jī)軟件模型MVC架構(gòu)

典型的MVC架構(gòu),如圖1所示:

圖1 MVC組件類型的關(guān)系和功能

MVC 的縮寫為模型(Model)、視圖(View)和控制器(Controller),分別指內(nèi)部數(shù)據(jù)、數(shù)據(jù)表示和輸入輸出控制部分。

(1)模型(Model)

Model是整個(gè)MVC架構(gòu)的核心,它是與問題相關(guān)數(shù)據(jù)的邏輯抽象,代表對(duì)象的內(nèi)在屬性。

Model的作用有:①抽象應(yīng)用程序,把程序數(shù)據(jù)的結(jié)構(gòu)和操作進(jìn)行封裝;②對(duì)Controller提供對(duì)程序功能的訪問;③接受View對(duì)數(shù)據(jù)的查詢請(qǐng)求;④當(dāng)數(shù)據(jù)變化時(shí),通知對(duì)此感興趣的View。

(2)視圖(View)

View是Model的外在表現(xiàn),一個(gè)Model可以與一個(gè)或多個(gè)View對(duì)應(yīng)。View是應(yīng)用系統(tǒng)跟外界的接口,具有與外界進(jìn)行交互的功能。

View的作用有:①對(duì)數(shù)據(jù)的表現(xiàn)部分進(jìn)行抽象;②將數(shù)據(jù)展現(xiàn)給用戶,獲得用戶輸入;③將用戶輸入轉(zhuǎn)發(fā)給Controller;④當(dāng)接收到來自Model的“數(shù)據(jù)已更新”通知后,更新顯示信息。

(3)控制器(Controller)

Controller是連接Model和View的紐帶。

Controller的作用有:①把用戶的交互和應(yīng)用程序語(yǔ)義的映射抽象出來;②將用戶輸入命令翻譯為應(yīng)用程序可識(shí)別的動(dòng)作,并轉(zhuǎn)發(fā)給Model;③根據(jù)用戶的輸入命令和Model對(duì)程序動(dòng)作的輸出,選擇適當(dāng)?shù)腣iew來呈現(xiàn)數(shù)據(jù)。

MVC是模型用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個(gè)部件里面,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫業(yè)務(wù)邏輯[3-4]。

Qt上位機(jī)的MVC將View與Controller結(jié)合在一起,添加了代理Delegate,組成了模型Model(表示數(shù)據(jù))、視圖View(表示用戶界面)、代理Delegate(自定義數(shù)據(jù)條目item的顯示與編輯方式)的模式。

圖2中Model與數(shù)據(jù)(Data)通信,并提供接口,View從Model中獲取Data條目索引,Delegate繪制Data條目。整個(gè)模型的通信方式為:信號(hào)&槽。此模型的工作方式為:Data改變時(shí),Model發(fā)出信號(hào)給View;用戶對(duì)界面進(jìn)行操作時(shí),View發(fā)出信號(hào);Delegate發(fā)出信號(hào)告知Model和View編輯器目前的狀態(tài)。

2 上位機(jī)軟件系統(tǒng)架構(gòu)設(shè)計(jì)

上位機(jī)系統(tǒng)需要滿足高吞吐量的數(shù)據(jù)處理,同時(shí)需要適應(yīng)多個(gè)通信體制,將上位機(jī)軟件的收發(fā)數(shù)據(jù)、業(yè)務(wù)處理、視圖分別單獨(dú)剝離開來,統(tǒng)一模型、視圖和控制器之間的交互接口,屏蔽不同通信體制內(nèi)部處理的差異[5]。上位機(jī)軟件系統(tǒng)架構(gòu)設(shè)計(jì)如圖3所示:

圖2 Qt上位機(jī)模型與視圖結(jié)構(gòu)圖

圖3 上位機(jī)軟件架構(gòu)

不同體制均采用所示軟件架構(gòu),線程1負(fù)責(zé)讀取接口數(shù)據(jù)并將數(shù)據(jù)傳遞到“讀緩存”,線程2負(fù)責(zé)從“讀緩存”讀取數(shù)據(jù),并分發(fā)到各個(gè)“數(shù)據(jù)接收處理模塊”,“數(shù)據(jù)接收處理?!眽K對(duì)相應(yīng)消息進(jìn)行響應(yīng),并更新“數(shù)據(jù)庫(kù)”相應(yīng)的狀態(tài)。線程3中的“控制器”負(fù)責(zé)“視圖”選擇,將用戶動(dòng)作映射成業(yè)務(wù)“數(shù)據(jù)處理模塊”狀態(tài),并進(jìn)行更新;“視圖”用于人機(jī)交互。線程4負(fù)責(zé)“數(shù)據(jù)發(fā)送處理”,由“控制器”傳遞過來的指令觸發(fā)相應(yīng)數(shù)據(jù)發(fā)送功能,需要發(fā)送的數(shù)據(jù)傳遞到“數(shù)據(jù)發(fā)送緩存”,并通過“數(shù)據(jù)庫(kù)管理”更新“數(shù)據(jù)庫(kù)”相應(yīng)的狀態(tài)。線程5負(fù)責(zé)從“數(shù)據(jù)發(fā)送緩存”讀取數(shù)據(jù)并發(fā)送到接口。

2.1 上位機(jī)軟件通信體制加載

對(duì)于不同通信體制,線程1和線程5對(duì)應(yīng)的功能和數(shù)據(jù)結(jié)構(gòu)不存在差異,可單獨(dú)開發(fā)成一個(gè)獨(dú)立的模塊,適用于所有體制[6]。

該上位機(jī)為了兼容不同通信體制,線程2、線程3、線程4以及數(shù)據(jù)庫(kù)針對(duì)不同體制需要進(jìn)行差異化開發(fā)。針對(duì)不同體制,將線程2、線程3、線程4以及數(shù)據(jù)庫(kù)進(jìn)行單獨(dú)開發(fā),封裝成DLL,在不同體制下進(jìn)行加載。即在實(shí)現(xiàn)過程中整合各項(xiàng)目的上位機(jī)構(gòu)架,把公共功能做成公共界面,特有功能做成風(fēng)格統(tǒng)一的動(dòng)態(tài)庫(kù)加載的形式。這樣不僅能夠大大減少開發(fā)人員的工作量,提高工作效率,還能有效地增強(qiáng)程序的可維護(hù)性和可移植性,實(shí)現(xiàn)多項(xiàng)目資源共享,代碼繼承。同時(shí)統(tǒng)一界面風(fēng)格,進(jìn)一步提升用戶體驗(yàn)。

2.2 上位機(jī)軟件模塊接口數(shù)據(jù)格式定義

為了保持各個(gè)模塊的獨(dú)立性,減少程序之間的耦合,提高程序的可移植性,降低開發(fā)難度,需規(guī)定各個(gè)核心功能模塊之間數(shù)據(jù)交互格式[7]。定義了兩種數(shù)據(jù)格式,如下所示:

接口交互數(shù)據(jù)格式1:

2.3 上位機(jī)軟件收數(shù)據(jù)處理模塊設(shè)計(jì)

上位機(jī)軟件收數(shù)據(jù)處理模塊設(shè)計(jì)如圖4所示:

上位機(jī)軟件接收數(shù)據(jù)按照功能劃分7類,包括物理層接口處收發(fā)數(shù)據(jù)監(jiān)控、接口性能測(cè)試、物理層功能模塊監(jiān)測(cè)、網(wǎng)絡(luò)協(xié)議層功能模塊監(jiān)測(cè)、接入設(shè)備網(wǎng)絡(luò)狀態(tài)監(jiān)控、接入設(shè)備參數(shù)監(jiān)控和接收業(yè)務(wù)數(shù)據(jù)管理。不同體制均采用同樣的功能模塊劃分,模塊對(duì)外接口命名、參數(shù)類型均統(tǒng)一,屏蔽不同體制造成的內(nèi)部處理的差異。

圖4 上位機(jī)軟件收數(shù)據(jù)處理模塊

2.4 上位機(jī)軟件發(fā)數(shù)據(jù)處理模塊設(shè)計(jì)

上位機(jī)軟件發(fā)送數(shù)據(jù)處理模塊設(shè)計(jì)如圖5所示:

圖5 上位機(jī)軟件發(fā)數(shù)據(jù)處理模塊

上位機(jī)軟件發(fā)數(shù)據(jù)處理模塊按照功能分為5類,包括誤碼測(cè)試數(shù)據(jù)發(fā)送、單個(gè)參數(shù)配置/查詢、接入設(shè)備信道資源配置、單個(gè)測(cè)試信令發(fā)送、業(yè)務(wù)數(shù)據(jù)發(fā)送。不同體制均采用同樣的功能模塊劃分,模塊對(duì)外接口命名、參數(shù)類型均統(tǒng)一,屏蔽不同體制造成的內(nèi)部處理的差異。

2.5 上位機(jī)數(shù)據(jù)庫(kù)設(shè)計(jì)

上位機(jī)數(shù)據(jù)庫(kù)包括宏定義、數(shù)據(jù)結(jié)構(gòu)定義、接入設(shè)備參量定義和管理等。數(shù)據(jù)庫(kù)分為公共部分和針對(duì)不同體制的個(gè)性化定義部分。數(shù)據(jù)庫(kù)通過統(tǒng)一的接口供所有開發(fā)人員調(diào)度,屏蔽對(duì)數(shù)據(jù)庫(kù)參量的直接操作?!皵?shù)據(jù)管理”主要管理接入設(shè)備參量和狀態(tài),對(duì)外提供對(duì)相應(yīng)的更新和讀取的接口。

3 結(jié)語(yǔ)

目前很多軟件項(xiàng)目的功能測(cè)試都是通過上位機(jī)來配合,上位機(jī)作為應(yīng)用中感知節(jié)點(diǎn)信息,進(jìn)行顯示和控制的應(yīng)用控制臺(tái),在項(xiàng)目研發(fā)、調(diào)試、測(cè)試等階段起著至關(guān)重要的作用。所以上位機(jī)操作界面的設(shè)計(jì)、開發(fā)、完善的過程都需要進(jìn)行充分的驗(yàn)證,尤其誤碼、誤幀統(tǒng)計(jì)等性能測(cè)試時(shí),要求上位機(jī)給出實(shí)時(shí)、準(zhǔn)確的顯示結(jié)果,更需要上位機(jī)具備一套合理的架構(gòu),能夠?qū)崿F(xiàn)后續(xù)功能擴(kuò)展的要求。

猜你喜歡
線程上位視圖
5G終端模擬系統(tǒng)隨機(jī)接入過程的設(shè)計(jì)與實(shí)現(xiàn)
實(shí)時(shí)操作系統(tǒng)mbedOS 互斥量調(diào)度機(jī)制剖析
淺析體育賽事售票系統(tǒng)錯(cuò)票問題的對(duì)策研究
特斯拉 風(fēng)云之老阿姨上位
視圖
Y—20重型運(yùn)輸機(jī)多視圖
SA2型76毫米車載高炮多視圖
基于ZigBee和VC上位機(jī)的教室智能監(jiān)測(cè)管理系統(tǒng)
Django 框架中通用類視圖的用法
基于VC的PLC數(shù)據(jù)采集管理系統(tǒng)
宝坻区| 罗山县| 渝中区| 大姚县| 广丰县| 和田县| 广饶县| 长武县| 桂平市| 化隆| 宁海县| 郑州市| 丹凤县| 马边| 吕梁市| 大石桥市| 建阳市| 莱西市| 崇仁县| 霍邱县| 抚顺县| 海原县| 金川县| 濮阳市| 阳原县| 宜良县| 定陶县| 淮滨县| 门源| 太湖县| 措勤县| 彰化县| 玉林市| 麦盖提县| 松溪县| 黄平县| 南和县| 西乌| 纳雍县| 麻城市| 瑞昌市|