新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于GEF的MiniGUI可視化開(kāi)發(fā)工具設(shè)計(jì)

基于GEF的MiniGUI可視化開(kāi)發(fā)工具設(shè)計(jì)

作者: 時(shí)間:2011-11-21 來(lái)源:網(wǎng)絡(luò) 收藏

1 概 述
隨著嵌入式系統(tǒng)的廣泛應(yīng)用,圖形用戶界面(Graphical User Interface,GUI)在嵌入式系統(tǒng)中的地位也越來(lái)越重要。
目前比較成熟的嵌入式GUI系統(tǒng)包括MicroWin-dows、Qt/Embedded、等。MicroWindows可移植性好,開(kāi)發(fā)重點(diǎn)在底層的圖形引擎,但窗口系統(tǒng)和圖形接口方面的功能還比較欠缺。Qt/Embedded可移植性較好,Qt的X Window程序可以非常方便地移植到嵌入式系統(tǒng),但對(duì)系統(tǒng)硬件要求較高,主要用于手持設(shè)備。最初是為了工業(yè)控制系統(tǒng)開(kāi)發(fā)的,定制能力強(qiáng),速度快,性能好,特別適合于實(shí)時(shí)性要求高的場(chǎng)合。由于受到嵌入式系統(tǒng)硬件資源的限制,對(duì)嵌入式系統(tǒng)GUI的基本要求包括:占用資源少、高性能、高可靠性、可配置。本文選擇作為圖形界面支持系統(tǒng)。
MiniGUI是一款遵循LGPL條款的純自由軟件,是根據(jù)嵌入式系統(tǒng)應(yīng)用特點(diǎn)量身定做的圖形界面支持系統(tǒng),得到了廣泛應(yīng)用。它提供了完備的多窗口機(jī)制和消息傳遞機(jī)制,以及對(duì)話框和常用的控件類,包括文本框、按鈕、編輯框、列表框等;非常小巧,包含全部功能的庫(kù)文件僅為300 KB左右。傳統(tǒng)的MiniGUI程序開(kāi)發(fā)是文本編輯器的,開(kāi)發(fā)人員在程序源代碼編寫(xiě)過(guò)程中無(wú)法預(yù)先看到窗口、控件的整體效果,缺乏一個(gè)的開(kāi)發(fā)環(huán)境。因此,本文了一個(gè)MiniGUI,并使用Eclipse (Graphical Editing Framework)實(shí)現(xiàn)。

本文引用地址:http://butianyuan.cn/article/150039.htm


2 可視化整體設(shè)計(jì)
2.1 功能需求
可視化開(kāi)發(fā)工具要提供界面布局設(shè)計(jì)功能,主要包括:界面上控件位置的擺放、屬性的設(shè)置,為每個(gè)控件定義callback函數(shù);菜單、狀態(tài)條、位圖編輯;響應(yīng)界面編輯過(guò)程中發(fā)生的交互事件,比如drop/drag、undo/redo、move、de-lete、resize等;保存及解析呈現(xiàn)相應(yīng)布局的功能;根據(jù)用戶設(shè)計(jì)生成可運(yùn)行的MiniGUI源代碼。
2.2 整體結(jié)構(gòu)
可視化開(kāi)發(fā)工具主要由界面設(shè)計(jì)工具和源代碼生成工具兩部分組成。整體結(jié)構(gòu)如圖1所示。

界面設(shè)計(jì)工具:實(shí)現(xiàn)所見(jiàn)即所得的界面編輯器功能,可以根據(jù)需要改變和調(diào)整顯示的內(nèi)容和形式,這使得用戶界面的制作非常方便。采用傳統(tǒng)的面向?qū)ο笤O(shè)計(jì)方法來(lái)開(kāi)發(fā)可視化界面,會(huì)遇到用戶界面和底層的數(shù)據(jù)雜合、接口擴(kuò)展導(dǎo)致的類膨脹等問(wèn)題,因此界面設(shè)計(jì)工具使用MVC模式設(shè)計(jì)。用戶通過(guò)界面設(shè)計(jì)工具的“控件設(shè)計(jì)”設(shè)置控件屬性;“交互事件響應(yīng)”用于響應(yīng)界面編輯過(guò)程中發(fā)生的交互事件,完成控件屬性的修改。這兩部分對(duì)應(yīng)MVC中的Control-ler。“控件類”保存控件的各種屬性,對(duì)應(yīng)Model。“控件顯示”根據(jù)控件類的屬性設(shè)置顯示控件,對(duì)應(yīng)View。XML文檔則負(fù)責(zé)保存界面布局,控件類也能夠根據(jù)XML解析文檔內(nèi)容得到自身屬性。
源代碼生成工具:通過(guò)遍歷所有控件類的屬性,將圖形用戶界面布局按照運(yùn)行平臺(tái)要求(目前僅支持RTEMS)生成相應(yīng)的MiniGUI源代碼。
2.3 組織結(jié)構(gòu)
所有控件類通過(guò)樹(shù)的形式來(lái)管理。樹(shù)的頂層表示一個(gè)管理的工程,其下包括所有的對(duì)話框、菜單、狀態(tài)條及位圖資源,對(duì)話框的子節(jié)點(diǎn)是其上顯示的所有控件,菜單包括彈出菜單和菜單項(xiàng),狀態(tài)條與對(duì)話框類似,樹(shù)形結(jié)構(gòu)如圖2所示。由于XML文檔會(huì)被Java解析成樹(shù)形結(jié)構(gòu),解析界面布局的過(guò)程就是一個(gè)樹(shù)的遍歷過(guò)程。使用樹(shù)形結(jié)構(gòu)來(lái)組織控件類,能夠讓軟件在邏輯上簡(jiǎn)單易懂,控件組織關(guān)系清晰明了,并且通過(guò)樹(shù)的遍歷可以保存界面布局及生成源代碼。

由于圖形用戶界面中許多元素具有共同屬性,本文把這些元素的共有屬性及方法抽象出來(lái)作為基類。主要使用2個(gè)基類:容器類Content和控件類Control。Content主要包括容器ID、文字屬性及保存解析控件等方法;Control主要包括控件ID、位置大小、控件風(fēng)格等屬性,以及保存解析控件、生成源代碼等方法。其中,對(duì)話框、菜單、狀態(tài)條和位圖繼承自Content,如圖3(a)所示;對(duì)話框控件繼承自Control,如圖3(b)所示。在生成源代碼等操作時(shí)自頂向下遍歷整個(gè)界面工程,可直接調(diào)用基類的方法,無(wú)需區(qū)分控件具體的類別。這樣提高了代碼的重用度,減少了冗余代碼。


上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉