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
主站蜘蛛池模板: 久热这里只有精品6| 男女精品视频| 国产高清在线观看| 国产高清精品在线91| 91福利片| 国产成人乱码一区二区三区在线| 99无码中文字幕视频| 波多野结衣二区| 国产喷水视频| 成人第一页| 国产成人AV大片大片在线播放 | 国产欧美另类| 亚洲天堂成人在线观看| 国产av无码日韩av无码网站| 午夜啪啪网| 欧美精品啪啪一区二区三区| 伊人久久婷婷五月综合97色| 亚洲国产91人成在线| 日本精品视频一区二区 | 国产精品视频猛进猛出| 青青草综合网| 国产人成午夜免费看| 91精品国产丝袜| 国产精品99久久久久久董美香| 国产在线观看91精品| 色综合中文| 国产成人资源| 中文字幕人妻无码系列第三区| 亚洲精品高清视频| 国产精品久久久久久久久久久久| 国内嫩模私拍精品视频| 无码AV动漫| 久久人人妻人人爽人人卡片av| 特级毛片免费视频| 亚洲人人视频| 无码一区二区波多野结衣播放搜索| 亚洲一道AV无码午夜福利| av大片在线无码免费| 人妻21p大胆| 亚洲天堂视频在线播放| 日本手机在线视频| 成人毛片免费在线观看| 国产精品成人一区二区不卡| 无码精品国产dvd在线观看9久| 超薄丝袜足j国产在线视频| 久久男人资源站| 国产91av在线| 欧美日韩国产成人在线观看| 国产美女无遮挡免费视频| 日本精品视频一区二区| 亚洲人成网站观看在线观看| 成人国产精品视频频| 久久精品一品道久久精品| 欧美19综合中文字幕| 国产成人av一区二区三区| 麻豆精选在线| 成人在线不卡视频| 99热国产在线精品99| 又粗又大又爽又紧免费视频| 中文字幕亚洲无线码一区女同| 日韩欧美在线观看| 亚洲国产看片基地久久1024| 亚洲欧洲日产国产无码AV| 91精品专区国产盗摄| 色综合天天操| 国产精品55夜色66夜色| 最新无码专区超级碰碰碰| 欧美成人午夜视频免看| 亚洲另类国产欧美一区二区| 色综合成人| 最新精品国偷自产在线| 91在线无码精品秘九色APP| 亚洲AV色香蕉一区二区| 动漫精品啪啪一区二区三区| 国产日韩欧美一区二区三区在线| 99re热精品视频国产免费| 欧美成在线视频| 72种姿势欧美久久久大黄蕉| 精品夜恋影院亚洲欧洲| 第九色区aⅴ天堂久久香| 手机精品福利在线观看| 欧美在线观看不卡|