嵌入式系统设计大学教程 教学课件 ppt 作者 刘艺 许大琴 万福 ch8 用户图形接口GUI

上传人:E**** 文档编号:89376497 上传时间:2019-05-24 格式:PPT 页数:81 大小:1.23MB
返回 下载 相关 举报
嵌入式系统设计大学教程 教学课件 ppt 作者  刘艺 许大琴 万福 ch8 用户图形接口GUI_第1页
第1页 / 共81页
嵌入式系统设计大学教程 教学课件 ppt 作者  刘艺 许大琴 万福 ch8 用户图形接口GUI_第2页
第2页 / 共81页
嵌入式系统设计大学教程 教学课件 ppt 作者  刘艺 许大琴 万福 ch8 用户图形接口GUI_第3页
第3页 / 共81页
嵌入式系统设计大学教程 教学课件 ppt 作者  刘艺 许大琴 万福 ch8 用户图形接口GUI_第4页
第4页 / 共81页
嵌入式系统设计大学教程 教学课件 ppt 作者  刘艺 许大琴 万福 ch8 用户图形接口GUI_第5页
第5页 / 共81页
点击查看更多>>
资源描述

《嵌入式系统设计大学教程 教学课件 ppt 作者 刘艺 许大琴 万福 ch8 用户图形接口GUI》由会员分享,可在线阅读,更多相关《嵌入式系统设计大学教程 教学课件 ppt 作者 刘艺 许大琴 万福 ch8 用户图形接口GUI(81页珍藏版)》请在金锄头文库上搜索。

1、嵌入式系统设计大学教程,第八章 用户图形接口GUI,主要内容,8.1 嵌入式系统中的GUI 8.2 Qt/Embedded基础 8.3 Qt/Embedded开发环境 8.4 Qt/Embedded开发实例,8.1 嵌入式系统中的GUI,8.1 嵌入式系统中的GUI GUI技术是一种人与计算机接口的技术,该技术除了使用字符外,主要使用图形、图标、图像和控件等界面与用户进行交互。,8.1 嵌入式系统中的GUI,8.1.1 嵌入式GUI的发展需求 GUI在嵌入式系统或者实时系统中的地位将越来越重要,这些系统对GUI的基本要求包括:轻型、占用资源少、高性能、高可靠性、可配置、可移植等特点。 体积小

2、消耗系统资源少 系统独立 可配置、可移植,8.1 嵌入式系统中的GUI,8.1.2 嵌入式GUI的功能特点 输入/输出硬件设备 图形原语 图形文件格式 字符集和字体 窗口和控件集合,8.1 嵌入式系统中的GUI,8.1.3 目前流行的嵌入式GUI系统 嵌入式系统上的GUI系统的实现方法大概有三种方式: 第一种方式是自己来设计满足自身需要的图形用户界面系统。 第二种方式是把图形用户界面放在应用程序中,图形用户界面的运行逻辑由应用程序自己负责。 第三种方式就是采用已经比较成熟的图形用户界面系统,如:Qt/Embedded、MiniGUI、MicroWindows等。,8.1 嵌入式系统中的GUI,

3、1、MicroWindows MicroWindows是一个著名的开源嵌入式GUI软件,目的是把现代图形视窗环境引入到运行Linux的小型设备和平台上,作为X Windows的替代品。它支持多线程,但必须使用PThread库。,8.1 嵌入式系统中的GUI,MicroWindows是一个典型的基于Client/Server体系结构的GUI系统,采用分层结构。,8.1 嵌入式系统中的GUI,2、OpenGUI OpenGUI在Linux系统上存在已经很长时间了。最初的名字叫FastGL,并只支持256色的线性显存模式。如今也支持其他显示模式,并且支持多种操作系统平台,比如MS-DOS、QNX和L

4、inux等等,不过目前只支持x86硬件平台。,8.1 嵌入式系统中的GUI,OpenGUI分为三层: 最低层是由汇编编写的快速图形引擎; 中间层提供了图形绘制API,包括线条、矩形、圆弧等,并且兼容于Borland的BGI API; 第三层用C+编写,提供完整的GUI对象集。,8.1 嵌入式系统中的GUI,3、Tiny-X Windows X Windows是Linux以及其他类Unix系统的标准GUI。X Windows系统采用标准的Client/Server体系结构,具有可扩展性好、可移植性好等优点。但该系统庞大、累赘、效率低。为了获得应用程序的可移植性,许多厂家通过对X Windows系

5、统的紧缩开发,目前已经开发出了大小约为800KB的Tiny-X Server。,8.1 嵌入式系统中的GUI,Tiny-X Windows的体系结构,8.1 嵌入式系统中的GUI,4、Qt/Embedded Qt/Embedded是著名的Qt库开发商Trolltech公司开发的面向嵌入式系统的Qt版本。 Qt/Embedded延续了Qt在X上的强大功能,但在底层摒弃了XLib,仅采用FrameBuffer作为底层图形接口。 Qt/Embedded类库完全采用C+封装,并且有着丰富的控件资源和较好的可移植性。,8.1 嵌入式系统中的GUI,Qt/Embedded体系结构,8.1 嵌入式系统中的G

6、UI,5、MiniGUI MiniGUI是由北京飞漫软件技术有限公司主持的自由软件,遵循GPL条款发布,其目标是为实时嵌入式Linux系统建立一个快速、稳定和轻量级的图形用户界面支持系统。,8.1 嵌入式系统中的GUI,从整体结构上看,MiniGUI也是分层设计的,MiniGUI的层次结构,几种常见嵌入式GUI的比较,8.1 嵌入式系统中的GUI,上述GUI系统均存在以下一个或多个缺点: 过于依赖某种操作系统和第三方函数库,移植性不好; 消耗资源过多,小适合小型应用系统; 窗口系统功能比较简单,不成熟; 不易扩展或不易于裁剪。,主要内容,8.1 嵌入式系统中的GUI 8.2 Qt/Embedd

7、ed基础 8.3 Qt/Embedded开发环境 8.4 Qt/Embedded开发实例,8.2 Qt/Embedded基础,Qt是Trolltech公司的一个标志性产品。 Qt是一个支持多操作系统平台的应用程序开发框架,它的开发语言是C+。Qt最初主要是为跨平台的软件开发者提供统一的、精美的图形用户编程接口,但是现在它也提供了统一的网络和数据库操作的编程接口。,8.2 Qt/Embedded基础,Qt是以工具开发包的形式提供给开发者的,这些工具开发包包括了图形设计器、Makefile制作工具、字体国际化工具、Qt的C+类库等等。 目前,Qt可以支持的操作系统平台如下: MS/Windows

8、95、Windows 98、Windows NT 4.0、Windows 2000、Windows XP; Unix/X11 Linux、Sun Solaris、HP-UX、Compaq True64Unix、IBM AIX、SGI IRIX和很多其它X11平台; Macintoshi Mac OSX; 嵌入式的、支持FramBuffer的Linux平台。,8.2 Qt/Embedded基础,8.2.1 Qt/Embedded简介 Qt/Embedded是Trolltech公司开发的面向嵌入式系统的Qt版本,开发人员多为KDE项目的核心开发人员。 在底层,Qt/Embedded彻底摒弃了XLi

9、b,仅采用FrameBuffer作为底层图形接口。 Qt/Embedded类库完全采用C+封装。丰富的控件资源和较好的可移植性是Qt/Embedded最为优秀的一方面。,8.2 Qt/Embedded基础,8.2.1 Qt/Embedded简介 使用X下的开发工具Qt Designer可以直接开发基于Qt/Embedded的UI(用户操作接口)界面。 在代码设计上,Qt/Embedded巧妙地利用了C+独有的机制,如继承、多态、模板等,具体实现非常灵活。 但其底层代码由于追求与多种系统、多种硬件的兼容,代码补丁较多,风格稍显混乱。,8.2 Qt/Embedded基础,Qt/Embedded的实

10、现结构,8.2 Qt/Embedded基础,8.2.2 Qt/Embedded特点 采用FrameBuffer(帧缓冲)作为底层图形接口 在被Linux支持的所有处理器上运行 可实现图形加速 组件化编程机制 可对功能精简 其他节省内存技术,8.2 Qt/Embedded基础,8.2.3 Qt/Embedded体系架构 使用Qt/Embedded,开发者可以感受到在Qt/X11,Qt/Windows和Qt/Mac等不同的版本下使用相同的API编程带来的便利。,Qt/Embedded与Qt/X11的Linux版本的比较,8.2 Qt/Embedded基础,1、Qt/Embedded的图形引擎实现基

11、础 Qt/Embedded的底层图形引擎是基于FrameBuffer之上的。FrameBuffer是在Linux内核架构版本2.2以后推出的标准显示设备驱动接口。 目前比较高级的嵌入式SOC中大多数都集成了LCD控制模块,LCD控制模块一般采用双DMA控制器组成的专用DMA通道。,8.2 Qt/Embedded基础,FrameBuffer驱动程序的实现分为两个方面: 一方面是对LCD以及其相关部件的初始化,包括画面缓冲区的创建和对DMA通道的设置; 另一方面是对画面缓冲区的读写,具体的代码为read、write、lseek等系统调用接口函数。,8.2 Qt/Embedded基础,Qt/Embe

12、dded 3.x中底层图形引擎实现结构,Qt/Embedded的窗口系统,Qt/Embedded窗口系统体系结构,8.2 Qt/Embedded基础,一个典型的嵌入式Qt窗口系统一般包括: 一个服务器进程 服务器进程负责为客户和其本身分配显示区域、生成鼠标和键盘事件,它通常包含那些启动客户的用户界面。 一个或多个客户进程 客户进程则通过与服务器通信来申请显示区域,接收鼠标和键盘事件。客户可以直接访问所分配的显示区域,以便为用户提供GUI服务。,8.2 Qt/Embedded基础,鼠标设备可以是触摸板或其它指针型设备。服务器能够产生一个设备独立的鼠标事件,并将其发送到相应的客户进程,负责更新设备

13、的鼠标光标 。 键盘事件也由服务器来维护,它也是一个设备独立的事件,通常使用Unicode码或固定的键盘编码。 Qt/Embedded为客户提供的API与标准的Qt API是一致的。,8.2 Qt/Embedded基础,Qt/Embedded的客户库在一些情况下需要与服务器进程建立连接。 Qt/Embedded客户库负责处理所有的绘图操作,包括文本显示和字体处理。另外,它还处理那些定制的窗口装饰,如标题条等。 Qt/Embedded的库还支持Windows的.FON字体文件,支持TrueType、Typel和BDF字体、以及一种能够有效利用内存的位图格式字体QPF 。,8.2 Qt/Embed

14、ded基础,3、Qt系统的信号与槽机制 (1)信号与槽机制概述 信号(signal)和槽(slot)是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方。 信号和槽是QT自行定义的一种通信机制,它独立于标准的C/C+语言,因此要正确的处理信号和槽,必须借助QT工具moc(Meta Object Compiler)。,8.2 Qt/Embedded基础,当对象改变其状态时,信号就由该对象发射(emit)出去,这就是对象所要做的全部事情,对象并不知道另一端是谁在接收这个信号。这是真正的信息封装。 槽用于接收信号,但它们是普通的对象成员函数。一个槽并不知道是否

15、有任何信号与自己相连接。 可以将很多信号与单个的槽进行连接,也可以将单个的信号与很多的槽进行连接,甚至于将一个信号与另外一个信号相连接也是可能的。 信号与槽构造了一个强大的组件编程机制。,8.2 Qt/Embedded基础,3、Qt系统的信号与槽机制 (2)信号与槽的实现与连接 1)信号与槽的定义 信号的声明是在头文件中进行的,QT的signals关键字指出进入了信号声明区,随后即可声明自己的信号。 例如,我们定义两个信号: signals: void mySignal(); void mySignal(int x,int y);,8.2 Qt/Embedded基础,1)信号与槽的定义 槽是普

16、通的C+成员函数,可以被正常调用,它们唯一的特殊性就是很多信号可以与其相关联。当与其关联的信号被发射时,这个槽就会被调用。槽可以有参数,但槽的参数不能有缺省值。和其它的成员函数一样,槽也有存取权限。槽的存取权限决定了谁能够与其相关联。,8.2 Qt/Embedded基础,槽函数也分为三种类型: public slots:在这个区内声明的槽意味着任何对象都可将信号与之相连接。这对于组件编程非常有用。 protected slots:在这个区内声明的槽意味着当前类及其子类可以将信号与之相连接。这适用于那些槽,它们是类实现的一部分,但是其界面接口却面向外部。 private slots:在这个区内声明的槽意味着只有类自己可以将信号与之相连接。这适用于联系非常紧密的类。,信号与槽的连接模型,8.2 Qt/Embedded基础,2)信号与槽的连接 调用QObject对象的connect函数来将某个对象的信号与另外一个对象的槽函数相关联,这样当发射者发射信号时,接收者的槽函数将被调用。 该函数的定义如下: Bool QObjec

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号