ARM汇编语言程序设计基础 第13章 图形用户接口

上传人:y****3 文档编号:51667125 上传时间:2022-01-28 格式:PPT 页数:45 大小:108KB
收藏 版权申诉 举报 下载
ARM汇编语言程序设计基础 第13章 图形用户接口_第1页
第1页 / 共45页
ARM汇编语言程序设计基础 第13章 图形用户接口_第2页
第2页 / 共45页
ARM汇编语言程序设计基础 第13章 图形用户接口_第3页
第3页 / 共45页
资源描述:

《ARM汇编语言程序设计基础 第13章 图形用户接口》由会员分享,可在线阅读,更多相关《ARM汇编语言程序设计基础 第13章 图形用户接口(45页珍藏版)》请在装配图网上搜索。

1、 第第13章章 图形用户接口图形用户接口GUI 定义n图形用户接口Graphics User Interface,GUI,又叫桌面系统、窗口管理系统、图形操作环境、图形用户界面等,是操作系统和用户的人机接口。GUI极大地方便了非专业用户的使用,人们不再需要死记硬背大量的命令,而可以通过窗口、菜单方便地进行操作。 图形用户接口的层次结构图形用户接口的层次结构图形根底设施图形根底设施n图形根底设施是一种底层的图形驱动引擎,一般是由操作系统提供。它是用作其他更高一层图形或者图形应用程序的根本函数库/依赖库,在其之上可以针对某些特定应用需求做进一步的封装。譬如,在对于只需要单任务的低端应用,可以以AP

2、I函数的形式,封装成静态或者动态的高级图形函数库。而在更多的场合,用户是需要类似Windows的桌面系统,这样就要构建多任务GUI窗口管理系统。在Linux环境下,常见的图形根底设施有SVGALib(VGA)、X Window(Xlib)、LibGGI和FrameBuffer等。高级图形函数库高级图形函数库n高级图形函数库提供的图形界面编程接口主要分为两大类,一类只提供根本的画点绘线、文本区域处理等,如SDL(standard drawing library);另一类就是以窗口部件widget,亦称为控件、部件等形式,采用面向对象方式进行可视化的编程,可用于嵌入式GUI系统需要诸如pThrea

3、d等消息处理函数库的支持和可以运行在GUI系统上的应用程序的开发,诸如GTK,QT和PEG等。13.1.3 GUI窗口管理系统窗口管理系统nGUI窗口管理系统是一个非常复杂的系统,很多时候甚至就类似于一个操作系统,它是嵌入式系统设计中迄今为止没有很好解决的难点之一。目前,在桌面GUI系统领域主要有X-Windows、KDE、GNOME等,在嵌入式系统领域,主要有MiniGUI、Nano-X(Microwindows)、OpenGUI和Qpe(Qt Palmtop Environment)等。13.2 桌面桌面Linux系统中系统中GUI nKDEKool Desktop Environment

4、与GNOMEGNU Network Object Environment是目前桌面Linux/UNIX系统中最常用的桌面GUI窗口系统。MiniGUI、Qt/E和Nano-X那么是嵌入式系统中广泛应用的嵌入式GUI系统。13.2.1 KDEnKDE是1996年德国Matthias Ettrich发起了符合GPL标准的开源工程,与之前各种基于X Window的图形用户环境不同的是,KDE并非针对系统管理员等高级用户,而是锁定为普通的终端用户,即希望KDE能够包含用户日常应用所需要的所有应用程序组件,例如Web浏览器、电子邮件客户端、办公套件、图形图像处理软件等。 13.2.2 GNOMEnGNO

5、ME是1997年墨西哥年仅26岁的程序员Miguel De Icaza发起的开源工程,目前诸如RedHat/Fedora、SuseLinux发行版都默认使用它。它功能上的特性和KDE类似,并且相对要轻便些 13.3 嵌入式Linux系统GUI n在现代的嵌入式人机系统中,人是用户和主动的参与者,能与机器对话,要求机器对人的各种动作做出响应。因此,图形用户界面已经成为嵌入式应用系统研制中的重点之一。典型的嵌入式GUI 系统有紧缩的 X Window 系统、MiniGUI、Nano-XMicroWindows、Tiny X紧缩版的X-Windows、OpenGUI、QT/Embedded 等.13

6、.3.1 MiniGUInMiniGUI是1998年底推出的一款面向嵌入式系统或者实时系统的GUI系统,是国内最早出现的、在国际上有一定知名度的几个自由软件工程之一,最先是由原清华大学教师魏永明先生主持开发,现由北京飞漫软件技术进行商业化维护和运作。自1999 年初以遵循 GPL 协议发布第一个版本以来,MiniGUI 已广泛应用于手持信息终端、机顶盒、工业控制系统及工业仪表、便携式多媒体播放机、查询终端等产品和领域。13.3.2 QtopianQtopia是嵌入式GUI窗口系统,也叫做嵌入式Linux的桌面系统,是Trolltech 面向嵌入式设备的Qt掌上机环境Qt Palmtop Env

7、ironment,Qpe。它建立在Qt/ Embedded(即Qt/E)之上,基于Qt/E开发出来的程序就可以放到这个桌面上,为开发提供了一个类似于Windows这样易于使用的界面。Qtopia分为开源的PDA版本Qtopia和收费的 版Qtopia,前者提供PDA的桌面系统基根源代码,后者还包括 模块代码等。 13.3.3 Nano-XnNano-X的前身就是Century Software 推出的开源工程Microwindows。它主要采用C语言进行开发,采用C/S体系结构,提供了相对完善的图形功能,并且具有分层设计。最底层是屏幕和输入设备驱动程序关于键盘或鼠标来与实际硬件交互。在中间层,

8、可移植的图形引擎提供对线的绘制、区域的填充、多边形、裁剪以及颜色模型的支持。 13.4 MiniGUI的开发初步的开发初步nMiniGUI具有良好的软件架构,通过抽象层将MiniGUI 上层和底层操作系统隔离开来。如下图,基于MiniGUI 的应用程序一般通过ANSI C 库、操作系统和驱动程序接口以及MiniGUI 自身提供的API 来实现自己的功能;MiniGUI 中的“可移植层可将特定操作系统及底层硬件的细节隐藏起来,而上层应用程序那么无需关心底层的硬件平台输出和输入设备。13.4 MiniGUI的开发初步的开发初步13.4.1 MiniGUI 的开发环境 nMiniGUI 的开发可以在

9、Linux 或Windows操作系统下进行。由于MiniGUI 完全用C 来编写,具有非常好的移植性,也使得MiniGUI 应用程序的交叉编译工作十分方便。一般而言,为嵌入式设备编写的应用程序可以在任何安装在针对该设备的交叉编译工具链的平台上进行编译,比方在桌面Linux 环境下安装针对ARM CPU平台交叉编译器arm-linux-gcc等,然后再对应用程序进行交叉编译。 n这里给出windows下面编译minigui的步骤wvfb:n 首先要从网上下载MinGui For Win32 开发包的源代码。;n 解压后,把dll文件夹下的拷贝到helloworld文件夹下以便程序能够在当前目录下

10、找到DLL文件,然后进入helloworld文件夹找到,用vc+翻开;n 然后在工程菜单内设置选择C/C分类中选择预处理n在包含路径中填入./include,./include/minigui,./include/pthread-win32n 在LINKE目录下选择general,然后把LIB里的库文件加在对象/库模块的后面,也就是那两个,n 最后在分类中选择INPUT把库文件地址连接进去也就是./LIBn 翻开wvfb文件夹下的,然后在vc+中执行helloworld .n这里要注意的是,MiniGUI for Win32是预编译的函数库,因此,其中的功能特性是固定的,包括编译时选项和运行时

11、选项。 13.4.2 MiniGUI的移植的移植n1. PC 机上配置,编译,安装,运行机上配置,编译,安装,运行MiniGUIn1在在redhat9.0 上配置上配置FrameBuffern要激活要激活VESA Frame Buffer 驱动程序,需要驱动程序,需要修改修改/boot/grub/ 文件,并在文件,并在kernel打头的打头的一行添加一行添加vga=0 x0317.n其中其中8,FrameBuffer)就是设置了就是设置了VESA FrameBuffer 的引导选项。的引导选项。 n2在在PC上编译并安装上编译并安装MiniGUI开发开发包包n第一步,在第一步,在PC 上编译并

12、安装上编译并安装libminiguin第二步,在第二步,在PC 上安装上安装MiniGUI 的资源的资源n第三步,编译应用程序例子第三步,编译应用程序例子n3Redhat上MiniGUI 的运行n由于必须要在控制台模式才能运行MiniGUI。要启动控制台,按住CtrlAlt 的同时,n按F1F6 中的任意一个均可,然后登录系统,进入sample 目录,直接运行即可。n2. 交叉编译,并在嵌入式目标机上运行交叉编译,并在嵌入式目标机上运行MiniGUIn(1) 交叉编译libminiguin(2) 安装MiniGUI 资源文件n(3) 编译应用程序例子n(4) 在嵌入式目标机上运行MiniGUI

13、13.4.3 MiniGUI应用编程库应用编程库nMiniGUI在嵌入式产品中移植好后,就要进行相应的产品应用程序的开发。应用程序开发人员可以直接调用MiniGUI的窗口以及图形接口编写自己的应用程序,也可以利用MiniGUI 内建的各种控件control/widget来快速开发自己的应用程序。MiniGUI 提供了各种丰富的控件,如按钮,工具栏等。同时还为开发者提供了自定义控件的接口,并能方便地对已有控件进行扩展。13.5 Qt/Embeddedn Qt/Embedded的应用架构nQt/Embedded简称为Qt/E ,是著名的QT开发商Trolltech推出的面向嵌入式系统领域的QT开发

14、包,是一组用于访问嵌入式设备的 Qt C+ API函数库。它以原始桌面Qt为根底,并做了许多出色的调整以适用于嵌入式环境,提供了丰富的窗口小部件Widgets,并且还支持窗口部件的定制,可为用户提供漂亮的图形界面。 13.5 Qt/EmbeddednFramebuffer是以上内核的版本中的提供的一种图形驱动程序接口。这种接口采用内存映射mmap系统调用,将显示设备抽象为帧缓冲区。用户可以将它看成是显示内存的一个映象,将其映射到进程地址空间之后,就可以直接进行读写操作了,而写操作可以立即反映在屏幕上。Framebuffer驱动程序是最重要的驱动程序之一,正是这个驱动程序才能使系统屏幕显示内容。

15、 13.5.2 QVFB虚拟运行环境虚拟运行环境nQVFB是“Qt/Embedded Virtual Framebuffer的简称,即Qt/E的虚拟帧缓冲,是在桌面Linux中为嵌入式图形应用程序提供一个虚拟的运行环境。它实际上就是由一个X11的应用程序在共享的内存去也中来模拟了一个缓冲帧,通过指定显示设备的宽度,高度和颜色深度,虚拟出来的缓冲帧将和物理的嵌入式显示设备在每个像素上保持一致。 n使用QVFB的方法如下:n 将Qt/E源代码中的qvfb目录作为正常的x86 PC平台的Qt/X11应用程序来编译,而不要做为Qt/E的应用程序来编译。 n 这时就可以运行一些已经编译后的二进制Qt/E

16、应用程序,命令行中要用参数-qws表示将它作为Qt/E效劳器。13.6 Qt开发及运行环境的创立开发及运行环境的创立n13.6.1 Qt/E应用程序在应用程序在PC虚拟平台上虚拟平台上的运行的运行n1、 Qt/E应用程序在PC虚拟平台上的运行n首先首先,下载Qt开发环境的源程序包。 n2 、Qt/E应用程序在嵌入式设备中的运行 n要将写好的Qt/E应用程序移植到嵌入式设备上运行,需要对Qt/Embedded采用交叉编译的方式重新进行编译,生成一些适合于嵌入式Linux的函数库。 n3、 Qtopia窗口系统在PC虚拟平台上的运行 n要在PC平台上建立起Qtopia 窗口系统的虚拟运行环境,除了

17、同前面一样要编译Build Qt/X11、Build QvfbQTEDIR/tools/qvfb和Build libqte外,就另外还需要编译Qtopia这个GUI系统 。n4、 Qtopia窗口系统在嵌入式设备中的运行 n实际上就是将Qtopia窗口系统移植到嵌入式设备中的运行,其前面几个步骤同“Qt/E应用程序在嵌入式设备中的运行,只是最后将需要拷贝到开发板上的文件整理到一个单独的文件夹里面,然后再下载烧录到嵌入式设备的FLASH中。13.6.2 Qt/E应用程序在嵌入应用程序在嵌入式设备中的运行式设备中的运行n要将写好的Qt/E应用程序移植到嵌入式设备上运行,需要对Qt/Embedded

18、采用交叉编译的方式重新进行编译,生成一些适合于嵌入式Linux的函数库。移植过程中都是采取宿主机和目标机的开发模式。宿主机是一台运行Redhat Linux 的PC 机,目标机是基于S3C2410的嵌入式设备。 n先在宿主机上调试通过后,再移植到目标机上。详细步骤如下: n(1)Build Qt/Embeddedn(2)修改tmake 配置文件n(3)生成可执行文件13.6.3 Qtopia窗口系统在窗口系统在PC虚拟平台上的运行虚拟平台上的运行n要在PC平台上建立起Qtopia 窗口系统的虚拟运行环境,除了同前面一样要编译Build Qt/X11、Build QvfbQTEDIR/tools

19、/qvfb和Build libqte外,就另外还需要编译Qtopia这个GUI系统,13.6.4 Qtopia窗口系统在嵌窗口系统在嵌入式设备中的运行入式设备中的运行n实际上就是将Qtopia窗口系统移植到嵌入式设备中的运行,其前面几个步骤同“Qt/E应用程序在嵌入式设备中的运行,只是最后将需要拷贝到开发板上的文件整理到一个单独的文件夹里面,然后再下载烧录到嵌入式设备的FLASH中。13.7 Qt应用程序的开发应用程序的开发n13.7.1 Qt/E根本控件根本控件n1.窗体交互界面。窗体交互界面。Qt 拥有丰富的满足不同需拥有丰富的满足不同需求的窗体,使用起来很灵活,而且它容易被子求的窗体,使

20、用起来很灵活,而且它容易被子类化,以满足不同的需求。窗口部件是用户界类化,以满足不同的需求。窗口部件是用户界面的一个原子:它从窗口系统接收鼠标、键盘面的一个原子:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己的表现。和其它事件,并且在屏幕上绘制自己的表现。每一个窗口部件都是矩形,并且它们按每一个窗口部件都是矩形,并且它们按Z轴顺轴顺序排列的。一个窗口部件可以被它的父窗口部序排列的。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一局部。件或者它前面的窗口部件盖住一局部。13.7.1 Qt/E根本控件根本控件n2、对话框、对话框n使用可视化Qt 图形设计器设计工具用户可以建立

21、自己的对话框。Qt使用布局管理自动设置窗体和别的窗体之间相对的 尺寸和位置,这样可以确保对话框能够最好的利用屏幕上的可用空间。nQt提供很多常用的对话框,例如,选择文件等。 开发工具开发工具Qt designer介绍介绍nQt 图形设计器是一个具有可视化用户接口的设计工具。Qt的应用程序可以完全用纯命令行下的代码编写,也可Qt图形设计器这种集成开发环境来开发。 13.7.3 控制台上的控制台上的Qt/E应用编程应用编程n所谓控制台上的Qt/E应用程序,就是指利用Qt/E库函数设计的图形化应用程序,直接在Linux的控制台下启动运行,而不是在GUI桌面系统中运行。这里的控制台可以目标机的嵌入式L

22、inux,也是宿主机的桌面Linux,只是后者要先运行qvfb。 n1.一个典型的Qt应用程序分析n/精简的源程序n1 #include n2 #include n3 int main(int argc, char *argv)n4 n5 QApplication app (argc, argv);n6 QLabel *hello = new QLabel(Hello Qt/Embedded!, 0);n7 app.setMainWidget(hello);n8 hello-show();n9 return ();n10 n第1 行和第2 行包含了两个头文件,这两个头文件中包含了QApplic

23、ation 和QLabel类的定义。n第5 行创立了一个QApplication 对象,用于管理整个程序的资源,它需要2 个参数,因为Qt 本身需要一些命令行的参数。n第6 行创立了一个用来显示Hello Qt/Embedded!的部件。在Qt 中,部件是一个可视化用户接口,按钮、菜单、滚动条都是部件的实例。部件可以包含其它部件,例如,一个应用程序窗口通常是一个包含QMenuBar、QToolBar、QStatusBar 和其它部件的一个部件。在QLabel 函数中的参数0 表示,这是一个窗口而不是嵌入到其它窗口中的部件。n第7 行设置hello 部件为程序的主部件,当用户关闭主部件后,应用程

24、序将会被关闭。如果没有主部件的话,即使用户关闭了窗口程序也会在后台继续运行。n第8 行使hello 部件可视,一般来说部件被创立后都是被隐藏的,因此可以在显示前根据需要来订制部件,这样的好处是可以防止部件创立所造成的闪烁。n第9 行把程序的控制权交还给Qt,这时候程序进入就绪模式,可是随时被用户行为激活,例如点击鼠标、敲击键盘等。n2.完成一个Qt应用程序的建立步骤n第一步:新建一个空的工程文件.pron第二步:新建一个用户接口窗体(.ui)n第三步:生成和n第四步:编写主函数main()n第五步:修改工程文件n第六步:生成Makefile 文件13.7.4 Qtopia上的上的Qt/E应用编程应用编程n要想将开发的应用程序添加到GUI窗口系统qtopia中运行,那么还需要完成下面步骤:n1.准备好camera程序的图标文件n2.建立.desktop文件,这是最为重要的。n3.运行

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!