ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:134.80KB ,
资源ID:8721542      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8721542.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(完整版数字城市查询系统嵌入式linux下的GUI编程毕业设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

完整版数字城市查询系统嵌入式linux下的GUI编程毕业设计.docx

1、完整版数字城市查询系统嵌入式linux下的GUI编程毕业设计数字城市查询系统嵌入式linux下的GUI编程摘要 本设计以EmbestS3CEB2410(ARM9)开发板为硬件底层,在Linux操作系统平台的基础上,利用开源Qt图形用户应用程序框架,基于SQLite数据库,开发出软硬件一体化的便携式嵌入式电子地图,功能包括数字建筑物的查询,以及相关公交系统查询的地图信息查询系统。本系统具有可扩展性好,实用性强、可移动的特点,易于移植到不同的硬件平台和其他操作系统软件环境关键词:S3CEB2410 , SQLite , Qt ,Linux , Map , EmbeddedDigital City

2、for System DesignEmbedded linux under the GUI ProgrammingABSTRACT1) This design using the EmbestS3CEB2410(ARM 9) development board as bottom of the basis of the Linux operating system platform ,and it also using open source OT graphical user application framework ,basing on SQLite database,developed

3、 portable embedded electronic map which is the integration of unit),非常适合嵌入式应用中对存储器进行分段和保护;2) 采用AMBA AHB总线接口,为外设提供统一的地址和数据总线;3) 支持外部协处理器,指令和数据总线有简单的握手信令支持;4) 支持标准基本逻辑单元扫描测试方法学,而且支持BIST(built-in-self-test);5) 支持嵌入式跟踪宏单元,支持实时跟踪指令和数据。ARM9系列微处理器的主要应用领域为:无线网络设备、PDA功能、移动电话等多种多媒体和嵌入式应用.ARM9系列微处理器包括如下几种类型的核:

4、ARM9TDMI,ARM920T,ARM940T,ARM9E-S。1.1.1 嵌入式数据库什么是嵌入式数据库通常我们采用数据库来实现对数据的存储检索等功能,像MySQL这类基于CS结构的关系型数据库系统虽然代表着目前数据库应用的主流,却并不能满足所有应用场合的需要。很多的应用仅仅利用到了这些数据库产品的基本特性而已。有时我们需要的可能只是一个简单的基于磁盘文件的数据库系统。这样就不必安装庞大的数据库服务器以简化数据库应用程序的设计,在某些特殊应用场合,比如在嵌入式系统中,由于系统的硬件软件资源都有限,这些数据库产品就明显有一些臃肿甚至是不可实现的。在这些情况下嵌入式数据库的优势就特别明显了。嵌

5、入式数据库的名称来自其独特的运行模式。这种数据库嵌入到了应用程序进程中,消除了与客户机服务器配置相关的开销。嵌入式数据库实际上是轻量级的,在运行时,它们需要较少的内存。它们是使用精简代码编写的,对于嵌入式设备,其速度更快,效果更理想。嵌入式运行模式允许嵌入式数据库通过 SQL 来轻松管理应用程序数据,而不依靠原始的文本文件。典型嵌入式数据库比较目前,基于嵌入式数据库应用的市场需求已经进入加速发展的阶段,适用于嵌入式开发的嵌入式数据库主要有mSQL、Berkeley DB、SQLite等。 (1) Berkeley DBBerkeley DB是一个开放源代码的嵌入式数据库管理系统,为许多编程语言

6、提供了实用的API接口,包括C、C+、Java、Perl、Tcl、Python和 PHP等。它通过调用这些API来完成对数据的保存、查询、修改和删除等操作,能够用来管理多达256TB的数据,并且在许多方面的性能还能够同商业级的 数据库系统相抗衡。Berkeley DB能够很轻松地应付几千个用户同时访问同一个数据库的情况。 另外,由于其应用程序和数据库管理系统运行在相同的进程空间当中,进行数据操作时可以避免繁琐的进程间通信,因此耗费在通信上的开销自然也就降低到了极低 程度。但是Berkeley DB不是关系型的数据库,不能应用标准的SQL语句对数据库操作,缺少灵活性,而且学习起来有一定难度,必然

7、会加大开发成本。(2) mSQLmSQL是一种简化的SQL数据库,体系结构小巧,占用系统资源少,特别适合在嵌入式Linux系统中使用。同时,mSQL提供专门的API函数,使得用C语言编写的CGI程序可以与mSQL的数据库引擎进行通信。但它只有30天的使用期限,并非完全的开源。(3) SQLiteSQLite 是 D. Richard Hipp 用 C 语言编写的开源嵌入式数据库,是同类产品中的后起之秀,2005年获得了开源大奖。SQLite可以在所有主要的操作系统上运行,并且支持大多数计算机语 言。SQLite 还非常健壮。其创建者保守地估计 SQLite 可以处理每天负担多达 100,00

8、次点击率的 Web 站点,并且 SQLite 有时候可以处理 10 倍于上述数字的负载。SQLite采用单文件存放数据库,速度又比 MySQL 快上 12 倍,存储量也不是问题,在操作语句上更类似关系型数据库的使用,使用操作非常方便。其主要的特点:1. 支持多数 SQL92 标准2. ACID事务支持,甚至在数据库崩溃和恢复时也支持3. 零配置无需安装和管理4. 整个数据库存储在单个文件中5. 支持数据库大小至2TB6. 足够小,大致3万行C代码,250K二进制目标代码7. 大部分普通数据库操比一些流行的数据库还要快8. 提供简单、易用、多种语言的API9. 完全独立的,不具有外部依赖性10.

9、 作为一款嵌入式数据库,SQLite与Berkely DB一样,以库的形式提供,通过C函数直接操作数据库文件(也支持其他的访问方式,比如Tcl)SQLite不是Server,所以和SQLServer等不同,它和程序运行在同一进程,中间没有进程间通信,速度很快,而且体积小巧,易于分发,非常适合运行在单机环境和嵌入式环境。与Berkely DB相比, SQLite功能虽较Berkeley DB略有逊色,但在开源组织的推动下差距正在缩小。实际上,很多情况,特别是在嵌入式系统应用中,并不需要存储过程或复杂的表之间的关联,这时会发现 SQLite在大小和功能之间找到了一个理想的平衡点。其次SQLite是

10、关系型数据库,支持大部分SQL语句,这是它比Berkely DB优秀的地方。体积也比BDB小一倍。更重要的是,SQLiate允许自由地用于任何目的甚至包括商业应用,故能大大降低开发成本。因此本项目嵌入式数 据库将采用SQLite。1.1.2 嵌入式操作系统1.1.2.1 什么是嵌入式系统近年来随着微电子技术的迅速发展,实际应用领域产生了很大变化,各种各样的应用于工业设备、电子产品中专用的计算机大量涌现。这种计算机隐藏在各种产品和系统中,嵌入式计算机由此而得名。嵌入式计算机系统正式定义为以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。嵌

11、入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统和应用软件等组成。 嵌入式系统是面向用户、面向产品、面向应用的,是针对具体应用的专用系统。它的硬件和软件都必须高效率地设计、量体裁衣去除冗余、力争在同样的硅片面积上实现更高的性能。1.1.2.2 经典嵌入式系统的比较嵌入式操作系统EOS(Embedded Operating System)是一种用途广泛的系统软件, EOS负责嵌入系统的全部软、硬件资源的分配、调度作业,控制、协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。以下对比了几种最常用的嵌入式操作系统。1. Windows CEWindows

12、CE是微软开发的一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作。它是精简的Windows 95。Windows CE的图形用户界面相当出色。它的设计目标是:模块化及可伸缩性、实时性能好,通信能力强大,支持多种CPU。它不仅继承了传统的Windows图形界面,并且在Windows CE平台上可以使用Windows 9598上的编程工具(如Visual Basic、Visual C+等)、使用同样的函数、使用同样的界面网格,使绝大多数的应用软件只需简单的修改和移植就可以在Windows CE平台上继续使用。2. Palm OS这是一种32位的嵌入式操作系统,主要运用于移

13、动终端上。此系统最初由3Com公司的Palm Computing部开发,目前Palm Computing已经独立成一家公司。Palm OS与同步软件HotSync结合可以使移动终端与电脑上的信息实现同步,把台式机的功能扩展到了移动设备上。它更倾向于PDA的操作系统,在PDA市场占有主导地位。在编写程序时,Palm OS充分考虑了掌上电脑内存相对较小的情况,因此它只占有非常小的内存。由于基于Palm OS编写的应用程序占用的空间也非常小(通常只有几十KB),所以,基于Palm OS的掌上电脑(虽然只有几MB的RAM)可以运行众多应用程序。3. LinuxLinux是一个类似于Unix的操作系统。

14、它起源于芬兰一个名为Linus Torvalds的业余爱好,但是现在已经是最为流行的一款开放源代码的操作系统。Linux从1991年问世到现在,短短10年的时间内已发展成为一个功能强大、设计完善的操作系统,伴随网络技术进步而发展起来的Linux OS已成为Microsoft公司的DOS和Windows 9598的强劲对手。Linux系统不仅能够运行于PC平台,还在嵌入式系统方面大放光芒,在各种嵌入式Linux OS迅速发展的状况下,Linux OS逐渐形成了可与Windows CE等EOS进行抗衡的局面。目前正在开发的嵌入式系统中,49%的项目选择Linux作为嵌入式操作系统。Linux现已成

15、为嵌入式操作的理想选择。嵌入式Linux 操作系统与Windows CE相比的优点:第一,Linux是开放源代码的,不在存黑箱技术,遍布全球的众多Linux爱好者都是Linux开发者的强大技术支持者;而Windows CE是非开放性OS,使第三方很难实现产品定制。第二,Linux的源代码随处可得,注释丰富,文档齐全,易于解决各种问题。第三,Linux的内核小、效率高;而Windows CE在这方面是笨拙的,占用过多的RAM,应用程序庞大。第四,Linux是开放源代码的OS,在价格上极具竞争力,适合中国国情。Windows CE的版权费用是厂家不得不考虑的因素。第五,Linux不仅支持x86芯片

16、,还是一个跨平台的系统,移植容易实现。第六,Linux内核的结构在网络方面是非常完整的,它提供了对包括十兆位、百兆位及千兆位的以太网络,还有无线网络、Token ring(令牌环)和光纤甚至卫星的支持。第七,Linux的内核结构是高度可裁减的,Windows CE在内核结构的设计中并未考虑适应系统的高度可裁减性的要求。Palm OS、Windows CE、Linux这三种嵌入式操作系统各有不同的特点,不同的用途;但Linux比Palm OS和Windows CE更小、更稳定,而且Linux是开放的OS,在价格上极具竞争力。当然嵌入式linux操作系统也有其明显不足的地方:第一,是开发难度较高,

17、需要很高的技术实力;第二,是核心调试工具不全,调试不太方便,尚没有很好的用户图形界面。1.1.3 Qt开发语言Qt是一个多平台的C+图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。Qt也是流行的Linux桌面环境KDE 的基础,KDE是所有主要的Linux发行版的一个标准组件。Qt 支持所有 Unix 系统,当然也包括 Linux,还支持 Windows 平台。支持下述平台: MSWindows - 95、9

18、8、NT 4.0、ME、和2000 UnixX11 - Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX和其它很多X11平台 Macintosh - Mac OS X Embedded - 有帧缓冲(framebuffer)支持的Linux平台。Qt具有下列优点:1. 优良的跨平台特性:Qt支持下列操作系统: Microsoft Windows 9598, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF1, Tru64), Irix,

19、FreeBSD, BSDOS, SCO, AIX, OS390,QNX 等等。 2. 面向对象 Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的。 Qt 提供了一种称为 signalsslots 的安全类型来替代 callback,这使得各个元件 之间的协同工作变得十分简单。 3. 丰富的 API Qt 包括多达 250 个以上的 C+ 类,还替供基于模板的 collections, serialization, file, IO device, directory management, datetime 类。甚至还包括正则表达式的处理 功能。

20、4. 支持 2D3D 图形渲染,支持 OpenGL5. 大量的开发文档6. XML 支持Qt把下面这些特性添加到了C+当中: 一种关于无缝对象通讯被称为信号和槽的非常强大的机制, 可查询和可设计的属性, 强大的事件和事件过滤器, 根据上下文进行国际化的字符串翻译, 完善的时间间隔驱动的计时器使得在一个事件驱动的图形界面程序中很好地集成许多任务成为可能。 以一种自然的方式组织对象所有权的分层次和可查询的对象树。 被守护的指针,QGuardedPtr,当参考对象被破坏时,可以自动地设置为无效,不像正常的C+指针在它们的对象被破坏的时候变成了“摇摆指针”。Qt的授权是分为两条线,商业版和开源版。如果

21、使用商业版的Qt,那么开发出的程序可以是私有的和商业的;如果使用的是开源版的Qt,由于其使用的是GPL协议(不是LGPL),那么可发出的程序也必须是GPL的。Qt自由版是Qt仅仅为了开发自由和开放源码软件提供的UnixX11版本。在Q公共许可证和GNU通用公共许可证下,它是免费的。Qt嵌入式自由版是Qt为了开发自由软件提供的嵌入式版本。在GNU通用公共许可证下,它是免费的。Qt-embedded和Qtopia:Qt 在刚出现的时候,对于Linux和Unix系统,只有构建于Xlib之上的X11版。但随着Linux操作系统在嵌入式领域的应用日渐广泛,Qt推出了嵌 入式的版本Qt-embedded(

22、Qte)。由于嵌入式受限的硬件环境往往难以运行庞大的X服务器,Qt的嵌入式版跳过了Xlib和XServer直接 操作帧缓冲,可以在速度和体积上有很大的提高。Qtopia最初是上的一个开源项目,全称是Qt Palmtop Environment,是构建于Qte之上一个类似桌面系统的应用环境,包括了PDA和手机等掌上系统常见的功能如电话簿、日程表等。现在Qtopia 已经成为了Trolltech的又一个主打产品,为基于Linux操作系统的PDA和手机提供了一个完整的图形环境。值得特别注意的是 Qte和Qtopia之间的关系。在版本4之前,Qte和Qtopia是不同的两套程序,Qte是基础类库,Qt

23、opia是构建于Qte之上的一系列应用 程序。但从版本4开始,Trolltech将Qte并入了Qtopia,并推出了新的Qtopia4。在该版中,原来的Qte被称为Qtopia Core,作为嵌入式版本的核心,既可以与Qtopia配合,也可以独立使用。原来的Qtopia则被分成几层,核心的应用框架和插件系统被称为 Qtopia Platform,上层的应用程序则按照不同的目标用户分为不同的包,如Qtopai PDA,Qtopia Phone。1.2 定义界面:直接和用户交互的软件结构。内核:完成核心功能的,与界面无关的软件结构。硬件:嵌入式系统中各种设备的总称。嵌入式系统:根据IEEE(国际电

24、机工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”(原文为devices used to control, monitor, or assist the operation of equipment, machinery or plants)。国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。Qt:Qt是一个多平台的C+图形用户界面应用程序框架。SQLite :SQLite 是 D. Richard Hipp 用 C 语言编写的开源嵌入式数据库。2 系统需求分析2.

25、1 功能需求1. 建筑定位: 地图上标示广州主要建筑的位置,实现主要建筑搜索功能,显示与建筑相关信息(简介、历史、用途;所在区、街道、公交地铁情况),显示附近主要建筑情况(包括附近银行、停车场)。2. 交通定位(公交;客运站;码头;地铁;火车站): 公交:查询各路车的行车路线,同时显示行车路线的站点。点击站点,能在地图上标出该站点的位置,并显示该站点的附近建筑情况;地铁:地铁经过的各路线,地铁各出口,附近建筑。客运站:显示该客运到省内外的线路;码头:显示航班信息;火车站:显示该火车站到省内外的线路。3. 道路定位: 在地图上标示出该道路。4. 酒店餐饮定位: 地图上标示酒店店餐的位置,显示附近

26、主要建筑情况,提供该目标的联系方式、服务性质等信息。5. 二级地图的显示: 校园、公园等都有相关建筑分布地图,系统能显示其相关建筑分布地图,即二级地图。6. 地图的缩放: 放大和缩小地图。7. 声音提示功能: 能报读出查询的主要建筑的名称。8. 计算查询所需时间: 显示一次查询所用的时间。2.2 开发环境2.2.1 硬件平台pc机 CPU inter P3赛扬1G 内存 128+64M pc机 CPU Athlon3000+ 1.8G 内存 1G 嵌入式开发板 EmbestS3CEB2410(arm9)开发板+仿真器2.2.2 软件开发平台操作系:Linux Fedora Core 6 , L

27、inux Redhat9.0WindowsXP ,Windows2000工 具 :EmbestIDECygwinArm-Linux-gcc-2.95.3linux-2.4.18qtopia-free-1.7.0qt-embedded-2.3.72.2.3 开发语言CC+ QtEmbedded2.3 运行环境嵌入式机器+Linux操作系统(包含手机、MP4等)PC机+Linux操作系统2.4 性能需求2.4.1 时间特性要求系统稳定,算法效率高,对用户的操作实时响应。3 总体设计3.1 基本设计概念和处理流程系统数据流图:0层数据流图1层数据流图4 系统GUI编程设计4.1 地图移动4.1.1

28、开始状态开始的时候,地图转载图片的状态。在(图一)中,图片处理模块用于处理图片的显示、移动、隐藏。紫色区域为55个图片处理模块,每个图片处理模块存放有地图图片。而这55个图片处理模块用一个数组存放着,这数组用图(二)表示。浅蓝色区域为地图显示区,显示地图给用户。在图(二)中,这表示一个55的数组,用于存放图片处理模块。白色部分存放着中心地图,浅蓝色表示中心地图的左边部分,绿色表示中心地图的右边部分。 一开始填充55幅图片到有55个图片处理模块的数组上,而用户只能看到地图显示区里面的图片。片段代码:变量说明: centermapnum当前中心地图的编号 MapImage预先定义好的用于存放图片数

29、据的数组指针m_PictureItem预先定义的图片处理模块数组(55)m_banck存储一幅白色图片m_ImageWidth图片的宽度m_ImageHeight图片的高度canvas画布m_vertical保存中心地图在55个图片处理模块数组的行 m_-多边形。 QCanvasPolygonalItem-非矩形形状的基类。大多数画布项都派生于此类。 QCanvasRectangle-矩形。此类矩形不能被倾斜或旋转。绘制可旋转的矩形使用QCanvasPolygon。 QCanvasSpline-多重贝塞尔曲线。 QCanvasSprite-活动的图片。 QCanvasText-文本字符串。 然

30、而“数字城市查询系统”利用了QCanvasRectangle项作为装载图片的基类。 装载图片类的头文件:#ifndef CPICTUREITEM_H_#define CPICTUREITEM_H_#include qcanvas.();地图向下滚动时,图片项目向上移动 void up();地图向上滚动时,图片项目向下移动 void left(); void right(); int QStringtoint(QString MapName); QString inttoQString(int num); void LoadImage(QString CenterMap); void reset

31、ItemPosition(); void ShowTheArrowhead(QString &map,int x,int y,QString &text,bool flag);显示箭头 void SplitTheName(int &mapnum,int & leftborder; int getrightborder() return rightborder; int gettopborder() return topborder; int getdownborder() return downborder; int getlefttotal() return lefttotal; int getrighttotal() return righttotal; int gettoptotal() return toptotal; int getdowntotal() return downtotal; int getimagewidth() return m_ImageWidth; in

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1