基于qt的嵌入式终端应用程序开发——记事本和电子相册开发毕业设计(论文)(编辑修改稿)内容摘要:
9 USB、 CAN、 Bluetooth 或 IrDA通信接口,同时也需要提供相应的通信组网协议软件和物理层驱动软件。 为了支持应用软件的特定编程模式,如 Web 或无线 Web 编程模式,还需要相应的浏览器,如 HTML、 WML 等。 ( 3) 支持小型电子设备实现小尺寸、微功耗和低成本 为满足这种特性,要求嵌入式产品设计者相应降低处理器的性能,限制内存容量和复用接口芯片。 这就相应提高了对嵌入式软件设计技术要求。 如,选用最佳的编程模型和不断改进算法 (孙琼 ,20xx)。 ( 4) 提供精巧的多媒体人机界面 嵌入式设备之所以为亿万用户乐于接受,重要因素之一是它们与使用者之间的亲和力,自然的人机交互界面,如司机操纵高度自动化的汽车主要还是通过习惯的方向盘、脚踏板和操纵杆。 人们与信息终端交互要求以 GUI 屏幕为中心的多媒体界面。 手写文字输入、语音拨号上网,收发电子邮件以及彩色图形、图像已取得初步成效。 影响未来的若干软件新技术 ( 1) 日趋流行的行业性开放系统和备受青睐的自由软件技术 华中农业大学本科毕业论文(或设计) 8 为了对付日趋激烈的国际市场竞争势态,设计技术共享和软件重用 、构件兼容、维护方便和合作生产是增强行业性产品竞争能力的有效手段。 走行业开放系统道路是加快嵌入式软件技术发展的捷径之一。 国际上自由软件运动的顺利发展, GPL 概念正对嵌入式软件产业深远影响。 嵌入式 Linux 多种原型的提出,和GNU 软件开发工具软件的实用化进展,正为我国加快发展嵌入式软件技术提供了极好机遇和条件。 ( 2) 无线网络操作系统初见端倪 未来移动通信网络不仅能够提供丰富的多媒体数据业务,而且能够支持更多功能和更强的移终端设备。 为了有效地发挥第三代移动通信系统的优势,许多设备厂商针对未来移动设备的特点努力开发无 线网络操作系统 (M. Tim Jones, 20xx)。 ( 3) IP 构件库技术正在造就一个新兴的软件行业 嵌入式系统实现的最高形式是单一芯片系统 (SOC, System On Chip),而 SOC的核技术是 IP核 (即知识产权核 Intellectual Property Kernels)构件。 IP核有硬件核、软件核和固件核,硬件核主要指 8/16/32/64 位 MPU 核或 DSP 核。 硬件提供商以数据软件库的形式,将其久经验证的处理器逻辑和芯片版图数据,供 EDA 工具调用在芯片上直接配置 MPU/DSP 功能单元;而软件核则是软件 提供商将 SOC所需的 RTOS 内核软件或其它功能软件,如通信协议软件, FAX 功能软件等构件标准 API 方式和 IP 核构件形式供 IDE 和 EDA 工具调用制成 FLASH 或 ROM可执行代码单元,加速 SOC 嵌入式系统定制或开发。 目前一些嵌入式软件供应商纷纷把成熟的 RTOS内核和功能扩展件,以软件 IP核构件形式出售,如 Microtec的 VRTXoc for ARM 就是典型例子。 正在兴启的 IP 构件软件技术正为一大批高智小型软件公司提供发展机遇。 课题研究内容 针对嵌入式产品的高度个性化,其外观、与用户交互的界面千差万别的特点,故而系统的设计目标是意在打造一个能在嵌入式终端运行、通用的、可以方便的支持各种控件、各种图形格式,具有体积小、可裁剪、可移植的这样一个面向嵌入式的应用程序系统,使各种嵌入式设备也同样能具有美观的用户界面,相对比较丰富的功能,操作起来简单而又直观。 本文通过对嵌入式 Linux 和 Qt 的分析,在嵌入式 Qt 的基础上,开发了面向嵌入式终端的记事本和电子相册应用软件。 记事本不仅支持英文输入和显示,而且支持中文和日文的显示,还支持记事本文件的浏览、编辑、删除等功能。 电子相册不仅支持中、英、日文图片名字的显示,还支持如放大 、缩小、旋转等各种方式下的图片浏览。 它们体积小,移植方便,适用于掌上电脑、智能电话及一些高端的嵌入式设备中。 此外它作为一种小型 GUI 解决方案,可用于那些对 GUI华中农业大学本科毕业论文(或设计) 9 大小要求苛刻的各种应用系统中。 2 Linux 和 Qt 简介 Linux主要特性 Linux 是个和 Unix 相似、以 Unix 核心为基础、完全内存保护、多任务多进程的操作系统。 支持广发的计算机硬件,包括 X86, Alpha, Sparc, MIPS, PPC,ARM, NEC 等现有的大部分芯片。 程式源码全部公开,任何人可以修改并在 GNU通用公共许可证 (GNU General Public License)下发行(陈英和梁建武, 20xx) ,这样,开发人员可以对操作系统进行定制,再也不必担心像 MS windows 操作系统中 后门 的威胁。 同时由于有 GPL 的控制 ,大家开发的东西大都相互兼容,不会走向分裂之路。 Linux 用户遇到问题时可以通过 Inter 向网上成千上万的 Linux开发者请教 ,这使最困难的问题也有办法解决。 Linux 带有 Unix 用户熟悉的完善的开发工具,几乎所有的 Unix 系统的应用软件都已移植到了 Linux 上。 Linux还提供了强大的网络功能,有多种可选择窗口管理 器( X windows)。 其强大的语言编译器 gcc、 g++等也可以很容易得到。 不但成熟完善、而且使用方便,为嵌入操作系统提供了一个极有吸引力的选择。 Linux 已经被移植到多种硬件平台,这对受开销、时间限制的研究与开发项目是很有吸引力的。 原型可以在标准平台上开发然后移植到具体的硬件上,加快了软件与硬件的开发过程。 Linux 还有以下优点: ( 1) Linux 可以随意地配置,不需要任何的许可证或商家的合作关系。 ( 2) 它是免费的,源代码可以得到。 这是最吸引人的。 毫无疑问,这会节省大量的开发费用。 ( 3) 它本身内置网络支持。 ( 4) Linux 的高度模块化使添加部件非常容易。 ( 5) Linux 在台式机上的成功,使大家看到了 linux 在嵌入式系统中的辉煌前景。 嵌入式产品中选择什么样的操作系统极为重要,嵌入式 Linux 由于其开源特性、实时性好、可移植、内置网络支持等优点在嵌入式领域成为主力军。 如今,业界已经达成共识:即嵌入式 linux 是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商进入这一领域。 Qt 开发工具简介 Qt 主要特性 Qt 是一个跨平台的 C++图形用户界面库,由挪威 TrollTech 公司开发,目前华中农业大学本科毕业论文(或设计) 10 包括 Qt/X1基于 Framebuffer 的 Qt/Embedded、快速开发工具 Qt Designer 以及国际化工具 Qt Linguist 等。 人们所熟知的 Linux 下面的 KDE 环境就是基于 Qt开发而成的。 Qt 支持 Unix 和 Linux 系统以及 Windows 系统。 Qt 的主要特点有: 面向对象, 很容易扩展, 并且允许真正的组件编程; Qt 对各个模块进行了良好的封装,使各模块可重用性较好;优良的跨平台特性, 使用 Qt 类编写的程序可以实现 “一次编码,到处编译 ”,极大的降低了跨平台开发的难度(丁丁等, 20xx);构件支持, 对于对象间通信 , Qt 没有采用函数回调的方法,而是采用了一种全新并且可选的被称为 “信号与槽 ” 的对象间通信机制,通过一个对象信号的发射,另一个槽函数的响应,使各个对象之间的通信安全而且高效。 Qt 的这些特点使它非常适合于真正的构件编程, 同时使各个组件之间的协同工作变得十分简单,并且 Qt 是直接基于 Xlib 的,不依赖 Motif 工具包, 所以它的执行效率比一般的基于平台的代码的执行效率要高。 Qt 编程机制简介 ( 1) Qt 系统的信号与槽机制简介 信号 /槽机制是 Qt 的一个中心特征并且也许是 Qt 与其它工具包的最不相同的部分。 在图 形用户界面编程中,我们经常希望一个窗口部件的一个变化被通知给另一个窗口部件 (张娟,张雪兰 ,20xx)。 更一般地,我们希望任何一类的对象可以和其它对象进行通讯。 较老的工具包使用一种被称作回调的通讯方式来实现同一目的。 回调是指一个函数的指针,所以如果你希望一个处理函数通知你一些事件,你可以把另一个函数(回调)的指针传递给处理函数。 处理函数在适当的时候调用回调(倪继利,20xx)。 回调有两个主要缺点。 首先他们不是类型安全的。 我们从来都不能确定处理函数使用了正确的参数来调用回调。 因此容易造成进程崩溃,另外一个问题是,回调这种方式紧紧的绑定了图形用户接口的功能元素,因而很难把开发进行独立的分类。 Qt 的信号与槽机制是不同的。 Qt 的信号与槽均以函数形式出现, Qt 的窗口部件有很多预定义的信号,但我们也可以通过继承来加入我们自己的信号。 槽就是一个可以被调用处理特定信号的函数。 Qt 的窗口部件有很多预定义的槽,但是通常的习惯是你可以加入自己的槽,这样你就可以处理你所感兴趣的信号。 我们可以用 connect()函数对需要的信号和槽进行连接。 当对象的内部状态发生改变,信号就被发射。 从某种意义上讲,它们也许对外面的世界感兴趣。 这就是所有的对象通讯时所做的一切。 它不知道也不注意无论有没有东西接收它所发射的信号。 当一个信号被发射,它所连接的槽会被立即执行,就像一个普通函数调用一样(见图 1)。 信号 /槽机制完全不依赖于任何一种图形用户界面的事件回路。 当所有的槽都返回后发射的信号也将返回。 信号与插槽机制并不要求类之间互相华中农业大学本科毕业论文(或设计) 11 知道细节,这样就可以相对容易的开发出代码可高重用的类 (Matthias Dalheimer,20xx)。 信号和槽的机制是类型安全的:一个信号的签名必须与它的接收槽的签名相匹配。 (实际上一个槽的签名可以比它接收的信号的签名少,因 为它可以忽略额外的签名。 )因为签名是一致的,编译器就可以帮助我们检测类型不匹配。 它以警告的方式报告类型错误,而不会使系统产生崩溃。 信号和槽是宽松地联系在一起的:一个发射信号的类不用知道也不用注意哪个槽要接收这个信号 (Johan Thelin,20xx)。 Qt 的信号和槽的机制可以保证如果你把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。 信号和槽可以使用任何数量、任何类型的参数。 它们是完全类型安全的:不会再有回调核心转储 (core dump)。 你可以把许多信号和你所希望的单一槽相连,并且一 个信号也可以和你所期望的许多槽相连。 把一个信号和另一个信号直接相连也是可以的。 (这时,只要第一个信号被发射时,第二个信号立刻就被发射。 ) 总体来看,信号和槽构成了一个强有力的组件编程机制。 如果一个类要使用信号与槽机制,它就必须是从 QObject 或 QObject 的子类继承,而且类的定义必须加上 Q_OBJECT 宏。 signals、 slots 和 emit 是 Qt 特有的关键字,分别用来表示信号、槽、和发送信号,移除这些关键字和预处理程序,就可以使用标准的 C++编译器。 槽同其他函数一样也具有访问权限,只是槽的访问权限决 定了谁可以和它相连,如一个 public slots:包含了任何信号都可以相连的槽 (Andrew Krause,20xx)。 一个 protected slots:包含了只有这个类和它的子类的信号才能连接的槽。 这就是说这些槽只是类的实现的一部分,而不是它和外界的接口。 一个 private slots:包含了只有这个类本身的信号可以连接的槽,甚至它的子类都没有获得连接的权 利。 图 1 信号和槽的连接原理图 Fig. 1 Signal and slot connection scheme 华中农业大学本科毕业论文(或设计) 12 ( 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 宏没有被使用,那么这里的信号和槽以。基于qt的嵌入式终端应用程序开发——记事本和电子相册开发毕业设计(论文)(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。