嵌入式系统设计-李秀娟-课件-第9章_第1页
嵌入式系统设计-李秀娟-课件-第9章_第2页
嵌入式系统设计-李秀娟-课件-第9章_第3页
嵌入式系统设计-李秀娟-课件-第9章_第4页
嵌入式系统设计-李秀娟-课件-第9章_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1第9章嵌入式图形用户界面编程人机交互界面风格成就作品美誉

2本章内容9.1嵌入式系统GUI简介19.2基于Qt的嵌入式GUI应用开发23简介本章主要介绍嵌入式Linux图形用户界面GUI。为了使读者对嵌入式Linux系统下的图形用户界面有比较全面的认识,首先介绍几款常见的图形用户界面系统(GUI),接下来详细介绍其中常用的GUI软件Qt/Embedded,最后结合“Qt/Embedded编程实例”综合实训环节详细讲解Qt/Embedded的开发流程、如何建立开发环境以及QT的编译与移植过程等细节。49.1嵌入式系统GUI简介

GUI是GraphicalUserInterface的简称,即图形用户界面,又称图形用户接口,是指采用图形方式显示的嵌入式设备与其用户之间的对话操作接口界面。图形用户界面是嵌入式系统的重要组成部分。与早期计算机使用的枯燥的命令行界面相比,图形用户界面极大地方便了非专业用户的使用,使得用户从繁琐的命令中解脱出来,不再需要死记硬背大量的操作命令,而可以利用菜单、对话框、窗口、按钮等组件通过友好、直观、图形化、易于操作的图形用户界面对计算机进行方便、快捷的操作与交流。5GUI系统应稳定可靠,响应速度快。嵌入式系统对GUI的稳定性和可靠性有严格的要求,若GUI导致系统崩溃将导致比PC机宕机更为严重的后果,因此嵌入式系统的GUI需要具有更高的稳定性和可靠性。此外,嵌入式系统对实时性往往有较高的要求,嵌入式GUI必须具备较快的响应速度。目前几种成熟的基于Linux系统的嵌入式GUI主要包括MiniGUI、MicroWindows、OpenGUI和Qt/Embedded等。59.1.1MiniGUIMiniGUI是一款为基于Linux的实时嵌入式系统提供一个高级窗口系统和轻量级图形用户界面支持系统。MiniGUI是我国自主开发的著名的自由软件项目(遵循GPL条款)之一,1998年底由清华大学魏永明主持和开发并成功应用在一个数控机床系统中,现由北京飞漫软件技术有限公司维护及开展后续开发。MiniGUI为嵌入式实时操作系统提供了完善的图形和图形用户界面的支持,运行高效可靠,是一款非常适合于工业控制实时系统以及嵌入式系统的可定制的、小巧的轻量级图形用户界面支持系统。6MiniGUI的主要特色有:遵循GPL(GNUGeneralPublicLicense)条款的纯自由软件。提供了完备的多窗口机制和消息传递机制。体积小,占用空间少。支持Windows的资源文件,如位图、光标、图标、定时器等。支持Windows的资源文件,如位图、光标、图标、定时器等。可配置。可根据项目的具体需求进行定制配置与编译。高稳定性和高性能。7可移植性好。支持多种常见的图像文件格式,如BMP、GIF、JPEG、PNG等。支持多字符集和多字体。完整的多窗口系统。完备的图形功能。完备的图形用户界面构件(Widget)集。8MiniGUI为嵌入式Linux系统的多进程运行环境提供了完整的图形窗口系统支持。为了适应不同的操作系统环境,可以将MiniGUI配置成MiniGUI-Processes(Lite)、MiniGUI-Threads和MiniGUI-Standalone三种不同的运行模式。9MiniGUI手机特效示例109.1.2Microwindows/Nano-XMicrowindows是一个著名的开放源码的嵌入式GUI软件,采用

MPL(Mozilla

PublicLicense)条款发布,目的是把现代图形视窗环境引入到运行Linux的小型设备和平台上。作为PC机上的XWindow系统的替代品,Microwindows提供了与XWindow相似的功能,但可以使用更少的RAM和文件存储空间(约为100KB~600KB)。Microwindows的核心基于显示设备接口,基本上是用C语言实现的,只有部分关键代码使用了汇编语言以提高整体速度,因此Microwindows的可移植性很好。11Microwindows采用了基于客户机/服务器(Client/Server)的分层设计方法,可以分为三层。在最底层是面向图形输出和屏幕、触摸屏、鼠标以及键盘的驱动程序,它们提供了对实际硬件物理设备的访问能力;在中间层提供底层硬件的抽象接口,实现了一个可移植的图形引擎,支持对线的绘制、区域的填充、多边形、剪切以及颜色模型等;在最上层提供了两种流行的图形编程应用程序接口API。129.1.3OpenGUIOpenGUI主要是为x86硬件平台开发的,最初的名字叫FastGL。FastGL是一个跨平台的32位的图形库与图形用户界面,它主要用来在开发图形应用程序及游戏等。OpenGUI基于用汇编语言实现的x86图形内核,提供了一个快速的面向高层的C/C++图形接口。OpenGUI能够在32位计算机的多种操作系统下运行,支持如Linux、DPMI客户端、MS-DOS和QNX等多种操作系统软件平台。13OpenGUI的整体结构可分为三层:最低层是由汇编语言编写的快速图形引擎;中间层提供图形绘制API,包括线条、圆弧、矩形等,并且兼容Borland的BGIAPI;第三层用C++语言编写,提供了完整的GUI对象库。OpenGUI为软件开发人员提供了简单的2D绘图原语、消息驱动窗口API,支持BMP图像文件格式。149.1.4Qt/EmbeddedQt/Embedded简称QTE,是一个自包含GUI和基于Linux嵌入式平台的图形用户界面开发工具。Qt/Embedded最早由挪威TrollTech公司开发,是QT专门面向嵌入式系统平台的版本,有关Qt

的详细介绍请参考本章9.2小节。Qt/Embedded主要面向高端手持设备和移动设备等,其丰富的API接口和基于组件的编程模型使得嵌入式Linux下的GUI应用程序开发非常便捷,导致Qt/Embedded已经成为嵌入式系统领域的主要GUI。15Qt/Embedded是一个专门为嵌入式系统提供图形用户界面的工具包,为用户提供了与桌面型QT相似的应用程序接口,不同的是Qt/Embedded已经取代了XServer及XLibrary,采用Framebuffer帧缓冲作为底层图形接口并直接将所有功能都整合在一起。同时,Qt/Embedded将外部输入设备抽象为keyboard和mouse输入事件,其应用程序可以直接写内核缓冲帧,避开了开发者使用繁琐的Server/Lib系统。Qt/Embedded内存消耗比较少,提供了丰富的窗口部件而且支持窗口部件的定制。169.1.5几种常见嵌入式GUI的对比如果以ARM硬件平台进行嵌入式高端设备的开发时,笔者认为不应再考虑OpenGUI和Microwindows。这两种传统的GUI系统由于项目规模较小,系统功能相对薄弱,缺乏等三方开发软件的支持,在高端手持或移动终端设备中应用较少。OpenGUI主要是为x86硬件平台开发的,很难移植到ARM架构上。Microwindows最大的特点在于能提供和XWindow在某种程度上的兼容性,但效率、稳定性以及运行速度等方面表现较差。对于另外两种GUI系统,MiniGUI定制能力强,速度快,性能较好;17Qt/Embedded运行速度相对较慢,但对应用软件的开发支持好,功能丰富、强大。与其他几种GUI不同的是,Qt/Embedded的底层图形引擎采用FrameBuffer,这就注定了它是针对高端嵌入式图形领域应用而设计的。如果项目开发的目标是PDA、SmartPhone、车载导航系统之类的高端嵌入式设备,硬件内存(32MB以上)和CPU速度都比较充足,可以选择Qt/Embedded。如果内存和CPU运行速度均较低,则选择开销较小的MiniGUI较为合适。189.2基于Qt的嵌入式GUI应用开发Qt最初由挪威TrollTech奇趣科技公司于1995年底推出,是该公司的一个标志性产品。2008年初,TrollTech公司被Nokia收购并更名为QtSoftware,Qt已经归入Nokia旗下。Qt是一个支持多种操作系统平台的C++应用程序和图形用户界面(GUI)开发框架,用于高性能的跨平台软件的开发。它包括扩展的C++跨平台类库、集成开发工具和跨平台IDE。除了跨平台类库外,Qt还提供了许多可以用来直接快速编写应用程序的工具。199.2.1Qt概述Qt最初主要是为软件开发人员提供一个跨平台的、统一的图形用户编程接口,发展到现在Qt也提供了网络和数据库操作方面的编程接口。QT的开发架构如图9.8所示,QT以开发工具包的形式提供给开发人员,具体包括图形设计器、字体国际化工具、用来为不同平台和编译器制作Makefile的工具qmake和Qt的C++类库等。Qt的C++类库类似于Windows平台上的MFC,不同的是Qt的类库封装了适应不同操作系统的文件处理、网络等细节,支持跨平台运行。20Qt提供了丰富的窗口部件集,具有面向对象、易于扩展、真正的组件编程等优点,其主要特色包括:(1)优良的跨平台特性,可移植性强(2)Qt使用标准的面向对象机制,支持使用C++进行开发(3)便利性(4)构件支持(5)支持跨平台的2D和3D图形渲染,支持OpenGL、SQL和XML21(6)国际化:Qt为本地化应用提供了完善的支持,同时用户界面文本也可以基于消息翻译表被翻译成其他各种语言。(7)友好的联机帮助和大量的技术开发文档:Qt提供了大量的联机参考文档,如Networking、XML和database等,初学者可以很方便地按照文档的介绍,一步一步地学习如何进行Qt编程。(8)Qt的商业版本Qt企业版和Qt专业版可供用户作商业软件的开发。229.2.2Qt的信号与槽机制信号(signal)与插槽(slot)机制是Qt的核心机制,使用信号与槽进行对象之间的无缝通信是Qt最主要的特性之一,也是Qt与其他工具包的主要区别。信号与槽是一种高级接口,是Qt自行定义的一种独立于标准C/C++语言的通信机制,也比其他GUI开发库的机制更为简单灵活。23Qt的信号与槽机制是一种强有力的处理对象间通信的方式,可以完全取代传统的回调和消息映射机制。在信号与槽机制中,当一个用户特定事件发生时,该对象中的一个或几个特定信号就被发射;而槽就是一个返回值类型为void的函数,如果存在一个或几个槽与该信号相连接,信号被发射后,与其相关联的槽(函数)就会被立刻执行,就像一个正常的函数调用一样。信号与槽可以使用任意数量和任意类型的参数,信号与槽连接之后,槽会在正确的时间使用该信号的参数而被调用。信号与槽机制完全独立于GUI的任何事件循环,且只有当所有的槽返回以后发射函数才能返回。249.2.3Qt图形设计器(QtDesigner)Qt的GUI应用程序编程可以直接采用手工编写源代码的方式,也可以基于QtDesigner进行程序设计。直接使用代码来编写GUI大型程序无疑是非常痛苦的,好在Qt提供了一个可视化的GUI图形界面开发工具Qt图形设计器(QtDesigner)来加速开发工作。25Qt设计器的功能十分强大,界面类似于Windows下的VisualStudio的编程,并且它还支持信号和槽机制,以使部件间能够进行有效的通信。QtDesigner可以用来开发一个应用程序全部或者部分的界面组件,而且还提供了大量可供编程使用的部件资源。开发人员既可以创建对话框式的程序,也可以创建带有菜单、工具栏等部件的主窗口式程序。26Qt设计器利用向导方式,使得菜单、工具栏以及数据库程序的创建变得快且方便。下面介绍一下QtDesigner的开发环境以及使用QtDesigner开发程序的过程。在Unix或者Linux操作系统下,通过点击Qt设计器的图标,或者在终端下进入Qt所在的目录然后输入./designer,即可启动Qt图形设计器。下图所示是Qt/X11中自带的QtDesigner的主窗口。27289.2.4Qt开发流程1.手工编写一个main.cpp文件2.通过progen命令生成该程序的工程文件3.修改tmake目录下linux-arm-g++配置文件4.指定tmake路径5.部分路径的设置6.通过tmake自动生成Makefile文件7.运行make命令生成可执行文件8.挂载主机9.开发板上的设置299.2.5建立Qt/Embedded开发环境为了建立Qt/Embedded开发环境,需要安装的软件包资源包括:(1)tmake工具安装包:tmake-1.13.tar.gz,用来生成和管理Qt/Embedded应用程序的Makefile文件。(2)Qt/Embedded的安装包:qt-embedded-2.3.10-free.tar.gz,用于Qt/Embedded的安装。(3)Qt/X11版安装包:qt-x11-2.3.2.tar.gz,用来产生X11开发环境所需的几个必要的工具,如Designer以及虚拟仿真窗口qvfb。利用qvfb,在不需要实际开发板的情况下,也可以开发Qt应用程序。(4)Qtopia安装包:qtopia-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论