《最新嵌入式用户图形界面编程PPT课件》由会员分享,可在线阅读,更多相关《最新嵌入式用户图形界面编程PPT课件(27页珍藏版)》请在金锄头文库上搜索。
1、嵌入式用户图形界面编程嵌入式用户图形界面编程www.chinaEDA.cn1、嵌入式图形系统简介、嵌入式图形系统简介1.1 Qt/Embedded1.1 Qt/EmbeddedQt/Embedded(简称QtE)是一个专门为嵌入式系统设计图形用户界面的工具包。Qt是挪威Trolltech软件公司的产品,它为各种系统提供图形用户界面的工具包,QtE就是Qt的嵌入式版本。 www.chinaEDA.cnwww.chinaEDA.cnwww.chinaEDA.cnwww.chinaEDA.cnwww.chinaEDA.cnwww.chinaEDA.cnwww.chinaEDA.cnQtE虽然公开代码
2、和技术文档,但是它不是免费的,当开发者的商业化产品需要用到他的运行库时,必须向Trolltech公司支持license费用(每套3美金),如果开发的东西不用于商业用途则不需要付费。QtE由于平台无关性和提供了很好的Gui编程接口,在许多嵌入式系统中得到了广泛的应用,是一个成功的嵌入式GUI产品。www.chinaEDA.cn1.2 MicrowindowsMirowindows是嵌入式系统中广为使用的一种图形用户接口,其官方网站是:http:/www.microwindows.org。这个项目的早期目标是在嵌入式Linux平台上提供和普通个人电脑上类似的图形用户界面。作为PC上X-Window
3、s的替代品,Microwindows提供了和X-Windows类似的功能,但是占用的内存要少得多,根据用户得配置,Microwindows占用得内存资源在100KB-60KB。www.chinaEDA.cn1.2 MicrowindowsMicrowindows支持多种外部设备得输入,包括液晶显示器、鼠标和键盘等。在嵌入式Linux平台上,从Linux2.2.x的内核开始,为了方便图形的显示,使用了framebuffer的技术。Microwindows完全支持Linux最新framebuffer技术,支持每个象素1位、2位、4位、8位、16位、24位和32位的色彩空间/灰度,并且通过调色板技术
4、将RGB格式的颜色空间转换成目标机器上最相近的颜色,然后显示出来。www.chinaEDA.cn1.2 MicrowindowsMicrowindows的核心基于显示设备接口,因此可移植行很好,microwindows有自己的Framebuffer,因此它并不局限于Linux开发平台,在eCos、FreeBSD、RTEMS等操作系统上都能很好地运行。 此外,Microwindows能在宿主机上仿真目标机。这意味着基于Linux的Microwindows应用程序的开发和调试可以在普通的个人电脑上进行,而不需要使用普通嵌入式软件的“宿主机目标机”调试模式,从而大大加快了开发速度。Mincrowin
5、dows是完全免费的一个用户图形系统。 www.chinaEDA.cn1.3 MiniGUI MiniGUI是由北京飞漫软件技术有限公司主持的一个自由软件项目(遵循GPL条款),其目标是为基于Linux的实时嵌入式系统提供一个轻量级的图形用户界面支持系统。 MiniGUI为应用程序定义了一组轻量级的窗口和图形设备接口。利用这些接口,每个应用程序可以建立多个窗口,而且可以在这些窗口中绘制图形。用户也可以利用MiniGUI建立菜单、按钮、列表框等常见的GUI元素。www.chinaEDA.cn1.3 MiniGUI用户可以将MiniGUI配置成“MiniGUI-Threads”或者“MiniGUI
6、-Lite。运行在MiniGUI-Threads上的程序可以在不同的线程中建立多个窗口,但所有的窗口在一个进程中运行。相反,运行在MiniGUI-Lite上的每个程序是单独的进程,每个进程也可以建立多个窗口。MiniGUI-Threads适合于具有单一功能的实时系统,而MiniGUI-Lite 则适合于类似于PDA和瘦客户机等嵌入式系统。www.chinaEDA.cn1.2 QTE和和Qtopia开发模型开发模型1.2.1 QTE与QT/X11比较Linux KernelFramebufferQT/EmbeddedQT/X11XlibX Window ServerQT APIApplicati
7、on Source Codewww.chinaEDA.cn1.2.1 QTE与与QT/X11比较比较QT/Embedded通过Qt API 与Linux I/O设施直接交互,成为嵌入式linux端口。同Qt/X11相比, QT/Embedded很节省内存,其不需要一个X服务器或是Xlib库,它在底层摈弃了Xlib,采用framebuffer(帧缓存)作为底层图形接口。同时,将外部输入设备抽象为keyboard和mouse输入事件。 QT/Embedded 的应用程序可以直接写内核缓冲帧,这可避免开发者使用繁琐的Xlib/Server系统。www.chinaEDA.cn1.2.2 Qtopia介
8、绍介绍Qtopia是一种全方位的应用开发平台,它可用于基于嵌入式linux的PDA,移动电话,web pads,以及其他移动计算设备。Qtopia构建于Qt/Embedded之上,是专为基于linux的消费电子产品提供和创建图形用户界面而设计的。常见的有两种版本:1.Qtopia Phone版:专为基于linux的智能电话和多功能电话设计。2.Qtopia PDA版:专为基于linux的PDA设计。www.chinaEDA.cn1.2.2 Qtopia介绍介绍Qtopia特色:视窗操作系统;同步窗口;开发环境;本地化支持;游戏和多媒体;PIM应用程序;输入法;个性化选项;internet应用程
9、序;java集成;无线支持;www.chinaEDA.cn1.2.3 Qt/Embedded开发模型开发模型嵌入式软件开发通常都采用交叉编译的方式进行,基于Qt/Embedded和Qtopia的GUI应用开发也采用这样的模式。先在宿主机上调试应用程序,调试通过后,经过交叉编译移植到目标板上。Qt/Embedded直接写入帧缓存,在宿主机上则是通过qvfb(virtual framebuffer)来模拟帧缓存。qvfb是X窗口用来运行和测试Qtopia应用程序的系统程序。qvfb使用了共享内存存储区域(虚拟的帧缓存)来模拟帧缓存并且在一个窗口中模拟一个应用程序来显示帧缓存,显示的区域被周期性的改
10、变和更新。www.chinaEDA.cn1.2.3 Qt/Embedded开发模型开发模型宿主机移植所需工具及环境变量声明:工具软件描述变量声明Tmake1.11生成Makefile文件TMAKEDIR/TMAKEPATH/PATHQt-x11-2.3.2Qvfb虚拟帧缓存工具Uic用户界面编辑器Designer Qt 图形设计器LD_LIBRARY_PATH_/PATHQt-embedded-2.3.7Qt库支持 libqte.soQTEDIR/LD_LIBRARY_PATH/PATHQtopia-free-1.7.0应用程序开发包 桌面环境QPEDIR/LD_LIBRARY_PATH/PA
11、THwww.chinaEDA.cn1.2.4 Qt/Embedded信号与插槽信号与插槽(1)概述信号与插槽是QT自定义的一种通信机制,它独立于标准的从C/C+语言。他的实现必须借助于moc(Meta Object Compiler)的QT工具,他是一个C+预处理程序,为高层次的事件处理自动生成所需要的附件代码。所谓图形用户接口的应用就是对用户的动作作出响应。程序员则必须把事件和相关代码联系起来,这样才能对事件作出正确的响应。www.chinaEDA.cn所有从所有从QObjectQObject或其子类(例如或其子类(例如QwidgetQwidget)派)派生的类都能够包含信号和插槽。生的类都
12、能够包含信号和插槽。当对象改变状态时,信号就由该对象发射当对象改变状态时,信号就由该对象发射(emitemit)出来。)出来。插槽用于接收信号,但它们是普通的对象成插槽用于接收信号,但它们是普通的对象成员函数。员函数。一个插槽并不知道是否有任何消息与自己相一个插槽并不知道是否有任何消息与自己相连。用户可以将很多信号与一个插槽相连,也可连。用户可以将很多信号与一个插槽相连,也可将单个消息与多个插槽进行链接。将单个消息与多个插槽进行链接。 www.chinaEDA.cn(2)信号与插槽的实现信号:void mysignal(int x);插槽:void myslot(int x);信号与插槽关联:
13、connect(abutton, SIGNAL(clicked),SLOT(quit));www.chinaEDA.cn3、基于Qt/Embedded的嵌入式GUI设计3.1 3.1 建立Qt/EmbeddedQt/Embedded开发环境1.安装x86-x86-qtopia源代码# tar tar xvzfxvzf x86-qtopia.tgz C /sbc2410 x86-qtopia.tgz C /sbc2410 # cd /sbc2410/x86-qtopia /sbc2410/x86-qtopia #./build (shell ./build (shell 程序程序) )2.安装S
14、BC-2410X版本的arm- -qtopia源代码3.#tar tar xvzfxvzf arm- arm-qtopia.tgzqtopia.tgz C /sbc2410 C /sbc2410# cd /sbc2410/x86-qtopia /sbc2410/x86-qtopia #./build (shell ./build (shell 程序程序) )www.chinaEDA.cn3.2 设置链接库当在PC上模拟Qtopia的运行时,需要用到对应Qt版本的库文件,因此需要修改/etc/ld.so.conf /etc/ld.so.conf 文件以适应刚刚安装的Qt(Redhat安装时带有Q
15、t库,但不适合我们最新安装的版本),修改后的ld.so.conf文件内容如下: /sbc2410/x86-qtopia/qt/lib /sbc2410/x86-qtopia/qt/lib /sbc2410/x86-qtopia/qtopia/lib /sbc2410/x86-qtopia/qtopia/lib /usr/kerberos/lib /usr/kerberos/lib /usr/X11R6/lib /usr/X11R6/lib /usr/lib/sane /usr/lib/sane 修改完此文档后,为了让刚刚安装的库生效,必须运行ldconfig。 至此Qt的开发缓建已经建立。www.chinaEDA.cn3.3 运行运行Qtopia(1)设置环境变量在/sbc2410/x86-qtopia/目录下输入“source set-env”或“. set-env”。(2)启动虚拟帧缓存 “$ qvfb &” 或“$ qvfb width 640 height 480 &”(3)运行qtopiaqpe &结束语结束语谢谢大家聆听!谢谢大家聆听!27