嵌入式系统图形界面方面的项目.docx
《嵌入式系统图形界面方面的项目.docx》由会员分享,可在线阅读,更多相关《嵌入式系统图形界面方面的项目.docx(21页珍藏版)》请在冰豆网上搜索。
嵌入式系统图形界面方面的项目
嵌入式课程设计报告
题目:
嵌入式系统图形界面方面的项目
学生姓名:
谱
学号:
班级:
10204102
指导教师:
高小辉
2012年12月10日
目录
摘要3
第1章绪论4
1.1嵌入式系统概述5
1.2图形界面系统概况6
第2章系统的开发技术与环境6
2.1开发技术及运行环境6
2.2关键技术简介7
第3章系统可行性以及需求分析8
3.1系统可行性分析8
3.2需求分析9
3.3系统用例9
第4章系统总体设计10
4.1系统结构框架11
4.2系统模块设计11
4.3模块组成结构12
4.4信号-槽机制12
4.5通用对话框的设计与实现13
第5章系统模块设计及实现13
5.1系统流程分析13
5.3图形设备接口模块14
第6章系统测试15
6.1系统测试概述15
6.2系统测试过程出现的问题及解决办法16
结论16
参考文献16
摘要
21世纪被称为“移动之王”时代,嵌入式在手机、PDA等手持设备领域的应用出现了一个强劲的发展势头。
手持设备的关键技术便是人机交互技术,图形界面系统正是实现人机交互的重要接口,因此一个友好的图形用户界面是必不可少的。
我们采用了Qt/Embedded的开发工具,Qt/Embedded是一个专门为小型设备提供图形界面的应用框架和窗口系统,它完整的包含了C++图形界面和基于Linux嵌入式开发工具。
Qt/Embedded类库完全采用C++封装,提供给应用程序开发者进行开发所需的所有功能。
在利用Qt进行系统的设计开发过程中,可以通过两种方法进行开发,一种是纯代码格式,一种是通过QtDesigner先进行界面设计再完成各项功能的编码实现。
本系统的主界面、图片浏览器、绘图工具、音频播放器采用代码直接实现。
文本编辑器采用第二种方法实现。
使我们能够熟悉两种方法的优缺点,进而对通过Qt4进行通行界面的开发有更深的了解。
通过设计开发,我所完成的图形用户界面系统可以完成音乐文件播放器,图形的绘制工具,文本编辑器,图片浏览器等应用程序,可进行一些必要的基本操作,并在PC机上调试成功。
本论文主要介绍了这样几个方面:
(1)研究并分析了嵌入式的发展历史,以及GUI在人机交互中的作用和发展现状。
(2)介绍了所用的编程工具和此题目的可行性分析。
(3)具体分析了系统的实现过程和所遇到的问题。
关键字:
Linux;Qt/Embedded;图形用户界面;GUI
第1章绪论
一嵌入式系统概述
1.定义
IEEE定义嵌入式系统为:
“用于控制、监视或者辅助设备、机器或者车间运行的装置。
”也可以说。
它是任意包含一个可编程计算机的设备,但是这个设备不是作为通用计算机而设计的。
一台通用个人电脑不能称为嵌入式系统,尽管有时会把它嵌入到某些设备中。
而一台包含有微处理器的打印机、数码相机就可以称为嵌入式系统。
目前较流行的定义是:
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四部分组成,用于实现对其他设备的控制、监视或管理等功能。
2.嵌入式系统的发展
嵌入式系统的出现现今已经有30多年,从20世纪80年代开始,出现了各种各样的基于嵌入式的操作系统,其中应用较为广泛的主要有:
Linux,WindowsCE,VxWords,pSOS,QNX,PalmOS等。
嵌入式系统诞生于PC机时代,共经历了四个发展阶段:
(1)嵌入式系统的出现最初是基于单片机的。
70年代单片机的出现,使得汽车、家电、工业机器、通信装置以及成千上万种产品可以通过内嵌电子装置来获得更佳的使用性能:
更容易使用、更快、更便宜。
这些装置已经初步具备了嵌入式的应用特点,但是这时的应用只是使用8位的芯片,处理效率低、存储容量小、接口少、执行一些单线程的程序,还谈不上“系统”的概念。
(2)简单操作系统阶段。
从80年代早期开始,嵌入式系统的程序员开始用商业级的“操作系统”编写嵌入式应用软件,这使得可以获取更短的开发周期,更低的开发资金和更高的开发效率,“嵌入式系统”真正出现了。
确切点说,这个时候的操作系统是一个实时核,这个实时核包含了大多传统操作系统的特征,包括任务管理、任务间通讯、同步与相互排斥、中断支持、内存管理等功能。
(3)实时操作系统阶段。
90年代以后,随着对实时性要求的提高,软件规模不断上升,实时核逐渐发展为实时多任务操作系统(RTOS),并作为一种软件平台逐步成为目前国际嵌入式系统的主流。
这时候更多的公司看到了嵌入式系统的广阔发展前景,开始大力发展自己的嵌入式操作系统。
具备文件和目录管理、设备支持、多任务、网络支持、图形窗口以及用户界面等功能,随着嵌入式技术的发展前景日益广阔,相信会有更多的嵌入式操作系统软件出现。
(4)面向Internet的阶段。
21世纪将是网络的时代,将嵌入式系统应用到各种网络环境中去的要求也越来越强烈。
目前大多数嵌入式系统还处于孤立于Internet之外的状况,伴随Internet的进一步发展,再加上互联网技术与信息家电、工业控制技术等的日益紧密的结合,因此嵌入式设备与互联网的结合才是嵌入式的真正未来。
3.嵌入式系统的特点
(1)专用性强
为特定的应用而设计,用于特定的工作任务,软硬件均可裁剪,能够满足对象系统要求的在最近本软硬件配置。
(2)可靠性高
代码需要固化、存放在存储器的芯片或者处理器内部存储器件中。
(3)功耗、体积小、集成度高、成本低
系统的软硬件都要进行高效设计,在保证稳定、安全、可靠的基础上量体裁衣,去除冗余部分,用较少的软件和硬件资源实现较高的性能。
4.嵌入式人机交互系统的现状和发展趋势
人机交互是用于研究人、计算机之间的相互作用的技术。
界面窗口是人与计算机之间交换信息的媒介和接口,是计算机系统的重要组成部分。
人机交互的发展共经历了以下几个阶段:
(1)早期的手工业阶段,用户采用手工操作和依赖机器的方法在机器上执行操作。
(2)作业控制语言及交互命令语言阶段,采用批处理语言及命令语句与计算机进行交流。
(3)图形用户界面阶段。
(4)多通道的智能人机交互阶段。
可以基于视线跟踪、语音识别、手势输入、感觉反馈等交互新技术。
目前,人机交互技术处于多通道、多媒体的智能人机交互阶段,已经取得了很多研究成果,很多产品问世。
侧重于多媒体的技术的有:
触摸式显示屏实现“桌面”计算机,3D显示器等;侧重多通道技术的有:
“汉王笔”手写汉字识别系统,IBM/ViaVoice连续中文识别系统等
5.嵌入式人机交互系统的发展趋势
当今信息时代,使得嵌入式产品获得巨大发展契机,为嵌入式市场展示了美好前景,同时也对嵌入式研究提出了新的挑战。
(1)网络化要求
(2)精简系统内核
(3)提供友好的多媒体人机界面。
二.图形界面系统概况
1.GUI的历史
计算机用户界面是指计算机与用户之间的对话接口,计算机系统的重要组成部分。
计算机的发展史不仅是计算机本身处理速度和存储器容量飞速提升的历史,而且还是计算机用户界面不断发展更新的历史。
早期的计算机通过控制面板上的指示灯来显示二进制数据和指令,人们通过面板的开关、按键、纸带送入各种数据和指令。
50年代后采用了作业控制语言及控制台打字机等,使计算机处理多个计算任务,提高了计算机效率。
80年代后计算机采用SmalItalk-80程序设计开发,将用户界面推进图形用户界面的新阶段。
用户界面的重要性在于它极大影响了最终用户的使用,影响了计算机的推广应用,进而也影响了人们的工作和生活。
由于开发用户界面的工作量大,加上不同用户对界面要求不同,所以,用户界面已经成为计算机软件开发中最重要的部分之一。
2.图形用户界面在嵌入式或实时系统中的地位
在常见的小型手持式设备上,由于硬件条件的限制,我们看到的用户界面都很简单。
不需要华丽的支持,在现在的手持电脑等设备上,我们已经看到了完整的图形用户界面支持,随着手持设备硬件环境的提高,估计嵌入式系统对轻量级GUI的需求越来越迫切。
另外一个需要轻量级图形用户界面系统支持的系统是工业实时控制系统。
这些系统建立在标准PC平台上,硬件条件很好,对实时要求高。
综上,图形用户界面在嵌入式系统或者实时系统中的地位将越来越重要,这些系统在要求图形用户界面满足用户需求的同时,还要具备:
轻型、占用资源少、高性能、高可靠性、可配置等特点。
第2章系统的开发技术与环境
一.开发技术及运行环境
1.系统采用的开发技术
根据自己四年所学的编程知识,对各种编程语言了解,并进行比较,结合自己的现有知识,采用基于Linux的Qt4进行GUI的开发。
参照嵌入式系统开发思想,在前台开发中主要依托基于C++的Qt4开发工具,争取开发一个操作方便,界面简单,易于管理的嵌入式GUI。
2.系统运行环境
硬件环境:
IntelCorei3处理器;500GB硬盘容量;2GB内存。
软件环境:
Linux操作系统;Qt4;
二.关键技术简介
1.系统开发平台Linux
嵌入式Linux是标准版Linux经过定制裁剪的结果,它体积小,适用于产品开发的特殊要求。
嵌入式Linux在市场上有一半左右的占有率,这与它的优点是分不开的,其优点有:
(1)广泛的硬件支持
Linux支持多种硬件平台,能运行在几乎所有常见的嵌入式微处理器上,另外,Linux的外设驱动程序也非常丰富,支持各种主流硬件设备和硬件技术。
(2)内核高度稳定,模块化
Linux内核高效和稳定已经在很多领域内得到了大量实用产品的验证,主要源于其精巧的内核设计。
Linux内核可分为进程调度、内存管理、进程通信、文件系统和设备管理五大部分,其模块化机制可以使用户随时加载或卸载内核的功能模块,便于裁剪的内核更加小巧,很适合嵌入式系统开发的应用。
(3)免费、开放代码
Linux的源代码免费、开放,任何人都可以从其官网下载各个版本源代码,这对于开发嵌入式系统至关重要。
(4)优秀的开发工具
嵌入式Linux提供了开发工具编译器gcc,调试工具gdb、kgdb、xgd等。
(5)完善的网络通信和文件管理机制
Linux下有着完善的网络模块,包括网络设备驱动和网络协议,很容易移植到嵌入式系统中。
此外,Linux还支持多种常见的文件系统,如ext2、ext3、yaffs、jffs、nfs、cramfs等,为嵌入式开发打下了良好的基础。
2系统开发工具QtE
Qt/Embedded(简称QtE)是一个专门为嵌入式系统设计图形用户界面的工具包。
Qt是挪威Trolltech软件公司的产品,它为各种系统提供图形用户界面的工具包,QtE就是Qt的嵌入式版本。
它提供了构建(qmake)、可视化设计(uic和qdesigner)、国际化(linguist)、文档系统(assistant)等一系列非常好用的工具。
尤其是文档系统,绝对可以称得上是出色。
QtE只要求一个较小的存储空间和内存。
可以运行在不同的处理器上部署的Linux系统。
并且其功能可裁剪。
QtE作为Linux下图像用户界面的强大工具,能给用户提供精美的图形用户界面所需要的所有元素,使用“一次编写,随处编译”的方式为开发跨平台的图形用户界面应用程序提供了一个完整的C++应用程序开发框架,并允许程序开发人员使用程序的单一源码树来构建可运行在不同平台下的应用程序的不同版本,已经得到了越来越广泛的应用,并且当前多数高端嵌入式设备生产商都选择了Qt作为开发工具。
高等优势,已经深入到各个领域,对各行各业的技术改造、产品更新换代、提高生产率等方面起了极其重要的作用。
相对于桌面系统,人机交互技术还处于初级阶段。
嵌入式系统的终端产品更加简洁、美观、好用。
人性化设计等方面较桌面系统还有巨大差距,因此越来越多的人投入到嵌入式GUI的开发当中。
第3章系统可行性以及需求分析
一.系统可行性分析
为了弄清楚系统开发的项目是否可以实现和值得进行研究的过程并简化系统分析和系统设计的过程,进行可行性分析是非常必要的,也是很重要的,本系统的可行性研究主要是参考已存在并正处于运行的类似系统和经过最初的设计目标及进行的市场调查分析为评价尺度,考虑其技术可行性、经济可行性和操作可行性。
1经济可行性
新世纪以来,社会得到很大程度上的发展,人民生活更加丰富多彩,尤其是随着各种手持设备在世界的各地的出现和普及。
冗余的图形界面已经无法满足发展的需求了,更多的手持设备要求尽量简单,美观,易操作的嵌入式GUI,为了适应手持设备发展的进程,嵌入式图形界面应运而生。
我所开发嵌入式图形界面系统能够实现基本的用户要求,操作简单方便,体积小,在经济上是可行的。
2技术可行性
本系统利用C++语言开发,它作为应用广泛的嵌入式开发的程序设计语言,不仅灵活易用,而且强大功能,同时还有兼容性强的语言特点。
系统使用Qt4作为开发工具,它是一个C++的专门的用于图形界面开发的工具,适用于各种规模的嵌入式GUI开发需求。
其中最常用的是tmake生成器,moc、uic界面编译器,designer界面设计器等。
它们为图形界面的设计与实现带来了很大的方便。
综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。
3操作可行性
本GUI在实现基本功能的基础上,设计的界面简单,容易理解,保证大多数的用户能够快速上手。
界面划分明朗,功能细化,用户简单易懂。
操作设计也尽量简单细化,减少不必要的操作。
因此,整个系统的使用非常简便,操作简单易懂,本系统在操作上也是可行的。
二需求分析
21世纪以来,随着经济高速发展,人们的生活发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域。
但是计算机的携带并不是很方便,于是各种便携式设备便应运而生,如平板电脑、手持式打印机、智能手机,数码相机等。
它们在很大程度上满足了人们的日常出行时对计算机的需求。
各种简单易携设备必须能实现计算机的基本功能,如文本编辑,图片浏览,音乐播放等。
这些都提出了对图形界面系统的要求。
简单地图形用户界面系统有其自己优点,除了能实现设备的基本的功能以外,还需要操作方便,资源占用小等,因此GUI已经成为嵌入式设备的重要的组成部分。
开发嵌入式GUI的好处有:
一是现在的便携式式设备普及率越来越高了。
二是人们对友好的人机交互界面的要求越来越高。
三是费用低,仅需要少量的成本。
四是没有地区限制,只要进行简单地修改便可以满足不同地域的需求。
因此,图形用户是一种具有交互功能的系统,它在嵌入式设备上搭建一个方便人与机器交流的虚拟平台。
1问题的提出
进入21世纪,Internet的飞速发展几乎超出了人们的想象,知识的更新步伐加快,大众对信息的需求日益增加。
传统计算机设备受到体积、大小等的限制,已经不能满足现代人们对于方便出行的需求。
如今便携式计算机设备的应运而生。
微型计算机是计算机的发展方向,使顾客和消费者随时随地都能通过手持设备实现计算机的基本功能,从而使出行更加方便。
而一个简单的GUI对于嵌入式设备能不能满足用户对于功能和审美的需求至关重要,所以,图形界面系统的开发成为嵌入式设备开发中的重要一环。
2系统的设计目标
通过对与课题有关资料的阅读和研究,该系统设计完成后能够实现5个主要的功能。
(1)输入输出模块:
实现对显示输出设备、用户输入设备(键盘、鼠标)的控制。
(2)图形设备接口模块:
基本的绘图函数:
点((Point)、线(Line)、矩形(Rectangle)。
(3)字体资源模块:
能灵活支持区域化的多语言字符集,提供挂接不同字符集的接口。
(4)图片资源模块:
支持当今大多数流行的通用图形格式,如BMP,JPEG,PNG等。
(5)高效的多窗口机制:
支持非全屏幕的可拖动窗体,不同窗口之间可相互覆盖。
(6)音乐播放模块:
支持mp3等音频格式文件的播放。
三.系统用例
用例图是通过一种简单图形来方式来描述系统的功能,可以让非计算机专业的人也能看懂的图形。
本系统的系统用例采用用例图的形式以小人表示用户,箭头表示怎么操作,椭圆表示事务处理。
用户的事务处理有打开、编辑、保存等。
本系统的用例图划分如图3-1所示。
图3-1系统用例图
第4章系统总体设计
一系统结构框架
一个嵌入式GUI有三个基本层次组成。
它们包括:
显示模型,窗口模型,用户模型。
其中用户模型包含了现实与交互的主要特征,因此图形用户界面这一专业术语也仅指用户模型。
图4-1给出了嵌入式GUI的层析结构。
桌面管理系统
用户模型
窗口模型
显示模型
操作系统
硬件平台
图4-1图形用户界面系统的层次结构
二系统模块设计
1.输入输出模块设计
GUI支持的外部设备多是针对输入输出设备。
输入设备一般包括鼠标、键盘等控制设备。
输出设备主要是显示屏等显示设备。
输入设备是图形用户界面系统的主要从操纵者,它将操作以信号的形式把输入设备产生的事件送入系统,操作系统再以槽的形式对信号进行接收,做出相应的反应。
2.图形设备接口模块设计
图形设备接口模块所实现的主要功能是支持与设备无关的图形操作,图形设备接口把上层应用与不同设备的特殊性隔离开来,使上层应用能够在任意一种图形的输出设备上运行。
三模块组成结构
概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定。
描述概念模型的有力工具是E-R模型。
设计好的E-R图,实体与属性之间并没有形式上的截然划分的界限,但可以给出两条准则供我们参考。
(1)作为“属性”,不能再具有需要描述的性质,“属性”必须是不可分的数据项,不能包含其他属性。
(2)“属性”不能与其他实体具有联系,即E-R图中所表示的联系是实体之间的联系。
四信号-槽机制
信号和槽机制是Qt碾成的基础。
他可以让应用程序编程人员把这些互相不了解的对象绑定在一起。
我们可以把信号与槽连接在一起,也能声明自己的信号与槽,并实现自己的槽和发射自己的信号。
槽和普通的C++成员函数几乎一样——可以使虚函数;也能被重载;还可以是共有的、保护的或者私有的,并且也可以被其他C++成员函数直接调用;还有,它们的参数可以是任意的类型。
唯一的不同时:
槽可以和信号连接在一起,在这种情况下,每当发射这个信号的时候,就会自动调用这个槽。
将信号与槽连接在一起的函数是connect()语句:
connect(sender,SIGNAL(signal),receive,SLOT(slot));
这里sender和receive是指向QObject的指针,signal和slot是不带参数的函数名。
实际上,SIBNAL()和SLOT()宏会把他们的参数转换成相应的字符串。
信号与槽的对应可以分为多种:
(1)一个信号可以连接多个槽。
(2)多个信号可以连接同一个槽。
(3)一个信号可以与另外一个信号相连接。
另外信号与槽的连接还可以被移除:
Disconnect(lcd,SIGNAL(overflow()),this,SLOT(handleMathError()));
值得注意的是信号与槽的连接要想成功,它们的参数必须具有相同的顺序和相同的类型。
五.通用对话框的设计与实现
Qt的设计初衷就是为了能够直观并且友好的将进行编码,并且对于程序员来说,纯粹的通过C++源代码开发整个Qt应用程序并不稀奇。
尽管如此,很多程序员还是会使用可视化的方法来设计窗体,因为使用可视化可以比手工纯代码编译更自然、更快速,并且也可以通过可视化方法,对手工编码所设计的窗体进行快捷、容易的测试与修改。
QtDesigner为程序员提供了可视化的设计选择,它提供可视化的设计能力,Qt设计师可以用于开发应用程序的所有或者部分窗体。
而QtDesigner所创建的窗体最终仍旧是C++代码,因此不会对编译器增加其他特殊要求。
利用Qt设计器创建对话框包括以下几个基本步骤:
(1)创建并初始化子窗口部件。
(2)吧子窗口部件放到布局之中。
(3)设置Tab键顺序。
(4)建立信号--槽连接。
(5)实现对话框中的自定义槽。
第5章系统模块设计及实现
一.系统流程分析
在需求分析,总体设计之后,该系统的基本框架已经定型,为了实现要求的需求,同时综合对系统的安全性,实用性及合理性各方面的考虑,根据系统工程的思想,本系统的流程图如图5-1所示。
图5-1系统流程图
二图形设备接口模块
1绘图工具的主界面
绘图工具要求通过对画笔的设计画出简单的图形,其主界面设计分别如图5-3所示。
图5-3绘图工具主界面
绘图工具的画笔的设计通过Painter方法,它继承自Toolbar库。
2保存绘图的对话框
当绘制好图片后,需要将图片进行保存,图5-4就是实现保存更能的对话框。
第6章系统测试
一系统测试概述
由于设计人员自身的局限性,无可避免的会在软件设计实施过程中产生各种错误,这就需要通过系统测试来把这些错误找出来,最终使系统达到一个将误差控制在可控制的范围。
而不同系统有不同的特性,需要我们用不同的测试方法和测试工具。
系统测试的目标是:
(1)测试是为了发现程序中的错误而执行程序的过程。
(2)好的测试方案使测试很可能发现尚未发现的错误。
(3)成功的测试是发现了尚未发现的错误的测试。
通常系统是由子系统和模块构成,一次系统测试需要一个一个子系统的测试,一个一个模块的测试。
系统测试一般分成几个过程,包括模块测试、集成测试、程序审查会和人工运行、确认测试、平行运行等,而且这些测试模块也需要交替的进行,才能确保测试的完整性和正确性。
在软件工程的思想指导下,做完初步的系统测试后,系统还要经过调试、验证和确认,才可以交付给用户使用。
二.系统测试过程出现的问题及解决办法
(1)文件保存格式错误。
不同的文件格式有不同的文件保存函数,不能一概而论,在做绘图的保存时和做文本的保存需用不同的函数。
(2)phonon错误。
在安装Qt是函数库安装不全,需要通过sudoapt-getinastallphonon安装phonon组件。
(3)播放器没有声音。
缺少库文件,需要安装,但是再安装可文件以后需要重新安装phonon组件。
因为所需库的安装会自动先卸载phonon组件,因此需要重新安装phonon组件。
(4)对话框不能显示汉语。
需要设置文字的国际化支持,在main.cpp文件中,需要添加QTextCodec:
:
setCodecForTr(QTextCodec:
:
codecForLocale());语句,但要注意需加在w.show();语句前面。
结论
本文围绕的项目是嵌入式终端设备应用软件的研究和图形用户界面系统的实现,使用嵌入式Ubuntu的Linux操作系统,并选择QtE作为图形用户界面系统的开发工具。
不仅讲解了嵌入式手持终端设备的应用软件开发的一般方法,并设计开发了一个基于QtE的图形用户界面系统。
本论文主要工作有:
(1)分析了嵌入式的发展历史、现状,并比较了在不同发展阶段嵌入式技术的进步,从而总结出了现代嵌入式的特点和发展前景及方向。
通过分析人机交互技术在嵌入式系统中的重要性,进而推断出图形界面系统---这一人机交互接口的重要作用,因此图形界面系统的研究的必要性。
(2)收集了目前流行的GUI系统的资料,分析并比较了现在流行的几种GUI设计方案和开发