999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

飛行仿真中基于嵌入式Qt的CDU仿真模塊設計

2014-09-22 05:35:32顧宏斌
長沙航空職業技術學院學報 2014年2期
關鍵詞:頁面嵌入式數據庫

周 旋,顧宏斌

(南京航空航天大學民航學院,江蘇 南京 211100)

控制顯示組件(Control and Display Unit)是飛行管理系統中人機交互的重要部件,是飛行員在飛行訓練中使用最多的模塊。飛行員使用CDU完成建立飛行計劃、修改航路、輸入FMC數據、檢索顯示頁面等飛行管理功能。因此,對CDU的仿真是整個飛行模擬系統不可或缺的部分[1]。

目前為止,在科研領域,對CDU的仿真主要停留在仿真CDU的按鍵輸入和頁面顯示功能,而CDU顯示的難點,其頁面的生成,則使用第三方軟件生成[2],或只仿真少部分頁面[3],無法滿足實驗和仿真的需要。本文在基于嵌入式Linux的ARM平臺下,選擇Qt作為GUI開發工具。參考737NG系列的CDU,歸納了頁面特性,用面向對象的思想封裝各級頁面,將各級頁面的信息和邏輯關系以資源文件的形式的存儲在SQLite數據庫中,根據可修改的數據庫信息生成CDU頁面,實現頁面顯示功能和按鍵事件響應,簡化了CDU頁面的開發復雜度。并使用標準鍵盤,將標準按鍵映射為CDU按鍵[4],為開發1:1 CDU仿真按鍵做好準備。經測試,該方案可以方便地生成CDU頁面,處理按鍵事件,并與上位機通信。在設計新型號CDU時只需修改數據庫和新建頁面變量即可生成新的頁面,滿足對不同種CDU快速開發的需要。

1 飛行仿真中CDU模塊的功能

CDU是飛行管理計算機系統(Flight Management Computer System)的人機接口,通過CDU的鍵盤向FMCS輸入飛行計劃、性能數據、修改航路、檢索各種頁面信息(如導航數據、性能數據、咨詢信息、故障情況、自檢信息等)[1]。

在737NG系列飛機中,CDU負責頁面顯示與發送按鍵事件。其頁面的切換與數據的處理都是由FMC處理。但是在飛行仿真中,為了使各部分功能模塊化,方便分工合作,充分利用處理性能,將頁面標題生成和顯示,以及對按鍵事件的處理功能交給CDU仿真模塊,而上位機只負責復雜的飛行計劃的仿真。上位機與CDU仿真模塊通過UDP/IP協議通信,CDU仿真模塊將需處理的飛行數據發送給上位機,經上位機處理后發回,并在CDU仿真模塊中顯示。如圖1所示。

圖1 CDU仿真模塊的構架

2 CDU仿真模塊設計方案

在飛行管理計算系統的仿真中,CDU仿真模塊負責的是頁面顯示輸出功能。其顯示功能,就是根據鍵盤的輸入,改變頁面信息或者切換頁面,并將頁面上的信息傳輸給上位機的飛行計劃處理單元。因此,事實上CDU仿真模塊主要處理的任務就是根據外部響應切換頁面。實際的問題就轉化為,搭建一個實現顯示、按鍵輸入、并與上位機通信的嵌入式系統。

本文使用嵌入式Linux操作系統+QtGui來搭建CDU仿真模塊,Linux內核具有可裁剪的特性,可以裁剪不用的部分加快啟動時間[5]。Qt是主流的GUI解決方案,有面向對象性強,跨平臺的特點[6]。由于CDU的頁面數量很大,使用SQLite數據庫存儲頁面初始化信息。SQLite是主要面向嵌入式設備,擁有ODBC接口的輕量級數據庫。在Qt中使用QtSQL可以方便地使用SQLite數據庫功能[7]。

此外由于CDU按鍵功能的特殊性,可以將CDU功能按鈕的使能信息放在數據庫中。事實上,除了少部分特殊頁面的特殊功能以外,大部分頁面的初始化信息全部存儲在數據庫中,只需要更改數據庫信息,就可以改變頁面的文字信息。

3 CDU仿真模塊的設計

CDU仿真模塊主要功能有頁面生成、顯示,按鍵事件響應和網絡通信的功能。在系統啟動后,首先讀取數據庫,初始化頁面,然后接收上位機飛行計劃相關信息并顯示,根據按鍵事件做出插入、復制數據等操作,在完成某些操作后將信息傳輸給上位機。CDU仿真模塊流程如圖2所示。

圖2 CDU仿真模塊流程

圖3 頁面系統

3.1 頁面系統

搭建CDU仿真模塊的關鍵在于:如何方便地生成大量的CDU頁面;如何處理復雜的頁面邏輯關系?使用面向對象的方法,總結歸納CDU頁面的特性,歸納的程度越高,就越能簡化每個獨立頁面所需的代碼。

(1)頁面的生成

真實CDU的任何頁面系統都包含三個部分:頁面的標題信息,頁面數據,頁面切換標識。其中,標題信息為小字顯示,頁面數據和頁面邏輯為大字顯示,如圖3所示。

飛行仿真中,CDU仿真模塊初始化頁面標題信息和頁面邏輯,頁面數據由上位機處理生成并使用UDP傳輸給CDU仿真模塊。在初始化過程中,把頁面數據初始化為空字符,把它視作頁面切換標識的子集。實際所有的頁面數據都由CDU仿真模塊初始化,在生成頁面時可以忽略其區別,在之后在處理頁面數據。

根據真實CDU顯示特性,頁面文字分為2類:小字體字符,包含頁面標題信息[1];大字體字符,包括頁面數據、頁面標題和頁面邏輯。

總結所有CDU頁面的特點,可以發現小字體字符的位置不會變化,大字體字符有2種變化:左右分布或者左中右分布[1]。左右分布其實是左中右分布的特殊形式,即中間沒有文字。把每組字符串視為單獨的對象,創建繼承QLabel類的QWord類,大字符為 QWordBig,小字體字符為 QWordS-mall。創建繼承QWidget的QCDU類,作為CDU頁面功能的基類,包含22個QWordBig類和12個QWordSmall類。參考真實CDU的顯示特性,使用Qt的Layout排版,設置QwordBig分別左右對齊,中間對齊,并根據字符的長度自動調節QWordBig的長度,在填入初始化字符串后,該方案可以模擬所有的CDU頁面。大字體字符串抽象圖如圖4所示。

圖4 大字體字符串抽象圖

(2)頁面的切換

頁面的存儲使用Qt的堆棧功能,頁面的切換則是使用了SQLite的查詢功能。

雖然CDU的頁面數量較大,但主要存儲的是文字信息,實際占用的空間并不大。在CDU模塊初始過程中,實際是初始化所有的QCDU對象。將所有的QCDU對象存儲在QStackWidget堆棧中,每個對象獲取唯一的堆棧號,并存儲到數據庫中,通過選擇堆棧號,切換相應頁面到前臺。

真實CDU中,有3種方式切換頁面:按下具有標準選擇功能并對應行含有“<”或“>”字符的按鍵;按下功能按鍵;上下翻頁鍵[1]。頁面切換功能的實質是將行選鍵對應的字符與頁面一一對應起來。為此,在后頁的QCDU類中增加一組標識字符串,其表示標識為唯一,使之與前頁字符串一一對應。當按下按鍵是,程序根據行選鍵對應的內容,搜索數據庫,找到對應的堆棧號,使用QStack-Widget功能切換到指定頁面。

如:真實CDU中,在位置起始頁(POS INIT)中“ROUTE>”對應航路頁(RTE)。因此,設置航路頁的QCDU類的標識符為“ROUTE”。CDU仿真模塊中,按下“ROUTE>”對應的行選鍵后,系統自動除去“>”符號,并在數據庫中搜索“ROUTE”頁面,搜索到RTE序號為5,使用QStackWidget類,切換顯示到堆棧號為5的QCDU頁面,即RTE,同時把便簽欄數據復制到RTE中。

3.2 按鍵事件的處理

真實CDU一共有包括行選鍵、功能鍵、數字字母鍵在內的78個按鍵,仿真與實物的移植,提高仿真效果,訂制與對應機型CDU在鍵盤大小,按鍵布局與按鍵功能一致的鍵盤。在程序中將鍵盤的輸入映射為CDU按鍵,重新定義標準鍵盤的按鍵事件,如將F1~F6定義為左功能鍵。

功能鍵主要有12個快捷鍵,2個翻頁鍵,1個執行鍵組成[1]。按下快捷鍵時調用QStackWidget,直接跳轉到對應的頁面。翻頁鍵功能與之類似,配置QCDU加入堆棧時按頁面排列,按下下一頁按鍵時候當前頁面序號+1,即轉到下一頁。按下執行鍵時檢測上位機發送的使能變量,判斷是否能夠執行。

行選鍵是邏輯相對復雜的一種,每個功能鍵總計有5個功能,包括3個標準功能,2個非標準功能,其中非標準功能不常用[1]。將QCDU類作為基類,實現3個標準功能的處理函數,使用虛函數描述2個非標準功能,在子類中重寫非標準功能處理函數。3個標準功能包括標準選擇功能,標準輸入功能,刪除功能。標準輸入功能和刪除功能實際是QCDU類中22個QWord數據的交換。對于標準選擇功能,需要對QWord中的字符串進行判斷,在包含“>”或“<”進行頁面切換,不含則與另兩個標準功能類似,只進行頁面內數據的交換。

雖然每個行選鍵在程序初始化時都有5個功能,但真實CDU系統中每個行選鍵都只擁有固定的幾項功能,如起始位置檢索頁,該頁中行選鍵都具有標準輸入功能,而沒有標準選擇功能[1]。CDU仿真模塊根據數據庫中存儲的信息使能行選鍵的功能,只需要修改數據庫中的數據設置就能設置行選鍵的功能。

3.3 數據庫的使用

如果將頁面數據及頁面邏輯信息都存儲在程序中,不僅會使程序結構復雜,且擴大了程序的體積。并且由于CDU頁面較多,當需要建立新頁面時,要將頁面標題數據全部輸入,對于不熟悉程序源代碼的人來說維護較為麻煩。因此,參照程序本體/資源文件模型,將頁面中的標題數據和邏輯信息存儲在資源文件中,在程序本體啟動時讀取資源文件,根據資源文件初始化。

資源文件是一種存儲在硬盤中的文件,其中可以包含文字、位圖、音頻等信息。資源文件不需要經過編譯,程序在初始化時通過特定的方式讀取資源文件,并存儲在內存中。使用資源文件可以減少主程序體積,在替換資源時不用重新編譯程序,且不影響程序運行速度。為了方便資源文件的維護和擴展,使用SQLite數據庫文件格式存儲資源文件。

資源文件中存儲的數據包括4個部分:

(1)頁面標識名稱(title)。對于每一個頁面,使用一個唯一的字符型常量與其對應,稱為頁面標識。程序中使用該名稱區分每個頁面,確保頁面變量能從資源文件中正確讀取對應的信息。

(2)換頁信息(pagename),該條目與頁面邏輯有關。存儲的文本用作檢索名稱,用于搜索

(3)行選鍵使能信息。決定了行選鍵的功能,為了方便維護,每個使能功能以可用位置的形式存儲。如在位置起始頁中,L2,L3,L5,L6,R4,R5 按鍵擁有標準輸入功能,R1,R2,R3,R6擁有標準選擇功能。在數據庫存儲方式為:fselect值為7,8,9,12。fenter值為 2,3,4,5,10,11。

(4)頁面顯示信息。即CDU頁面顯示的信息,參照實際CDU系統輸入。

3.4 網絡通信

由于嵌入式系統的處理能力較弱,CDU仿真模塊主要處理的是頁面的生成和按鍵事件的處理,負責較復雜運算的FMC的功能由上位機處理。由于傳輸距離很近,選擇使用UDP/IP通信協議進行數據的傳輸。在CDU仿真模塊頁面初始化完成后,發送頁面名稱,請求上位機發送相應頁面數據,根據機發送的信息顯示頁面數據。每當進行切換頁面操作時,CDU仿真模塊將頁面標題、頁面數據按順序發送給上位機。

4 實驗與驗證

4.1 功能驗證

打開CDU仿真模塊,運行上位機,并填入頁面數據。CDU進入IDENT(識別檢索)頁,頁面的數據能完整顯示。按下字母按鍵,便簽欄數據改變。按下行選鍵6R,頁面切換,進入POS INIT(位置初始化)頁,所有數據正常顯示。按下PageDown,進入POS REF頁。按下行選鍵1L,數據被復制到便簽欄中,如圖5所示。

圖5 實物展示

4.2 增加新頁面測試

在已有頁面基礎上增加NAV DATA(導航數據頁面)。由于NAV DATA沒有非標準按鍵功能,直接使用QCdu類建立對象,插入堆棧。

QCdu*CduNavdata=new Cdu("NAV DATA");

insertcdu(CduNavdata);

數據庫中新建NAV DATA元素見表1。

表1

5 結論

通過對真實CDU頁面邏輯的分析,基于嵌入式Qt開發環境建立了可與上位機交互的CDU仿真模塊。使用面向對象仿真技術和數據庫抽象出頁面顯示特性和頁面邏輯,簡化了完整CDU模塊的設計,為完全模擬CDU模塊打下基礎。使用標準鍵盤模擬按鍵輸入,方便調試,并具有擴展性。實驗結果表明,該方法能較好地模擬真實CDU的運行,并能減少CDU頁面開發的開發量,適應于各種飛行仿真環境。

[1]欽慶生.飛行管理計算機系統[M].北京:國防工業出版社,1991.

[2]向明,馬存寶.基于VAPS的FMS CDU實時仿真系統開發[J].計算機仿真,2006,(8).

[3]廖蜂,鄭書朋,侯偉欽,等.一種高逼真度的控制顯示組件仿真方法[J].計算機工程,2011,(4).

[4]陳又軍.基于仿真硬件CDU的飛行管理系統訓練器擴展研究[J].航空維修與工程,2009,(4).

[5]孫天澤.嵌入式Linux開發技術[M].北京:航空航天大學出版社,2011.

[6]蔡志明,盧傳富,李立夏.精通Qt4編程[M].北京:電子工業出版社,2008.

[7]孫磊.基于ARM Linux的嵌入式數據庫SQLite的移植開發[D].昆明:昆明理工大學,2008.

猜你喜歡
頁面嵌入式數據庫
大狗熊在睡覺
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
搭建基于Qt的嵌入式開發平臺
數據庫
財經(2017年2期)2017-03-10 14:35:35
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
Altera加入嵌入式視覺聯盟
倍福 CX8091嵌入式控制器
自動化博覽(2014年4期)2014-02-28 22:31:15
主站蜘蛛池模板: 毛片在线播放网址| 欧美综合一区二区三区| 中文字幕在线永久在线视频2020| 99久久99视频| 亚洲精品视频免费| 2021国产在线视频| 国产精品主播| 久久综合伊人77777| 国产精品欧美在线观看| 久久99国产综合精品女同| 亚洲中文字幕精品| 麻豆国产原创视频在线播放| 国产超薄肉色丝袜网站| 伊人查蕉在线观看国产精品| 福利视频一区| 伊人福利视频| 亚洲精品国产日韩无码AV永久免费网 | 日本欧美视频在线观看| 精品国产www| 国产理论最新国产精品视频| 精品国产香蕉在线播出| 日韩欧美国产成人| 成人国产精品网站在线看| 亚洲国产理论片在线播放| 亚洲浓毛av| 无码aaa视频| 色视频国产| 色135综合网| 国产欧美自拍视频| 亚洲日产2021三区在线| 香蕉伊思人视频| 人与鲁专区| 欧美不卡视频在线| 黄色片中文字幕| 日韩a在线观看免费观看| 人妻无码中文字幕一区二区三区| 国产原创第一页在线观看| 毛片网站在线看| 国产精品分类视频分类一区| 人妻丰满熟妇av五码区| 制服丝袜 91视频| 日本午夜在线视频| 亚洲区第一页| 人妻出轨无码中文一区二区| 国产一级片网址| 日韩中文字幕亚洲无线码| 久久精品人人做人人综合试看| 日韩AV无码一区| 在线免费不卡视频| 五月天丁香婷婷综合久久| 国产成人AV综合久久| 亚洲最新在线| 人人艹人人爽| av色爱 天堂网| 国产日本一线在线观看免费| 亚洲天堂网站在线| 四虎成人精品在永久免费| 亚洲第一视频免费在线| 亚洲最黄视频| 欧美不卡二区| 国产精品免费福利久久播放| 婷婷综合色| 免费播放毛片| 5555国产在线观看| 国产va免费精品观看| 中文字幕乱妇无码AV在线| 国产精品妖精视频| 成人在线天堂| 日本一本正道综合久久dvd | 国产真实二区一区在线亚洲| 91福利一区二区三区| 免费日韩在线视频| 亚洲制服丝袜第一页| 精品人妻无码区在线视频| 一级在线毛片| 99久久99这里只有免费的精品| www中文字幕在线观看| 亚洲—日韩aV在线| 精品视频在线一区| 99re在线观看视频| 色综合天天视频在线观看| 亚洲Av激情网五月天|