技术开发 频道

MiniGUI背景,发展及优势

    【IT168 技术文档】

    1.4 各种面向实时嵌入式系统的 GUI 之比较

    比较上述几个面向嵌入式系统的 GUI,我们认为目前比较成熟,同时得到最多开发人员认可的有紧缩的 X Window 系统、MiniGUI、MicroWindows 等系统。尽管紧缩的 X Window 系统其 X 服务器可以降低到 800K 的大小,但因为 X Window 系统的运行还需要其他程序和库的支持,包括 X 窗口管理器、XLib、建立在 XLib 之上的 GTK 和 QT 等函数库,因此,紧缩的X Window 系统在运行期间所占用的系统资源很多,加上中文显示和中文输入等本地化代码之后,系统的整体尺寸和运行时的资源消耗将进一步变大。因此,嵌入式系统的开发商往往将紧缩的 X Window 系统定位在机顶盒等对资源要求并不苛刻的嵌入式系统上。

    MiniGUI 和 MicroWindows 均为自由软件,只是前者遵循 LGPL 条款,后者遵循 MPL 条款。这两个系统的技术路线也有所不同。MiniGUI 的策略是首先建立在比较成熟的图形引擎之上,比如 SVGALib 和 LibGGI,开发的重点在于窗口系统、图形接口之上;MicroWindows 目前的开发重点则在底层的图形引擎之上,窗口系统和图形接口方面的功能还比较欠缺。举个例子来说,MiniGUI 有一套用来支持多字符集和多编码的函数接口,可以支持各种常见的字符集,包括 GB、BIG5、UNICODE 等,而 MicroWindows 在多字符集的支持上尚没有统一接口。

    MiniGUI 的重要特色

    2.1 设计目标:小巧和可配置

    MiniGUI 最初是为了满足一个工业控制系统(计算机数控系统)的需求而设计和开发的。这个工业控制系统是清华大学为一台数控机床设计的计算机数控系统(CNC)。在比较 DOS、Windows 98、Windows NT、Linux 等系统之后,该项目组决定选择 RT-Linux 作为实时操作系统,以便满足 2ms 甚至更高的实时性。但是图形用户界面是一个问题,因为 X Window 不适合于实时控制系统,并且当时 X Window 系统的本地化也不尽人意。因此,决定自己开发一套图形用户界面支持系统。这就是 MiniGUI 产生的背景。显然,MiniGUI 一开始就针对实时系统而设计,因此,在设计之初就考虑到了小巧、高性能和高效率。目前,这个数控系统的开发已近尾声,MiniGUI 在其中担当了非常重要的角色。

    在考虑到其他不同于数控系统的嵌入式系统时,为了满足千变万化的需求,必须要求 GUI 系统是可配置的。在 CNC 系统中得到成功应用之后,我们立即着手于 MiniGUI 可配置的设计。我们通过 Linux 下的 automake 和 autoconf 接口,实现了大量的编译配置选项,通过这些选项可指定 MiniGUI 库中包括哪些功能而同时不包括哪些功能。

    因此,MiniGUI 是一个非常适合于工业控制实时系统以及嵌入式系统的可定制的、小巧的图形用户界面支持系统。

    2.2 重要特色

    2.2.1 多线程和多窗口

    MiniGUI 中的窗口基本分四类,分别为主窗口、对话框、控件和主窗口中的子窗口。

    MiniGUI 中的主窗口和 Windows 应用程序的主窗口概念类似,但有一些重要的不同,MiniGUI 中的每个主窗口及其附属主窗口对应于一个单独的线程,通过函数调用可建立主窗口以及对应的线程。每个线程有一个消息队列,属于同一线程的所有主窗口从这一消息队列中获取消息并由窗口过程(回调函数)进行处理。

    VCOnGUI,即 Virtual Console On MiniGUI,是 MiniGUI 上的虚拟控制台,即运行在 MiniGUI 上的 Linux 控制台仿真器,见图 1.从图1可以看到,MiniGUI 应用程序能够同时创建多个窗口,并且运行在不同的线程。


    图 1:VConGUI -- MiniGUI 上的 Linux 控制台仿真器

    2.2.2 对话框和标准控件

    MiniGUI 中的对话框是一种特殊的窗口,对话框一般和控件一起使用,这两个概念和 Windows 或 X Window 中的相关概念是类似的。MiniGUI 支持的控件类型有:

    静态框:文本、图标或矩形框等。

    文本框:单行或多行的文本编辑框。

    按钮:单选钮、复选框和一般按钮等。

    列表框。

    进度条。

    工具栏。

    HappyLinux 是国内某公司开发的中文 Linux 发行版,该发行版的安装程序就建立在 MiniGUI 之上。图 2 和图 3 是 HappyLinux 安装程序的典型屏幕。


    图 2:HappyLinux 的软件包选择界面


    图 3:HappyLinux 的分区界面

     2.2.3 其他 GUI 元素

    MiniGUI 还支持弹出式菜单、插入符、定时器、光标、快捷键等常见的 GUI 元素。图 4 和图 5 说明了其他 GUI 元素的应用情况。图 4 是 Bomb 游戏,是 Windows 扫雷游戏的克隆。图 5 是经典的俄罗斯方块游戏的 MiniGUI 版本,见图 5。


    图 4:扫雷游戏的克隆:Bomb 游戏图


    图 5:俄罗斯方块游戏的 MiniGUI 版本

0
相关文章