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

基于VxWorks的人機界面圖形開發系統設計

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

劉東濤,肖 峰

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

1 嵌入式人機界面開發面臨的問題

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

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

2 JARI-EGK層次框架

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

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

圖1 JARI-EGK層次圖

3 JARI-EGK圖形開發系統設計

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

3.1 窗口和控件類關系

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

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

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

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

3.2 事件傳遞機制

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

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

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

3.3 窗口和控件狀態更新機制

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

圖4 窗口更新示意圖

3.4 中文輸入設計

JARI-EGK 的中文輸入是一個相對獨立的模塊(稱為 JARI-IME),完全內嵌在WindML中,它實際是一個特殊的窗口。該窗口將在啟動之后,首先將自己注冊為輸入法窗口,輸入法窗口一直出現在各個窗口的頂層。鍵盤信息管理負責管理輸入法模塊、底層鍵盤信息、WindML窗口之間鍵盤信息傳遞,鍵盤信息管理根據WindML窗口根據輸入法狀態決定鍵盤信息發送給輸入法窗口還是WindML窗口。發送給輸入法窗口后[8],經過輸入發模塊轉換成相應信息后再返回給WindML窗口,如圖5。當活動主窗口發生變化時,窗口管理器會通知輸入法窗口當前的活動窗口。這樣,當輸入法窗口接收到按鍵消息并且翻譯為適當的字符之后,就可以將其發送到當前的活動窗口。

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

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

IME_EGK_ OPEN:發送該消息到當前活動窗口,告訴當前活動窗口輸入法窗口已經打開;

IME_EGK_CLOSE:發送該消息到當前活動窗口,告訴當前活動窗口輸入法窗口已經關閉。

圖5 輸入法模塊示意圖

4 結束語

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

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

[1]孔祥營,柏桂枝.嵌入式實時操作系統VxWorks及其開發環境[M].北京:中國電力出版社,2002.

[2]張加林,李松,等.基于Tilcon的VxWorks圖形界面開發技術[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系統的設計與實現[J]. 計算機工程與設計,2006(15).

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

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

猜你喜歡
嵌入式設計
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
瞞天過?!律O計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
搭建基于Qt的嵌入式開發平臺
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 婷婷色中文| 一区二区三区国产精品视频| 国产最新无码专区在线| 国产哺乳奶水91在线播放| 激情综合网址| 国产精品永久免费嫩草研究院| 亚洲中文字幕在线观看| 国产在线无码av完整版在线观看| 亚洲成综合人影院在院播放| 99在线视频网站| 欧美精品综合视频一区二区| 久久亚洲中文字幕精品一区 | 亚洲a免费| 国产一级无码不卡视频| 国产亚洲欧美另类一区二区| 波多野结衣久久精品| 伊人婷婷色香五月综合缴缴情| 永久免费AⅤ无码网站在线观看| 成人在线天堂| 特级欧美视频aaaaaa| 日韩久久精品无码aV| 精品精品国产高清A毛片| 久久久精品国产亚洲AV日韩 | a级毛片免费看| 幺女国产一级毛片| 2020最新国产精品视频| 91丨九色丨首页在线播放| 久久美女精品国产精品亚洲| 日韩欧美高清视频| 亚洲中文久久精品无玛| 直接黄91麻豆网站| 在线99视频| 亚洲国产中文精品va在线播放| 国产永久在线观看| 99在线视频网站| 综合色在线| 日韩黄色在线| 亚洲欧美精品一中文字幕| 91伊人国产| 国产成人精品一区二区三区| 亚洲色图欧美在线| 色综合天天操| 免费一级无码在线网站| 国产精品99久久久久久董美香| 亚洲精品麻豆| 真人高潮娇喘嗯啊在线观看| 亚洲精品日产精品乱码不卡| 天堂av综合网| 白浆免费视频国产精品视频 | 欧美成人亚洲综合精品欧美激情| 欧美国产综合色视频| 国产毛片高清一级国语| 成人毛片在线播放| 波多野结衣二区| 国产亚洲精品无码专| 日韩精品一区二区三区swag| 亚洲欧美日韩综合二区三区| 福利国产微拍广场一区视频在线| 精品成人免费自拍视频| 欧美区一区二区三| 亚洲第一av网站| 免费可以看的无遮挡av无码| 国产麻豆精品在线观看| 国产毛片片精品天天看视频| 日韩成人在线一区二区| 丁香五月激情图片| 国内精品一区二区在线观看| 久久国产亚洲欧美日韩精品| 六月婷婷精品视频在线观看| 九九九精品成人免费视频7| 亚洲一区无码在线| 国产亚洲高清视频| 国产情精品嫩草影院88av| 永久毛片在线播| 97青草最新免费精品视频| 91在线无码精品秘九色APP| 1级黄色毛片| 99re经典视频在线| 999精品免费视频| 91免费国产在线观看尤物| 午夜少妇精品视频小电影| 中文字幕免费视频|