• 联系我们
  • 地址:湖北武汉三环科技园
  • 电话:159116031100
  • 传真:027-68834628
  • 邮箱:mmheng@foxmail.com
  • 当前所在位置:首页 - 嵌入式
  • 一种嵌入式图形用户界面系统的设计与实现_
  •   为了满足嵌入式系统的界面设计需求,给出了一种图形用户界面系统SKY-GUI的设计思和其在嵌入式Linux下的实现方法。SKY-GUI有四大组成部分:输入抽象层、显示抽象层、事件系统和窗口系统。其特点是界面观、占用资源少、运行效率高,现已应用于嵌入式视频项目。实验证明其设计思可行,性能优良,适用于典型的嵌入式系统项目。

      嵌入式图形用户界面(GUI, Graphic UserIntece)系统作为嵌入式系统中的一大关键技术,为用户提供设备的控制接口,其性能的好坏,界面的观程度,影响着用户对产品的购买意愿和使用感受。

      当前嵌入式系统中GUI的实现方式主要有两种:一是采用现有的GUI库;第二种是开发商基于嵌入式操作系统设计特有的GUI系统。采用第1种方式一般要对通用GUI库进行剪裁和个性化定制,也往往要支出额外的成本来获得软件授权。相对而言,第2种方法实现的GUI占用资源较小、容易满足嵌入式系统的实时性和个性化需求。

      本文采用第2种方式,在嵌入式Linux下使用C语言实现了一个界面观、轻量级、占用资源少、执行效率高的图形用户界面系统SKY-GUI.本文的结构如下:第1部分介绍SKY-GUI的基本结构;第2部分给出具体的模块设计;第3部分给出其实验和测试结果;最后总结

      1 SKY-GUI基本结构

      SKY-GUI系统的功能主要有以下四点:

      (1)接收各种输入设备的输入。

      (2)建立消息循环,将设备的输入翻译为抽象的事件。

      (3)建立窗口和控件对象系统,组织好各个抽象模块的关系,处理各种GUI事件。

      (4)将GUI对象通过具体形状显示在屏幕上,通过动画将系统的状态变化呈现给用户。

      基于这样的设计目标,SKY-GUI结构如图1所示。

      图1 SKY-GUI的整体架构

      它主要由输入抽象层、显示抽象层、事件系统和窗口系统四大部分组成。输入抽象层管理所有的输入设备,将用户的操作成消息送入事件系统。

      显示抽象层操作显示设备,提供给窗口系统绘画、贴图、显示字体接口。事件系统为窗口系统提供消息获取、存储和处理的机制。窗口系统是SKY-GUI的核心,定义了各种控件和窗口,描述它们之间的逻辑关系和消息循环关系。下面将分别对这四大组成部分的设计进行介绍。

      2 SKY-GUI模块设计

      2. 1输入抽象层

      输入抽象层为各种输入设备对事件系统的输入接口,它是一个单独的线程,其流程如图2所示。

      图2输入抽象层流程。

      输入抽象层首先对GUI所需的各种输入设备初始化,而后等待各个设备的输入。当接到设备输入,就把用户对设备的操作翻译成消息,送至事件系统最底层消息队列(在异2. 3. 2详细讨论)中。

      设备输入的翻译过程根据具体的输入设备而定。对于键盘,只要将其键值和该键的状态封成消息。对于鼠标,除了要记录其按键状态,还要根据鼠标当前的和屏幕的大小将输入的位移分量成鼠标的新封入消息。

      2. 2显示抽象层

      显示抽象层的作用是为窗口系统提供显示接口函数,包括基本图形接口(画点、画线、填充矩形、区域拷贝、Alpha混合等)、贴图接口和字体接口三大功能,其结构如图3所示。

      图3显示抽象层的结构。

      显示抽象层在嵌入式Linux下的基础设备为帧缓冲,对其按坐标写入或读出颜色值即可实现基本的图形接口的功能。

      简单的贴图功能用基本图形接口加bmp格式的文件(图片不经过压缩,其颜色分量按坐标顺序存储)就可以实现。为了让界面