为了满足嵌入式系统的界面设计需求,给出了一种图形用户界面系统SKY-GUI的设计思路和其在嵌入式Linux环境下的实现方法。SKY-GUI有四大组成部分:输入抽象层、显示抽象层、事件系统和窗口系统。其特点是界面美观、占用资源少、运行效率高,现已应用于嵌入式视频监控项目。实验证明其设计思路可行,性能优良,适用于典型的嵌入式系统项目。
嵌入式图形用户界面(GUI, Graphic UserInterface)系统作为嵌入式系统中的一大关键技术模压电感器,为用户提供设备的控制接口,其性能的好坏,界面的美观程度,影响着用户对产品的购买意愿和使用感受。
当前嵌入式系统中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格式的文件(图片不经过压缩,其颜色分量按坐标顺序存储)就可以实现。为了让界面更加美观,SKY-GUI移植了开源的jpeg库和png库来解压相应格式的压缩图片文件,实现了对这两种图片格式的支持。
对字体的支持当然必不可少。点阵字体把字体的位图按12伊12、16伊16等格式存入二进制文件,可以绕行电感比较容易地实现字体接口,但字体不能随意放大缩小,且放大后字体有明显的锯齿。矢量字体用数学方程加字形上的关键点来描述字体,可以进行无级缩放,为界面的绘制带来极大的灵活性。SKY-GUI移植了开源的Freetype库,用其寻址矢量字体文件并生成字体位图,实现了对矢量字体的支持。
低频变压器(120V、15VA)如何做才能符合能效6级的 请教高手,低频变压器如何才能做到符合美国能效6级要求。
变压器输入120V/60Hz,输出AC 18.75V/0.8A,按美国能效6级要求输入的空载损耗<=0.21W,效率达到>=84.13%。现在是 电源被拉低?我在某宝买个语音模块 调试时发现喇叭有杂音,接示波器看喇叭说话时5V电源有杂波,应该是不是电源的问题,是直流电源供的电。请问像这种电压被拉低的情况我该怎么滤掉? 电源研发可能遇到哪些问题?这篇文章讲透了在电源研发的过程中,我们总会遇到这样或者那样的问题,这里有大牛多年研发电源问题及解答,一起学习吧!话不多说,直接上题。问题一我们小功率用到最多的反激电源,为什么我们常常选择
1/4 1 2 3 4 下一页 尾页 |