snifer

(原创)嵌入式用户图形界面编程

0
阅读(3156)

嵌入式系统已经融入整个社会生活的各个方面,欣赏一下:

而图形界面的设计是非常关键的,如blackfin,arm,都非常注重图形界面的设计,再此就针对图形界面的设计,谈一点个人的看法:

Qt/Embedded(简称QtE)是一个专门为嵌入式系统设计图形用户界面的工具包。Qt是挪威Trolltech软件公司的产品,它为各种系统提供图形用户界面的工具包,QtE就是Qt的嵌入式版本。
使用QtE,开发者可以:
l用QtE开发的应用程序要移植到不同平台时,只需要重新编译代码,而不需要对代码进行修改。
l可以随意设置程序界面的外观。
l可以方便地为程序连接数据库。
l可以使程序本地化。
l可以将程序与Java集成
嵌入式系统地要求是小而快速,而QtE就能帮助开发者为满足这些要求开发强壮地应用程序。
QtE是模块化和可裁剪地。开发者可以选取他所需要的一些特性,而裁剪掉所不需要的。这样,通过选择所需要的特性,QtE的映像变得很小,最小只有600K左右。
同Qt一样,QtE也是用C++写的,虽然这样会增加系统资源消耗,但是却为开发者提供了清洗的程序框架,使开发者能够迅速上手,并且能够方便地编写自定义的用户界面程序。
由于QtE是作为一种产品推出,所以它有很好的开发团体和技术支持,这对于使用QtE的开发者来说,方便开发过程,并增加了产品的可靠性。
总的来说,QtE拥有下面一些特征:
l拥有同Qt一样的API;开发者只需要了解Qt的API,不用关心程序所用到的系统与平台
l它的结构很好地优化了内存和资源地利用。
l拥有自己的窗口系统:QtE不需要一些子图形系统。它可以直接对底层的图形驱动进行操作。
l模块化:开发者可以根据需要自己定制所需要的模块。
l代码公开以及拥有十分详细的技术文档帮助开发者。
l强大的开发工具。
l与硬件平台无关:QtE可以应用在所有主流平台和CPU上。支持所有主流的嵌入式Linux,对于在Linux上的QtE的基本要求只不过是Frame Buffer设备和一个C++编译器(如gcc)。Qte同时也支持很多实时的嵌入式系统,如QNX和WindowsCE。
l提供压缩字体格式:即使在很小的内存中,也可以提供一流的字体支持。
l支持多种的硬件和软件的输入。
l支持Unicode,可以轻松地使程序支持多种语言。
l支持反锯齿文本和Alpha混合的图片。
Trolltech公司在QtE的基础上开发了一个应用的环境—Qtopia,这个应用环境为移动和手持设备开发。其特点就是拥有完全的、美观的GUI,同时它也提供可上百个应用程序用于管理用户信息、办公、娱乐、Internet交流等。
已经有很多公司采用了Qtopia来开发他们主流的PDA。
QtE虽然公开代码和技术文档,但是它不是免费的,当开发者的商业化产品需要用到他的运行库时,必须向Trolltech公司支持license费用(每套3美金),如果开发的东西不用于商业用途则不需要付费。
QtE由于平台无关性和提供了很好的Gui编程接口,在许多嵌入式系统中得到了广泛的应用,是一个成功的嵌入式GUI产品。
Mirowindows是嵌入式系统中广为使用的一种图形用户接口,其官方网站是:http://www.microwindows.org。这个项目的早期目标是在嵌入式Linux平台上提供和普通个人电脑上类似的图形用户界面。
作为PC上X-Windows的替代品,Microwindows提供了和X-Windows类似的功能,但是占用的内存要少得多,根据用户得配置,Microwindows占用得内存资源在100KB-60KB。
Microwindows支持多种外部设备得输入,包括液晶显示器、鼠标和键盘等。在嵌入式Linux平台上,从Linux2.2.x的内核开始,为了方便图形的显示,使用了framebuffer的技术。
Microwindows完全支持Linux最新framebuffer技术,支持每个象素1位、2位、4位、8位、16位、24位和32位的色彩空间/灰度,并且通过调色板技术将RGB格式的颜色空间转换成目标机器上最相近的颜色,然后显示出来。
Microwindows的核心基于显示设备接口,因此可移植行很好,microwindows有自己的Framebuffer,因此它并不局限于Linux开发平台,在eCos、FreeBSD、RTEMS等操作系统上都能很好地运行。
此外,Microwindows能在宿主机上仿真目标机。这意味着基于Linux的Microwindows应用程序的开发和调试可以在普通的个人电脑上进行,而不需要使用普通嵌入式软件的“宿主机-目标机”调试模式,从而大大加快了开发速度。
Mincrowindows是完全免费的一个用户图形系统。
MiniGUI是由北京飞漫软件技术有限公司主持的一个自由软件项目(遵循GPL条款),其目标是为基于Linux的实时嵌入式系统提供一个轻量级的图形用户界面支持系统。
MiniGUI为应用程序定义了一组轻量级的窗口和图形设备接口。利用这些接口,每个应用程序可以建立多个窗口,而且可以在这些窗口中绘制图形。用户也可以利用MiniGUI建立菜单、按钮、列表框等常见的GUI元素。
用户可以将MiniGUI配置成“MiniGUI-Threads”或者“MiniGUI-Lite。
运行在MiniGUI-Threads上的程序可以在不同的线程中建立多个窗口,但所有的窗口在一个进程中运行。
相反,运行在MiniGUI-Lite上的每个程序是单独的进程,每个进程也可以建立多个窗口。
MiniGUI-Threads适合于具有单一功能的实时系统,而MiniGUI-Lite 则适合于类似于PDA和瘦客户机等嵌入式系统。
今天就写这么多吧, 明天有时间给大家写一下 Qt的使用方法,随着嵌入式系统的进一步发展,必将产生一场图形界面方面的新的革命!!!
Baidu
map