Chinaunix首页 | 论坛 | 博客
  • 博客访问: 424258
  • 博文数量: 78
  • 博客积分: 1563
  • 博客等级: 上尉
  • 技术积分: 910
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-25 09:58
个人简介

爬虫

文章分类

全部博文(78)

文章存档

2020年(1)

2016年(1)

2015年(9)

2014年(1)

2013年(8)

2012年(6)

2011年(3)

2010年(4)

2008年(8)

2007年(13)

2006年(24)

我的朋友

分类: LINUX

2007-10-23 12:58:47

恰当选择嵌入式Linux环境下的GUI系统
2006年8月31日  作者:刘锬  嵌入式联盟  浏览选项:    本文已被浏览 57 次
计算机世界 刘锬 

在嵌入式系统领域,有不少GUI系统,如QNX Photon MicroGUI等,可是具体到嵌入式Linux领域又有哪些可供选择的GUI系统呢? 

在嵌入式环境底下,G  
DOS、QNX和Linux等,不过目前只支持x86硬件平台。OpenGUI分为三层: 最低层是由汇编语言编写的快速图形引擎;中间层提供了图形绘制API,包括线条、矩形、圆弧等,并且兼容Borland的BGIAPI;第三层用C++编写,提供了完整的GUI对象库。 

OpenGUI采用LGPL条款发布。OpenGUI比较适合于基于x86平台的实时系统,跨平台的可移植性较差,目前发展较慢。 

一点建议 

综合上述GUI解决方案各方面的性能,归结起来有在国内有四种GUI较为适用,笔者对其做出推荐。 

1. OpenGUI 

由于基于汇编实现内核,并利用MMX指令进行了优化,OpenGUI运行速度非常快。它支持32位的机器,能够在多种操作系统下运行,主要用来在这些系统中开发图形应用程序和游戏。由于历史悠久,OpenGUI非常稳定,但是由于其内核用汇编语言实现,其内部使用的是私有的API,所以其可移植性较差,可配置性也较差。 

2. Qt/Embedded 

这个版本的主要特点是可移植性较好。因为Qt是KDE等项目使用的GUI支持库,所以许多基于Qt的X Window程序可以非常方便地移植到Qt/Embedded版本上。因此,自从Qt/Embedded以GPL条款发布以来,就有大量的嵌入式Linux开发商转到了Qt/Embedded系统上,如韩国的Mizi公司。但是,由于它是基于C++类库的,所以和其他GUI相比系统消耗资源较大。因此说Qt/Embedded是肥美型的产品,功能丰富,一般用于手持式高端信息产品。 

3. MiniGUI和Micro-Windows的比较 

MiniGUI和MicroWindows均为自由软件,但这两个系统的技术路线却有所不同。MiniGUI的策略是建立在比较成熟的图形引擎之上,比如Svgalib和LibGGI,开发的重点在于窗口系统、图形接口之上。而MicroWindows的开发重点则在底层的图形引擎之上,所以可以对裸显示器直接操作,而窗口系统和图形接口方面的功能还稍有欠缺。比如说,MiniGUI有一套用来支持多字符集和多编码的函数接口,可以支持各种的字符集,包括GB、BIG5、UNI-CODE等,而MicroWindows在多字符支持上尚没有统一接口。 

链接 

X Window System的分层架构 

● X Server 

X Window System架构上有一项特点是别的GUI系统所没有的,这个特点就是Client/Server架构,注意这里和一般我们所熟知的某某服务器(Server端)跟PC端(Client端)相连接的情形是不同的。惟一类似的是X Window System本身也是采用网路架构设计。具体而简单一点的说明就是,X Client可以看作我们在X上执行的软件,X Server则是负责显示及传递使用者输入事件(包括键盘、鼠标等硬件装置的输入)。 

● Graphic Library 

我们可以把一幅图案想象成有成千上万个细微小点所组成,这种小点的单位通常为pixel,在同一平方单位里这些小点数越高图案就越清晰、画质就越好,也就是说分辨率或解析率高。事实上我们要设计的视窗当然不可能是这样一点一点地画上去的,这样太过浪费时间,基于这种观念我们就设计出高阶一点的函数来帮助我们解决这个繁琐的步骤,例如各类视窗编程里用到的画点、画线、画矩形、画圆形、画不规则形、上色等函数。透过这些函数是的程序设计者不用去管画一条线要几个点以及如何让显示器显示等林林总总低阶的工作,我们称绘图相关的一组函数库为GUI的基本Graphic Library。 

● Toolkits 

有了点、线、面的函数之后,虽然已经去除了大半的重复无聊工作,但是就开发视窗程序来说,还是显得非常没有效率,怎么办呢?只有继续将构成视窗的抽象元件,如按钮、卷轴、组合框等各类控件抽离出来,重新定义一组更高阶的函数库,在配合上联系的语法函数就成立Toolkits这类的东西,目前流行的有QT、GTK+等。 

● Window Manager 

有了Toolkits,我们可以很轻松地建立视窗模块(X Client),但是每个视窗模块只负责自己模块内的事务,那么不同视窗间的沟通、协调,例如视窗的切换、放大、缩小等,就没有模块管理了,于是视窗管理员(Window Manager)就应运而生了。 

● Internationalization 

国际化通常是我们东方语系国家的人比较关心的议题,但是很多软件一开始都由西方国家所主导开发,因此这点常常受到忽略,这个问题牵扯的层面很多,上从语言的显示、输入、中止语言习惯,下到文字位元的处理,完整的解决是必须从头到脚彻底配合才能达成,只处理一半都只能说是一个蹩脚的系统。 

随着东方国家使用GUN/Linux的人口越来越多,I18N(i-eighteen-letters-n的缩写)也日益受到重视,目前底层libc部分已经有完整的支持,剩下来便是GUI系统的问题,由于处理双位元所耗的资源较大,西方国家主导的系统很多情况下,经过一些取舍,I18N就被牺牲掉了,整体而言Embedded Linux GUI系统在I18N的程度通常都没有PC端的好,只有在需求时才会使用。
阅读(1373) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~