• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      李敬,李昕岳

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

      0 引言

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

      上位機(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ī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ù)接收處理模”塊對(duì)相應(yīng)消息進(jìn)行響應(yīng),并更新“數(shù)據(jù)庫”相應(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ù)庫管理”更新“數(shù)據(jù)庫”相應(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ù)庫針對(duì)不同體制需要進(jìn)行差異化開發(fā)。針對(duì)不同體制,將線程2、線程3、線程4以及數(shù)據(jù)庫進(jìn)行單獨(dú)開發(fā),封裝成DLL,在不同體制下進(jìn)行加載。即在實(shí)現(xiàn)過程中整合各項(xiàng)目的上位機(jī)構(gòu)架,把公共功能做成公共界面,特有功能做成風(fēng)格統(tǒng)一的動(dòng)態(tài)庫加載的形式。這樣不僅能夠大大減少開發(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ù)庫設(shè)計(jì)

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

      3 結(jié)語

      目前很多軟件項(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ò)展的要求。

      猜你喜歡
      機(jī)軟件線程視圖
      5.3 視圖與投影
      視圖
      Y—20重型運(yùn)輸機(jī)多視圖
      SA2型76毫米車載高炮多視圖
      淺談linux多線程協(xié)作
      道岔監(jiān)測(cè)系統(tǒng)上位機(jī)軟件設(shè)計(jì)
      基于正交試驗(yàn)法的北斗用戶機(jī)軟件測(cè)試用例設(shè)計(jì)
      PCI-e高速數(shù)據(jù)采集卡的驅(qū)動(dòng)與上位機(jī)軟件設(shè)計(jì)
      電子器件(2015年5期)2015-12-29 08:43:12
      圖形化儀表控制系統(tǒng)上位機(jī)軟件的設(shè)計(jì)與開發(fā)
      Linux線程實(shí)現(xiàn)技術(shù)研究
      阆中市| 肇源县| 大石桥市| 阳春市| 长乐市| 紫金县| 宁武县| 固始县| 梧州市| 安福县| 吉隆县| 金乡县| 荣昌县| 崇文区| 扎兰屯市| 广平县| 马龙县| 通河县| 监利县| 尼玛县| 无锡市| 甘谷县| 乐东| 乌苏市| 威宁| 新民市| 宝丰县| 大丰市| 新安县| 临猗县| 新宾| 通许县| 天长市| 象山县| 乌海市| 兴仁县| 泾阳县| 苏尼特左旗| 武汉市| 浮山县| 兴宁市|