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

基于VxWorks的人機界面圖形開發(fā)系統(tǒng)設計

2011-07-16 07:37:04劉東濤
指揮控制與仿真 2011年4期
關鍵詞:嵌入式設計

劉東濤,肖 峰

(1. 海軍駐426廠軍事代表室,遼寧 大連 116015;2. 江蘇自動化研究所,江蘇 連云港 222006)

1 嵌入式人機界面開發(fā)面臨的問題

VxWorks操作系統(tǒng)是美國WindRiver公司于1983年設計開發(fā)的一種嵌入式實時操作系統(tǒng),是嵌入式開發(fā)平臺的關鍵組成部分[1]。它以其良好的可靠性和卓越的實時性被廣泛地應用于通信、軍事、航空、航天等對實時性要求極高的領域中。

隨著VxWorks的應用群體不斷擴大,應用范圍不斷拓廣,用戶的需求也在不斷提高,很多應用系統(tǒng)已經(jīng)不再局限于無界面、無交互的方式。越來越多的用戶要求提供高性能、高可靠的圖形用戶界面支撐系統(tǒng)。而圖形化界面開發(fā)恰恰是VxWorks的弱點,國外對嵌入式圖形系統(tǒng)的研究起步較早,在國內占據(jù)了大部分市場,處于壟斷地位,如WindRive公司的Tilcon。但是Tilcon存在的缺點是中文支持度不好,不支持中文輸入功能[2]。國內在圖形開發(fā)環(huán)境方面起步比較晚,在這方面的研究主要是基于VxWorks的圖形中間件軟件包──WindML進行二次開發(fā)[3]。在WindML基礎上自行開發(fā)圖形相關的功能函數(shù),利用這種手段編寫的程序無法將顯示邏輯和數(shù)據(jù)處理邏輯劃分開來,界面開發(fā)工作量大,導致代碼重復,維護成本較高。作為操作系統(tǒng)和應用程序之間的中間件──飛漫公司的MiniGUI已經(jīng)取得一定的成果,但MiniGUI的窗口管理器沒有完全基于WindML窗口管理器,不能完全兼容WindML(VxWorks標準的圖形開發(fā)庫),使得MiniGUI在VxWorks上應用受到限制。針對這種情況,本文在VxWorks標準圖形庫WindML的基礎上提出了一種基于控件技術的人機界面圖形開發(fā)庫JARI-EGK的設計方法。

2 JARI-EGK層次框架

嵌入式系統(tǒng)往往是一種定制設備,有不同的硬件設備,各個系統(tǒng)對人機界面圖形庫要求各不相同,如有的系統(tǒng)只要求一些圖形功能,而有的系統(tǒng)則要求完備的圖形用戶界面開發(fā)庫支持,因此,嵌入式窗口系統(tǒng)必須層次化,方便配置和定制。

為了屏蔽人機界面圖形庫與不同硬件設備的關聯(lián),要求設計時就考慮分層次設計。如圖1所示,JARI-EGK建立在圖形抽象層(WindML)之上。WindML支持多媒體程序運行于嵌入式操作系統(tǒng),主要目的是用來提供基本的圖形、視頻和音頻技術,以及提供一個設計標準設備驅動程序框架。WindML包含兩個組件——軟件開發(fā)包(SDK)和驅動程序(DDK),SDK組件用來開發(fā)應用程序,它提供了一個全面的API集[4],包括圖形、輸入處理、多媒體、字體和內存管理,DDK組件是用來實現(xiàn)驅動程序的,它提供了一個完整的驅動程序參考集,包括硬件配置和API集,以便開發(fā)者能夠迅速地引導和應用自己的驅動程序[5]。在不同硬件平臺上運行時,只需通過適應性的底層作圖函數(shù)修改就能滿足JARI-EGK的需求。WindML 為操作系統(tǒng)提供一個基本的抽象層,JARI-EGK為更高一級的抽象,JARI-EGK中的抽象層可通過WindML將特定底層硬件的細節(jié)隱藏起來,而上層應用程序則無需關心底層的硬件平臺輸出和輸入設備,進而應用程序只關心自己的特定功能滿足要求就可以了。WindML屏蔽了JARI-EGK與硬件平臺之間的關系,使得JARI-EGK可方便地應用到不同的硬件環(huán)境中去。

圖1 JARI-EGK層次圖

3 JARI-EGK圖形開發(fā)系統(tǒng)設計

在JARI-EGK設計過程中,本文重點分析了窗口和控件關系、事件傳遞機制、窗口和控件狀態(tài)更新機制和中文輸入等問題。

3.1 窗口和控件類關系

在JARI-EGK的設計過程中,考慮到窗口、控件、控件組等關系,它們是有獨立也有聯(lián)系的各個錯綜復雜的關系的結合體。每個控件本身有共同的特點比如大小、位置、事件處理等,但是每個控件又有自己的不同行為,比如文本框、按鈕、TAB控件等,它們的外觀和事件處理方法都不相同,同時控件本身也存在父子關系,比如TAB控件包含幾頁,頁里面包含多少控件等,對于窗口也具有控件的某些特性、大小位置以及部分事件處理,整個JARI-EGK圖形系統(tǒng)應該具有組織、管理和查詢所有控件和窗口的能力[6],以及應用系統(tǒng)中包含多個窗口和控件,因而如何組織一個有效的數(shù)據(jù)結構管理這些控件和窗口是十分必要的。綜合這些原因,在JARI-EGK圖形系統(tǒng)中采用面向對象的設計理念,面向對象設計主要優(yōu)點有:封裝性,繼承性,多態(tài)性。在設計過程中,為了增加代碼重用,建立一個良好的類關系,采用不同類來設計窗口以及各個控件。由于這些原因首先設計了四個主要的類Egk_Widget(控件基類)、Egk_Window(窗口類)、Egk_Group(控件組類)和Egk(全局類),其基本關系如圖2所示。

控件基類(Egk_Widget)包含了窗口和控件的基本信息,譬如長、寬等。JARI-EGK中的所有的控件、窗口和控件組都是由控件基類派生,控件基類來實現(xiàn)不同控件之間的相似功能,各控件的消息處理和回調都是由重載控件基類的函數(shù)來實現(xiàn)的的,從而可以讓每個屬于控件基類的控件均保持有相同的函數(shù),這就是面向對象的多態(tài)性。由于窗口等有可能包含有控件,所以添加了Egk_Group(控件組類),Egk_Group也繼承自控件基類,同時又有自己的屬性,Egk_Group設置鏈表可以添加、刪除、查詢控件基類指針。在控件基類的設計過程中添加變量來區(qū)分當前控件類型是窗口還是控件。

圖2 窗口、控件類基本關系圖

當創(chuàng)建窗口的時候,在Egk類這個全局靜態(tài)變量鏈表里面增加一個窗口類指針。窗口包含一個控件指針數(shù)組,控件指針數(shù)組的第一個指針指向窗口本身,余下的依次指向其它控件以及控件組,控件組又可以包含別的控件指針,也就是可以包含其它控件,結束時控件指針數(shù)組設置結束標志、整個窗口、控件、控件組形成一個整體。另外設計一個窗口鏈表類包含各個窗口信息,譬如窗口ID號等,當存在多個窗口時,窗口鏈表類依次增加,查詢方法是存在多個窗口,先從窗口查詢開始,接著遍歷窗口包含的控件組和控件,對于控件組再遍歷控件組包含的所有控件。

3.2 事件傳遞機制

控件和窗口采用了面向對象的設計理念, 事件傳遞通過重載控件基類的事件處理函數(shù)virtual int handle(int event)。外部消息,比如WindML底層事件(鼠標、鍵盤原始信息),首先發(fā)送給窗口[7]。這個由WindML窗口管理器處理。Egk類函數(shù)Egk::run()負責分發(fā)這些消息,根據(jù)窗口的ID號,發(fā)到相應的窗口類,窗口類里面的控件組成員變量包含了所有加載到本窗口的控件指針,窗口類遍歷控件指針,根據(jù)控件基類位置信息判斷給哪個控件發(fā)送信息,然后就發(fā)送給該控件,控件基類指針指向要選中的控件,這樣具體執(zhí)行事件處理函數(shù)就可以執(zhí)行消息響應了。比如當窗口接收到鼠標按下消息后,判斷位置在按鈕區(qū)域,然后執(zhí)行按鈕的事件處理函數(shù)handle來實現(xiàn)按鈕的響應。如果含有控件組那么傳給控件組,控件組再遍歷控件指針數(shù)組,根據(jù)控件基類位置信息判斷給確定控件發(fā)送消息,具體的那個控件再執(zhí)行相應的事件處理函數(shù),如圖3(a)所示。對相似控件事件處理也充分利用面向對象中的繼承和派生方法,通過對已有控件事件處理函數(shù)的繼承,既可以讓該控件繼承已有控件類的大部分處理行為,同時又具有自己的特殊行為。比如,一般的編輯框會接收所有的鍵盤輸入,當我們希望自己的編輯框只接收數(shù)字時,就可以用這種辦法屏蔽非數(shù)字的字符輸入。

圖3 JARI-EGK、WindML窗口信息處理對照圖

JARI-EGK的事件處理采用開放性的設計原則,能夠和WindML應用程序能夠無縫結合,如圖3(a)、圖3(b)所示。對于JARI-EGK應用程序和WindML應用程序,WindML窗口相關的窗口信息和窗口管理起都是一樣的,WindML窗口只和底層事件、窗口信息和窗口管理器相關,對于WindML窗口來說兩個是完全相同的處理流程,所以JARI-EGK應用程序和WINDML應用程序能夠完全兼容。

3.3 窗口和控件狀態(tài)更新機制

窗口控件的行為和窗口一樣,即能夠接收鍵盤和鼠標等外部輸入,也可以在自己的區(qū)域內進行輸出,只是它們的所有活動被限制在主窗口中。當把控件和窗口都已經(jīng)創(chuàng)建完畢,接著就是循環(huán)等待各種外部事件。窗口和控件狀態(tài)更新實現(xiàn)機理如圖所示。設計的過程中我們在控件基類里添加一個變量_damage,當僅僅控件需要更新時,我們把控件的_damage變成EGK_DAMAGE_CHILD,同時也設置它所隸屬窗口的_damage值也為EGK_DAMAGE_CHILD,當控件需要更新時,發(fā)送消息告訴窗口需要更新但不是全部更新,Egk::run()循環(huán)檢測到窗口的更新信息只是更新控件,窗口類查詢控件每個控件更新信息后,直接調用控件的Draw函數(shù),更新控件,當整個窗口需要更新時,我們把窗口的_ damage變成EGK_DAMAGE_ALL這時窗口類更新整個窗口及其控件,這種更新機制保證了控件的及時有效的重繪。

圖4 窗口更新示意圖

3.4 中文輸入設計

JARI-EGK 的中文輸入是一個相對獨立的模塊(稱為 JARI-IME),完全內嵌在WindML中,它實際是一個特殊的窗口。該窗口將在啟動之后,首先將自己注冊為輸入法窗口,輸入法窗口一直出現(xiàn)在各個窗口的頂層。鍵盤信息管理負責管理輸入法模塊、底層鍵盤信息、WindML窗口之間鍵盤信息傳遞,鍵盤信息管理根據(jù)WindML窗口根據(jù)輸入法狀態(tài)決定鍵盤信息發(fā)送給輸入法窗口還是WindML窗口。發(fā)送給輸入法窗口后[8],經(jīng)過輸入發(fā)模塊轉換成相應信息后再返回給WindML窗口,如圖5。當活動主窗口發(fā)生變化時,窗口管理器會通知輸入法窗口當前的活動窗口。這樣,當輸入法窗口接收到按鍵消息并且翻譯為適當?shù)淖址螅涂梢詫⑵浒l(fā)送到當前的活動窗口。

窗口管理器為輸入法窗口定義了如下消息,當活動窗口發(fā)生變化時,JARI-EGK會向 IME 窗口發(fā)送這些消息:

IME_EGK_ SEND:發(fā)送該消息到當前活動窗口;

IME_EGK_ OPEN:發(fā)送該消息到當前活動窗口,告訴當前活動窗口輸入法窗口已經(jīng)打開;

IME_EGK_CLOSE:發(fā)送該消息到當前活動窗口,告訴當前活動窗口輸入法窗口已經(jīng)關閉。

圖5 輸入法模塊示意圖

4 結束語

在嵌入式操作系統(tǒng)VxWorks的圖形界面開發(fā)過程中,WindML作為VxWorks的標準圖形開發(fā)組件往往是最佳選擇,由于WindML只能實現(xiàn)點線圓作圖、窗口移動縮放等簡單功能,圖形界面開發(fā)支持較弱。本文采用基于控件技術的層次化設計和面向對象的設計方法,在WindML基礎之上實現(xiàn)了一種在VxWorks實時操作系統(tǒng)下具有自主知識產權和開放體系結構的人機界面圖形開發(fā)系統(tǒng)JARI_EGK。目前JARI-EGK已經(jīng)成功應用到海軍多個項目軟件開發(fā)中,實際工程應用表明,JARI_EGK在功能和性能方面能夠滿足VxWorks實時操作系統(tǒng)下圖形界面開發(fā)要求。

JARI_EGK目前只能實現(xiàn)了二維圖形界面顯示開發(fā),但是三維圖形界面顯示已經(jīng)是大勢所趨,因而如何實現(xiàn)三維圖形界面顯示開發(fā)將是今后下一步研究工作的重點。

[1]孔祥營,柏桂枝.嵌入式實時操作系統(tǒng)VxWorks及其開發(fā)環(huán)境[M].北京:中國電力出版社,2002.

[2]張加林,李松,等.基于Tilcon的VxWorks圖形界面開發(fā)技術[J].指揮控制與仿真,2007(5).

[3]皇甫禎,陳懷民,等.VxWorks嵌入式圖形界面設計[J].測控技術,2008(8).

[4]WindML DDK 3.0 PROGRAMMER’S GUIDE [R],Wind River Systems, Inc.2002.

[5]WindML SDK 3.0 PROGRAMMER’S GUIDE [R], Wind River Systems, Inc.2002.

[6]趙甫,李躍,等. VxWorks上的一種GUI系統(tǒng)的設計與實現(xiàn)[J]. 計算機工程與設計,2006(15).

[7]董英英,王啟峰,等.基于S3C2440的WindML圖形驅動設計[J].現(xiàn)代電子技術,2010(16).

[8]萬海東,劉丹,等.軍事指揮系統(tǒng)中VxWorks下漢字顯示技術[J]. 計算機工程與設計,2009(13).

猜你喜歡
嵌入式設計
何為設計的守護之道?
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統(tǒng)通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
搭建基于Qt的嵌入式開發(fā)平臺
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
嵌入式軟PLC在電鍍生產流程控制系統(tǒng)中的應用
Altera加入嵌入式視覺聯(lián)盟
主站蜘蛛池模板: 91精品国产自产在线老师啪l| 亚洲中文字幕23页在线| 欧美啪啪一区| 久久综合色天堂av| 中文字幕久久波多野结衣| 亚洲一区二区三区在线视频| 国产精品对白刺激| 一本二本三本不卡无码| 欧美成人区| 亚洲最黄视频| 伊人久久久久久久| 亚洲一级毛片| 乱系列中文字幕在线视频| 青青草原偷拍视频| 女人一级毛片| 欧美成人午夜视频免看| 又黄又湿又爽的视频| 国产成人免费| 中文字幕人成人乱码亚洲电影| 国产91精品久久| 久久久精品国产SM调教网站| 日本亚洲欧美在线| 亚洲午夜综合网| 九九热视频在线免费观看| 尤物精品国产福利网站| 一级一级一片免费| 日本AⅤ精品一区二区三区日| 午夜三级在线| 久久精品人妻中文系列| 97在线公开视频| 亚洲有无码中文网| 国产成人综合日韩精品无码不卡| 萌白酱国产一区二区| 91网在线| 亚洲精品综合一二三区在线| 国产无码性爱一区二区三区| 一级毛片免费观看不卡视频| 亚洲人成亚洲精品| 91精品人妻一区二区| 四虎成人在线视频| 黄色在线不卡| 国产视频大全| 99热国产这里只有精品9九 | 日韩欧美网址| 国产精品久久久精品三级| 啪啪永久免费av| aaa国产一级毛片| 亚洲国产中文综合专区在| 99久久亚洲综合精品TS| 狠狠色综合网| 国产精品妖精视频| 伊人久久综在合线亚洲91| 成人中文在线| 久视频免费精品6| 欧美国产日韩一区二区三区精品影视| 国内黄色精品| 日韩欧美视频第一区在线观看| 国产精品亚洲精品爽爽| 国产剧情无码视频在线观看| 72种姿势欧美久久久大黄蕉| 中文精品久久久久国产网址| aa级毛片毛片免费观看久| 成人a免费α片在线视频网站| 婷婷午夜影院| 亚洲h视频在线| 精品一区二区无码av| 青草视频免费在线观看| 九九九久久国产精品| 亚洲国产精品不卡在线| 91精品aⅴ无码中文字字幕蜜桃| 久草美女视频| 亚洲国产91人成在线| 99视频精品全国免费品| 亚洲一欧洲中文字幕在线| 欧美特黄一级大黄录像| 爽爽影院十八禁在线观看| 国产精品久久久久久久伊一| 精品无码国产一区二区三区AV| 国产乱子伦无码精品小说| 国产香蕉97碰碰视频VA碰碰看 | 午夜毛片免费看| 亚洲视频免费播放|