毕业论文基于QT的嵌入式电子相册Word文档格式.docx
- 文档编号:21272213
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:31
- 大小:1.30MB
毕业论文基于QT的嵌入式电子相册Word文档格式.docx
《毕业论文基于QT的嵌入式电子相册Word文档格式.docx》由会员分享,可在线阅读,更多相关《毕业论文基于QT的嵌入式电子相册Word文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
2。
1linux主要特性
2.2QT开发工具简介
2.3ARM9简介
3嵌入式终端电子相册构架设计
3。
1电子相册构架设计
2电子相册界面设计
3电子相册结构设计
4算法设计和实现
4。
1电子相册类结构设计
2电子相册功能实现
5电子相册的移植
5.1
6总结和展望
参考文献
致谢
基于QT的嵌入式终端应用程序开发
-—电子相册开发
摘要
随着社会进步的越来越快,电子商品每天都日新月异,数码相机也越来越普及,我们可以更方便快捷地留下美好的瞬间。
但是随着相片的不断增加,使管理照片的难度也达到了一个新的高度为了让人们更有效地管理、随时随地只要有网络就能够快速查询到不同时间、不同地点所拍的照片,故而开发了这套电子相册统.另外这个电子相册还包括图片的放大缩小等其他功能,使对照片的管理更加方便。
嵌入式Linux;
Qt;
图形用户界面;
电子相册;
移植
Abstract
MoreandmoreembbededEmbeddedTerminalneedgraphicsuserinterface(GUI).AgoodHuman—ComputerInteractioninterfaceisthekeytechnologyofembeddedsystemdesign。
Higherdemandsofthepracticality,aestheticsandaudio-visualentertainmentofembeddedterminalareneeded,especiallyinembbededsystemhandhelddevice。
Notepadandelectronicphotoalbumarebecominganintegralpartofembeddeddevicefortheirpracicalityandgoodviewing。
Ithassomepracticalsignificanceandvaluetodevelopanotepadandanalbumwithbeautifulinterface,richfunctionsandgoodinteractionbasedonembeddedterminal。
文档为个人收集整理,来源于网络文档为个人收集整理,来源于网络
Theaimofthispaperistodesignandimplementanotepadandanalbumintheembededterminalenvironment。
ThispaperpresentedtheadvantageofLinuxandthebuildingofQTdevelopingenvironment,focusedontheprogrammingmechanismofdevelopingsoftwarewithQt.Itanalysedtheneedsofthedesign,designedthespecificinterfaceandoverallstructureofnotepadandalbumintheembededterminalenvironmentaccordingtofeaturesofembeddedapplication。
Thisprojectdesignedandimplementedtherelevantfunctionsofnorepad(suchasnewfile,openfile,editfileanddeletefile)aswellastherelevantfunctionsofalbum(suchasenlarge、minify、rotateandmovethepicture)basedonthealgorithmsofnotepadandalbum.Finally,briefdisscusionaboutthefurtherreaserchofthispaperwaspresented.本文为互联网收集,请勿用作商业用途个人收集整理,勿做商业用途
EmbeddedLinux;
Qt;
GUI;
notepad;
album;
explanted
前言
1.1课题研究背景和意义
随着嵌入式产品的发展,往往要求嵌入式操作系统有网络和图形的功能。
利用源代码开放的Linux搭建的嵌入式操作系统,由于强大的网络功能和低成本,近来得到了越来越多的应用。
其能够提供全功能的桌面计算,定制非常方便并且支持大多数嵌入式系统上使用的芯片,包括StrongARM,MIPS和PowerPC等。
在嵌入式Linux操作系统上使用一个功能完备的轻量级、高性能、高可靠、可配置的GUI系统成为可行的解决方案(丁丁,2004)。
虽然市场上现在已经有了众多的优秀的GUI应用软件,但随着近年来计算机技术的迅速发展,当新硬件、新技术出现时,计算机的体系结构、指令系统和操作系统都可能发生相应的改变,这势必会导致一部分应用软件在新环境下无法正常运行.如果舍弃原有软件而重新开发,将会耗费大量的人力和资金,而且浪费了许多成熟的软件成果。
而Qt在源代码级上实现了跨平台特性,极大的支持了跨平台通用软件的开发。
Qt可以用同一个源程序在不同平台上编译链接,生成目标代码,并取得相同的运行效果,称为“一次编写,随处编译"
,利用这种方法充分实现了程序的跨平台运行。
这种基于源代码的跨平台特性不仅解决了性能的问题,而且可以发挥各个平台的优势,充分利用每个平台自身的特点;
并且即可以在新环境下实现原有软件的功能和特点,减少开发费用,还可以改进原有软件的不足,增加新的需求,从而提高软件的质量,延长软件生命期.
因此,利用Linux下基于Qt的嵌入式终端应用程序开发是一个非常有意义的课题,具有重要的研究和商业价值.
1.2嵌入式软件技术发展现状与未来
1.2.1标志性的嵌入式产品已露头角
全过程自动化产品制造、大范围电子商务活动、高度协同科学实验以及现代化家庭起居,为嵌入式产品造就了崭新而巨大的商机。
除了沟通信息高速公路的交换机、路由器和Modem,构建CIMS所需的DCS和机器人以及规模较大的家用汽车电子系统。
最有量产效益和时代特征的嵌入式产品应数因特网上的信息家电(InternetAppliances),如Web可视电话、Web游戏机、WebPDA(俗称电子商务、商务通)、WAP电话手机、以及多媒体产品,如STB(电视机顶盒)、DVD播放机、电子阅读机。
1.2.2嵌入式软件技术面临挑战
以信息家电为代表的互联网时代嵌入式产品,不仅为嵌入式市场展现了美好前景,注入了新的生命;
同时也对嵌入式系统技术,特别是软件技术提出新的挑战。
这主要包括:
支持日趋增长的功能密度、灵活的网络联接、轻便的移动应用和多媒体的信息处理,此外,当然还需对付更加激烈的市场竞争.主要从以下几个方面体现出来:
(1)嵌入式应用软件的开发需要强大的开发工具和操作系统的支持
随着因特网技术的成熟、带宽的提高,ICP和ASP在网上提供的信息内容日趋丰富、应用项目多种多样。
像电话手机、电话座机及电冰箱、微波炉等嵌入式电子设备的功能不再单一,电气结构也更为复杂。
为了满足应用功能的升级,设计师们一方面采用更强大的嵌入式处理器如32位、64位RISC芯片或信号处理器DSP增强处理能力;
同时还采用实时多任务编程技术和交叉开发工具技术来控制功能复杂性,简化应用程序设计、保障软件质量和缩短开发周期。
(2)联网成为必然趋势
为适应嵌入式分布处理结构和应用上网需求,面向21世纪的嵌入式系统要求配备标准的一种或多种网络通信接口。
针对外部联网要求,嵌入设备必需配有通信接口,相应需要TCP/IP协议簇软件支持;
由于家用电器相互关联(如防盗报警,灯光能源控制,影视设备和信息终端交换信息)及实验现场仪器的协调工作等要求,新一代嵌入式设备还需具备IEEE1394、USB、CAN、Bluetooth或IrDA通信接口,同时也需要提供相应的通信组网协议软件和物理层驱动软件。
为了支持应用软件的特定编程模式,如Web或无线Web编程模式,还需要相应的浏览器,如HTML、WML等。
(3)支持小型电子设备实现小尺寸、微功耗和低成本
为满足这种特性,要求嵌入式产品设计者相应降低处理器的性能,限制内存容量和复用接口芯片.这就相应提高了对嵌入式软件设计技术要求。
如,选用最佳的编程模型和不断改进算法(孙琼,2004).
(4)提供精巧的多媒体人机界面
嵌入式设备之所以为亿万用户乐于接受,重要因素之一是它们与使用者之间的亲和力,自然的人机交互界面,如司机操纵高度自动化的汽车主要还是通过习惯的方向盘、脚踏板和操纵杆。
人们与信息终端交互要求以GUI屏幕为中心的多媒体界面。
手写文字输入、语音拨号上网,收发电子邮件以及彩色图形、图像已取得初步成效。
1.2.3影响未来的若干软件新技术
(1)日趋流行的行业性开放系统和备受青睐的自由软件技术
为了对付日趋激烈的国际市场竞争势态,设计技术共享和软件重用、构件兼容、维护方便和合作生产是增强行业性产品竞争能力的有效手段.走行业开放系统道路是加快嵌入式软件技术发展的捷径之一。
国际上自由软件运动的顺利发展,GPL概念正对嵌入式软件产业深远影响。
嵌入式Linux多种原型的提出,和GNU软件开发工具软件的实用化进展,正为我国加快发展嵌入式软件技术提供了极好机遇和条件。
(2)无线网络操作系统初见端倪
未来移动通信网络不仅能够提供丰富的多媒体数据业务,而且能够支持更多功能和更强的移终端设备。
为了有效地发挥第三代移动通信系统的优势,许多设备厂商针对未来移动设备的特点努力开发无线网络操作系统(M.TimJones,2008)。
(3)IP构件库技术正在造就一个新兴的软件行业
嵌入式系统实现的最高形式是单一芯片系统(SOC,SystemOnChip),而SOC的核技术是IP核(即知识产权核IntellectualPropertyKernels)构件。
IP核有硬件核、软件核和固件核,硬件核主要指8/16/32/64位MPU核或DSP核。
硬件提供商以数据软件库的形式,将其久经验证的处理器逻辑和芯片版图数据,供EDA工具调用在芯片上直接配置MPU/DSP功能单元;
而软件核则是软件提供商将SOC所需的RTOS内核软件或其它功能软件,如通信协议软件,FAX功能软件等构件标准API方式和IP核构件形式供IDE和EDA工具调用制成FLASH或ROM可执行代码单元,加速SOC嵌入式系统定制或开发。
目前一些嵌入式软件供应商纷纷把成熟的RTOS内核和功能扩展件,以软件IP核构件形式出售,如Microtec的VRTXocforARM就是典型例子.正在兴启的IP构件软件技术正为一大批高智小型软件公司提供发展机遇。
1.3课题研究内容
针对嵌入式产品的高度个性化,其外观、与用户交互的界面千差万别的特点,故而系统的设计目标是意在打造一个能在嵌入式终端运行、通用的、可以方便的支持各种控件、各种图形格式,具有体积小、可裁剪、可移植的这样一个面向嵌入式的应用程序系统,使各种嵌入式设备也同样能具有美观的用户界面,相对比较丰富的功能,操作起来简单而又直观。
本文通过对嵌入式Linux和Qt的分析,在嵌入式Qt的基础上,开发了面向嵌入式终端的电子相册应用软件。
记事本不仅支持英文输入和显示,而且支持中文和日文的显示,还支持记事本文件的浏览、编辑、删除等功能。
电子相册不仅支持中、英、日文图片名字的显示,还支持如放大、缩小、旋转等各种方式下的图片浏览。
它们体积小,移植方便,适用于掌上电脑、智能电话及一些高端的嵌入式设备中。
此外它作为一种小型GUI解决方案,可用于那些对GUI大小要求苛刻的各种应用系统中.
1Linux和Qt简介
2.1Linux主要特性
Linux是个和Unix相似、以Unix核心为基础、完全内存保护、多任务多进程的操作系统。
支持广发的计算机硬件,包括X86,Alpha,Sparc,MIPS,PPC,ARM,NEC等现有的大部分芯片。
程式源码全部公开,任何人可以修改并在GNU通用公共许可证(GNUGeneralPublicLicense)下发行(陈英和梁建武,2008),这样,开发人员可以对操作系统进行定制,再也不必担心像MSwindows操作系统中”后门”的威胁。
同时由于有GPL的控制,大家开发的东西大都相互兼容,不会走向分裂之路。
Linux用户遇到问题时可以通过Internet向网上成千上万的Linux开发者请教,这使最困难的问题也有办法解决。
Linux带有Unix用户熟悉的完善的开发工具,几乎所有的Unix系统的应用软件都已移植到了Linux上。
Linux还提供了强大的网络功能,有多种可选择窗口管理器(Xwindows).其强大的语言编译器gcc、g++等也可以很容易得到。
不但成熟完善、而且使用方便,为嵌入操作系统提供了一个极有吸引力的选择.
Linux已经被移植到多种硬件平台,这对受开销、时间限制的研究与开发项目是很有吸引力的。
原型可以在标准平台上开发然后移植到具体的硬件上,加快了软件与硬件的开发过程.
Linux还有以下优点:
(1)Linux可以随意地配置,不需要任何的许可证或商家的合作关系.
(2)它是免费的,源代码可以得到。
这是最吸引人的。
毫无疑问,这会节省大量的开发费用。
(3)它本身内置网络支持。
(4)Linux的高度模块化使添加部件非常容易。
(5)Linux在台式机上的成功,使大家看到了linux在嵌入式系统中的辉煌前景。
嵌入式产品中选择什么样的操作系统极为重要,嵌入式Linux由于其开源特性、实时性好、可移植、内置网络支持等优点在嵌入式领域成为主力军。
如今,业界已经达成共识:
即嵌入式linux是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商进入这一领域.
2.2Qt开发工具简介
2.2.1Qt主要特性
Qt是一个跨平台的C++图形用户界面库,由挪威TrollTech公司开发,目前包括Qt/X11、基于Framebuffer的Qt/Embedded、快速开发工具QtDesigner以及国际化工具QtLinguist等.人们所熟知的Linux下面的KDE环境就是基于Qt开发而成的。
Qt支持Unix和Linux系统以及Windows系统。
Qt的主要特点有:
面向对象,很容易扩展,并且允许真正的组件编程;
Qt对各个模块进行了良好的封装,使各模块可重用性较好;
优良的跨平台特性,使用Qt类编写的程序可以实现“一次编码,到处编译”,极大的降低了跨平台开发的难度(丁丁等,2004);
构件支持,对于对象间通信,Qt没有采用函数回调的方法,而是采用了一种全新并且可选的被称为“信号与槽"
的对象间通信机制,通过一个对象信号的发射,另一个槽函数的响应,使各个对象之间的通信安全而且高效.Qt的这些特点使它非常适合于真正的构件编程,同时使各个组件之间的协同工作变得十分简单,并且Qt是直接基于Xlib的,不依赖Motif工具包,所以它的执行效率比一般的基于平台的代码的执行效率要高。
2.2.2Qt编程机制简介
(1)Qt系统的信号与槽机制简介
信号/槽机制是Qt的一个中心特征并且也许是Qt与其它工具包的最不相同的部分。
在图形用户界面编程中,我们经常希望一个窗口部件的一个变化被通知给另一个窗口部件(张娟,张雪兰,2007).更一般地,我们希望任何一类的对象可以和其它对象进行通讯。
较老的工具包使用一种被称作回调的通讯方式来实现同一目的。
回调是指一个函数的指针,所以如果你希望一个处理函数通知你一些事件,你可以把另一个函数(回调)的指针传递给处理函数。
处理函数在适当的时候调用回调(倪继利,2006)。
回调有两个主要缺点。
首先他们不是类型安全的。
我们从来都不能确定处理函数使用了正确的参数来调用回调。
因此容易造成进程崩溃,另外一个问题是,回调这种方式紧紧的绑定了图形用户接口的功能元素,因而很难把开发进行独立的分类.
Qt的信号与槽机制是不同的。
Qt的信号与槽均以函数形式出现,Qt的窗口部件有很多预定义的信号,但我们也可以通过继承来加入我们自己的信号.槽就是一个可以被调用处理特定信号的函数。
Qt的窗口部件有很多预定义的槽,但是通常的习惯是你可以加入自己的槽,这样你就可以处理你所感兴趣的信号.我们可以用connect()函数对需要的信号和槽进行连接。
当对象的内部状态发生改变,信号就被发射。
从某种意义上讲,它们也许对外面的世界感兴趣。
这就是所有的对象通讯时所做的一切。
它不知道也不注意无论有没有东西接收它所发射的信号。
当一个信号被发射,它所连接的槽会被立即执行,就像一个普通函数调用一样(见图1)。
信号/槽机制完全不依赖于任何一种图形用户界面的事件回路.当所有的槽都返回后发射的信号也将返回.信号与插槽机制并不要求类之间互相知道细节,这样就可以相对容易的开发出代码可高重用的类(MatthiasDalheimer,2002)。
信号和槽的机制是类型安全的:
一个信号的签名必须与它的接收槽的签名相匹配.(实际上一个槽的签名可以比它接收的信号的签名少,因为它可以忽略额外的签名。
)因为签名是一致的,编译器就可以帮助我们检测类型不匹配。
它以警告的方式报告类型错误,而不会使系统产生崩溃.信号和槽是宽松地联系在一起的:
一个发射信号的类不用知道也不用注意哪个槽要接收这个信号(JohanThelin,2007).Qt的信号和槽的机制可以保证如果你把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。
信号和槽可以使用任何数量、任何类型的参数。
它们是完全类型安全的:
不会再有回调核心转储(coredump)。
你可以把许多信号和你所希望的单一槽相连,并且一个信号也可以和你所期望的许多槽相连。
把一个信号和另一个信号直接相连也是可以的.(这时,只要第一个信号被发射时,第二个信号立刻就被发射。
)
总体来看,信号和槽构成了一个强有力的组件编程机制。
如果一个类要使用信号与槽机制,它就必须是从QObject或QObject的子类继承,而且类的定义必须加上Q_OBJECT宏。
signals、slots和emit是Qt特有的关键字,分别用来表示信号、槽、和发送信号,移除这些关键字和预处理程序,就可以使用标准的C++编译器。
槽同其他函数一样也具有访问权限,只是槽的访问权限决定了谁可以和它相连,如一个publicslots:
包含了任何信号都可以相连的槽(AndrewKrause,2007)。
一个protectedslots:
包含了只有这个类和它的子类的信号才能连接的槽。
这就是说这些槽只是类的实现的一部分,而不是它和外界的接口。
一个privateslots:
包含了只有这个类本身的信号可以连接的槽,甚至它的子类都没有获得连接的权利。
图1信号和槽的连接原理图
Fig.1Signalandslotconnectionscheme
(2)Qt元对象系统
Qt中的元对象系统是用来处理对象间通讯的信号/槽机制、运行时的类型信息和动态属性系统。
它基于下列三类:
QObject类、类声明中的私有段中的Q_OBJECT宏、元对象编译器(moc)。
moc读取C++源文件。
如果它发现其中包含一个或多个类的声明中含有Q_OBJECT宏,它就会给含有Q_OBJECT宏的类生成另一个含有元对象代码的C++源文件。
这个生成的源文件可以被类的源文件包含(#include)到或者和这个类的实现一起编译和连接。
除了提供对象间通讯的信号和槽机制之外(介绍这个系统的主要原因),QObject中的元对象代码实现其它特征:
(1)className()函数在运行的时候以字符串返回类的名称,不需要C++编译器中的本地运行类型信息(RTTI)的支持.
(2)inherits()函数返回这个对象是否是一个继承于QObject继承树中一个特定类的类的实例。
(3)tr()和trUtf8()两个函数是用于国际化中的字符串翻译.
(4)setProperty()函数和property()函数,这两个函数是用来通过名称动态设置和获得对象属性的。
(5)metaObject()函数返回这个类所关联的元对象.
虽然使用QObject作为一个基类而不使用Q_OBJECT宏和元对象代码是可以的,但是如果Q_OBJECT宏没有被使用,那么这里的信号和槽以及其它特征描述都不会被提供。
根据元对象系统的观点,一个没有元代码的QObject的子类和它含有元对象代码的最近的祖先相同。
举例来说就是,className()将不会返回你的类的实际名称,返回的是它的这个祖先的名称。
故强烈建议QObject的所有子类使用Q_OBJECT宏,而不管它们是否实际使用了信号、槽和属性(JonathanCorbet,2005).
2嵌入式终端应用程序之电子相册架构设计
目前市场上嵌入式手持设备,320*240的解析度基本满足了人们对显示画面大小及图像清晰度的要求,逐渐占领了市场主流。
故电子相册界面大小设定320*240,并且电子相册均支持键盘控制操作和点击(PC机上鼠标点击,嵌入式设备的触摸屏点击)控制操作。
特色是界面语言支持中文、英文、日文三种语言的显示。
3.1记事本架构设计
3.1.1记事本设计需求
记事本可以将目录下的记事本文件以文件名列表的形式显示出来,并可以实现记事本文件的新建、打开、编辑和删除等功能;
记事本可以根据文件内容的多少来实现文本的滚动显示,并可以通过软键盘对文本进行编辑等.
(1)文件列表功能:
记事本的文件列表用于显示记事本文件名,并且当记事本文件名过长时进行文件名长度显示的控制。
当文件数目多于当前界面显示范围,则出现上下方向的滚动条,可以向上或向下滚动显示文件名。
(2)文件名选中显示功能:
在文件列表上被选中的文件名高亮显示。
(3)新建文件功能:
新建记事本文件时,提示输入文件名,如果没有输入文件名而选择直接进入文件编辑界面,系统则提供默认的文件名用于存储文件。
编辑新建文件时,文件名在编辑界面上方显示。
(4)控制文本编辑格式功能:
编辑文件时,文本内容输入到当前界面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业论文 基于 QT 嵌入式 电子相册