计算机专业 优秀毕业设计 基于QT的电子地图设计与实现_第1页
计算机专业 优秀毕业设计 基于QT的电子地图设计与实现_第2页
计算机专业 优秀毕业设计 基于QT的电子地图设计与实现_第3页
计算机专业 优秀毕业设计 基于QT的电子地图设计与实现_第4页
计算机专业 优秀毕业设计 基于QT的电子地图设计与实现_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于QT的电子地图设计与实现摘 要人们生活质量不断提高,城际间的往来更加频繁,导航仪成为了生活中不可缺少的局部。电子地图是导航仪最主要的局部,而电子地图的绘制工作颇为繁琐,价格也比拟昂贵,给导航仪的开发带来了很大的麻烦。如果掌握了电子地图的绘制方法,那么不仅带研发上具有重要意义,而且将带来更大的经济效益。就此,本课题对电子地图的绘制和相关程序的编写开展了研究。课题对Trolltech公司的QT/Embedded的深入分析和研究的根底上,开发了基于Intel Pxa270的电子地图。地图的数据来源于实际,利用Mapinfo9.5自主绘制电子地图。通过QT的API与Mapinfo图表数据结合,把地

2、图显示在QT的程序框架上。进而进行了相关的功能的设计,主要包括地图引擎的设计、路径规划设计、实时定位设计等。关键词:Mapinfo9.5 QT/Embedded 电子地图QT-based Design and Implementation of Electronic MapABSTRACTPeople constantly improve the quality of life, inter-city exchanges between the more frequent, navigation has become an indispensable part of life. Navigat

3、ion electronic map is the most important part, the electronic map will work quite complicated, the price is also more expensive, to navigation systems development is a big trouble. If the master electronic map drawing method, then not only with research and development of great significance, and wil

4、l bring greater economic benefits. In this connection, the subject of the e-map rendering and related research carried out the preparation procedures. Subject to the Trolltech's QT / Embedded-depth analysis and research based on the development of a digital map based on Intel Pxa270. Map data fr

5、om the actual use of Mapinfo9.5 own digital maps drawing. QT's API through the chart data combined with Mapinfo, the map shows the procedure in the QT framework. Then carried out the functions related to the design, including the design of the engine map, path planning, real-time location and de

6、sign.Key words:Mapinfo9.5 QT/Embedded Electronic map目 录摘 要IABSTRACTII1 前言1概述1研究背景1研究目标1需求分析2用户需求分析2功能需求分析21.5 本章小结32 QT简介42.1 QT的背景介绍42.2 QT实现的结构原理42.3 QT Graphics View Framework简介52.3.1 Graphics View层次结构52.3.2 QGraphicsItem82.4 QT应用程序的实现102.5 本章小结113 mapinfo绘制电子地图123.1 MapInfo Professional简介123.2 M

7、apInfo地图图表133.3 MapInfo地图图层与图元14地图图层14地图图元143.4 地图的来源153.5 电子地图绘制173.5.1 MapInfo Professional地图绘制工具173.5.2 MapInfo Professional绘制地图173.6 *.MIF和*.MID文件18本章小结204 系统框架描述21系统模块21主要功能21平台简介224.4 UP-TECHPXA270-S核心模块资源234.5 本章小结245 详细设计25程序流程图25界面设计27主窗体设计275.2.2 子窗体设计285.3 地图的显示29地图坐标转换29地图图元的显示30显示效果设计33

8、5.4 单源最短路径算法365.4.1 Dijkstra(迪杰斯特拉)算法365.4.2 路径节点的存储375.5 本章小结416 测试及运行结果426.1 测试目标426.2 测试预期结果426.3 运行结果426.3.1 地图浏览功能436.3.2 路径规划功能446.4 本章小结457 论文总结46参考文献47谢 辞481 前言随着新的ARM芯片不断问世以及这些芯片的价格下降,嵌入式产品开始潜移默化的取代早期的一些单片机,并在社会各行各业中占有越来越重要的位置,嵌入式产品也由此成为众多工程师选择开发高端产品的芯片首选。QT具备跨平台,易扩展,界面华美,性能稳定等优点。因此,以嵌入式处理器

9、作为硬件平台,以QT作为程序框架,两者的完美结合必将成为未来技术的开展方向。现在,汽车正在普及,道路不断建设,城际间的经济往来更加频繁,活动的区域也越来越大。为了提高生活质量,大量的休闲活动、探险活动的举行使我们并不局限在自己认识的一小块区域中,不认识道路,找不到目的地的情况也屡有发生。就此,各种各样的导航仪逐渐走进我们的生活。无论什么导航仪最主要的局部都是电子地图。开发电子地图成为了导航仪的关键。根据调查,电子地图制作困难而且价格相当昂贵,给导航仪的开发带来了很多不便。自主绘制电子地图,编写电子地图应用程序,不管是从经济上还是研究上都具有非常大的意义。市面上的嵌入式产品各式各样,用到的嵌入式

10、操作系统自然也是有所不同。如果拥有一个跨平台的程序的话,那将会给我们的开发节省了大量的时间。QT正是一个支持多平台的C+图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。所以使用QT作为应用程序框架是一个不错的选择。目标基于上述背景,开发一个电子地图工程,使用windows CE5.0搭配PXA270开发板来构建这个工程。使用mapinfo电子地图绘制软件自主绘制电子地图。利用QT4作为系统应用层的程序框架。根据系统的需求,裁减、移植windowsCE内核。分析系统功能和接口,添加各种驱动程序,如:U

11、SB驱动,COM口驱动等。根据应用程序中的每个功能模块,分析各个模块的用户界面接口和对人机交互图形化用户界面的接口设计。目前,我们可以通过各种途径接触电子地图,例如以网页形式的电子地图,如Google地图、Google Earth、百度地图等,以车载GPS导航仪的电子地图,如garmin任我游、纽曼、新科、城际通等,还有以 导航功能出现的电子地图,越来越多的 将支持导航功能,诺基亚2021年在大规模普及 导航。对此,本工程采用免费版的QT4作为程序框架,并且可以跨平台使用,在开发本钱上有着很大的优势。 未来几年,配备电子地图的电子产品市场将逐渐走向成熟,市场需求和产品销量会保持大幅增长,产品供

12、给链中的各类企业将获得巨大商机。尤其是随着产品价格的不断下降,这种快速开展的态势会愈加明显。电子地图在中国市场必然会获得更大的开展空间。由此,本工程也适应用户需求,开发电子地图的相关功能:地图显示功能、卫星定位功能、路径导航功能、语音提示功能等。根据用户需求,和对产品的定位,划分以下功能:表1-1 用户需求功能支持功能所需硬件1 地图显示2 实时定位3 路径导航4 语音提示UP-TECHPXA270-S为硬件开发平台支持功能分析:1. 地图显示:显示当前位置地理信息,包括道路、河流、建筑物,以及标志性建筑的名称,可以通过地图了解的所在位置的周边情况。2. 实时定位:通过不断对对COM口接收到的

13、信息进行分析,获取当前所在位置,并且显示在地图的相应位置上。3. 路径导航:可以设置目的地点,系统将通过路径优先算法显示最优路径,完成导航功能。4. 语音提示:通过简单的语言提示来配合路径导航。所需硬件分析:需要的硬件模块在UPTECHPXA270S硬件实验平台上已一应俱全。在此平台上还配制了8英寸的TFT真彩液晶屏,支持640*480的分辨率。UPTECHPXA270S在存储系统方面也有着很高的配置,内置了高性能价格比的NAND FLASH 64M内存,支持大容量的用户差异图形图片和媒体文件的存储。CPU的能力当然是毋庸置疑的,Intel Xscale结构芯片的PXA270在各方面都表现了很

14、强悍的能力,在目前市场上来说也是一款很先进的处理器芯片。PXA270处理器是Intel公司目前性能最为强劲的移动处理器,已经成为高端移动设备中最受欢送的处理器之一。PXA270最高主频可达624MHz,它引入了X86架构奔腾4系列上的多媒体技术MMX技术,能够大大提升多媒体处理能力,用户通过该技术可以在VGA上面播放高质量的MPGE4视频;同时参加了Intel SpeedStep动态电源管理技术,在保证CPU性能的情况下,最大限度地降低移动设备功耗。1.5 本章小结本章主要介绍本工程的选题背景、意义,选题目标和工程需求分析,根据产品市场和本人技术水平情况,按需求划分软件功能模块,还根据软件功能

15、和现有资源的性能对硬件需求做了详细分析。2 QT简介2.1 QT的背景介绍Qt/Embedded 是著名的Qt库开发商Trolltech公司开发的面向嵌入式系统的Qt版本,开发人员多为KDE工程的核心开发人员。许多基于Qt的X Window程序可以非常方便地移植到Qt/Embedded上,与X11版本的Qt在最大程度上接口兼容,延续了在X上的强大功能,在底层彻底摒弃了X lib,仅采用framebuffer作为底层图形接口。Qt/Embedded类库完全采用C+封装。丰富的控件资源和较好的可移植性是Qt/Embedded最为优秀的一方面,使用X下的开发工具Qt Designer可以直接开发基于

16、Qt/Embedded的UI用户操作接口界面。越来越多的第三方软件公司也开始采用Qt/Embedded开发嵌入式下的应用软件。2.2 QT实现的结构原理Qt/Embedded是Trolltech公司开发的面向嵌入式系统的Qt版本,与X11版本的Qt在最大程度上接口兼容,采用帧缓存framebuffer作为底层图形接口。Qt/Embedded类库完全采用C+封装,并且有着丰富的控件资源以及较好的可移植性,大范围的Qt/Embedded API可用于多种开发工程。Qt/Embedded的实现结构如下:图2-1 QT的实现结构图Qt/Embedded 的底层图形引擎基于framebuffer。Fra

17、mebuffer 驱动程序的实现分为两个方面:一方面是对LCD及其相关局部的初始化,包括画在缓冲区的创立和对DMA通道的设置;另外一方面是对画面缓冲区的读写,具体到代码为read、write、lseek等系统调用接口。至于将画面缓冲区的内容输出到LCD显示屏上,那么由硬件自动完成。对于软件来说是透明的。当对于DMA通道和画面缓冲区设置完成后,DMA开始正常工作,并将缓冲区中的内容不断发送到LCD上。这个过程是基于DMA对于LCD的不断刷新的。基于该特性,framebuffer驱动程序必须将画面缓冲区的存储空间物理空间重新映射到一个不加高缓存和写缓存的虚拟地址区间中,这样能才保证应用程序通过mm

18、ap将该缓存映射到用户空间后,对于该画面缓存的写操作能够实时的表达在LCD上。QT程序是基于C+编写的,图形用户界面编程同时需要运行效率和高水平的灵活性。Qt通过结合C+的速度为这一领域提供了Qt对象模型。Qt把下面这些特性添加到了C+当中: 一种被称为信号和槽的非常强大的机制;可查询和可设计的属性项;强大的事件和事件过滤器;根据上下文进行国际化的字符串翻译;完善的时间间隔驱动的计时器等。 许多Qt的特性是基于QObject的继承,通过标准C+技术实现的。QApplication是必须构造的Qt主对象,需要在一开始的时候就构造这个对象,并把命令行参数传递给这个对象,每个Qt应用程序有且仅有一个

19、QApplication对象,该对象必须在做其他事之前创立,这个对象处理一些底层操作,如事件处理、字符串本地化和控制界面外观等。信号和信号处理函数是GUI应用程序用来响应用户输入的根本机制,也是所有GUI库的核心特征,Qt的信号处理机制由信号(signal)和槽(slot)构成,它们相当于GTK+中的信号和回调函数。在Qt中回调函数就叫做槽。信号和槽用于对象间的通讯,它的根本语法为:connect(object1,signal1,object2,slot1);2.3 QT Graphics View Framework简介2.3.1 Graphics View层次结构Graphics View

20、 提供一个强大的自定义2D平面图元并处理它们之间相互作用的接口,以及将一个这些图元可视化的view控件,它支持旋转和缩放。该框架还包含一个事件传递机制,允许画布和画布上的图元之间精确地双向交互。图元处理鼠标键盘事件,如鼠标按下、移动、释放、点击和双击事件,也跟踪鼠标移动。另外,Graphics View使用BSP树来提供快速的图元搜索,从而能够支持大画布显示,甚至是包含数百万图元的画布。Graphics View架构分作3层。最底层是一系列QGraphicsItem,也就是最根本的图元。所有要显示的对象都必须包装成QGraphicsItem或其子类的对象,然后调用QGraphicsScene:

21、addItem方法把图元参加画布中。中间层是QGraphicsScene对象都添加或删除图元。当显示QGraphicsScene对象时,它包含的所有的QGraphicsItem对象都会显示。最上层是QGraphicsView,这是个窗体控件,专门负责画布的显示。QGraphicsView和QGraphicsScene类似于MVC架构中的Model和View的关系,或者Observer设计模式的Data和View的关系。QGraphicsView控制图像显示,并负责处理或向QGraphicsScene或QGraphicsItem转发键盘鼠标等用户交互事件;QgraphicsScene包括要显示的

22、QGraphicsItem列表数据信息。QGraphicsView和QGraphicsScene是多对一的关系,即一个QGraphicsScene可以放多个QGraphicsView中以不同方式显示。 图2-2 Graphics View三元素之间的关系Graphics View根本类有各自不同的坐标系。QGraphicsScene 类的坐标系是以中心为原点(0,0)。图2-3 QGraphicsScene的坐标系QGraphicsView 类继承自QWidget类,因此它和其他的QWidget类一样以窗口的左上角作为自己坐标系的原点。图2-4 QGraphicsView 的坐标系QGraph

23、icsItem那么有自己的坐标系,在调用QGraphicsItem类的paint()函数重画工程时是以此坐标系为基准。图2-5 QGraphicsItem 的坐标系3种坐标系统可以相互转换。QT提供了相应的接口。例如,通过调用QGraphicsItem:mapToScene和QGraphicsItem:mapFormScene可以在Item坐标系统和Scene坐标系统之间进行转换,QGraphicsItem:mapToParent和QGraphicsItem:mapParent可以在Item坐标系统和它的父Item坐标系统之间进行转换,QGraphicsView:mapFromScene和QG

24、raphicsView:mapToScene可以在View坐标系统和Scene坐标系统之间进行转换。2.3.2 QGraphicsItem QGraphicsItem提供了丰富的子类为程序的编写带来了很大的方便。有QGraphicsEllipseItem,QGraphicsLineItem,QGraphicsPathItem,QGraphicsPixmapItem,QGraphicsPolygonItem,QGraphicsRectItem,QGraphicsSimpleTextItem,QGraphicsTextItem一共8种。在地图的绘制中QGraphicsLineItem可绘制道路,河

25、流。QGraphicsPathItem可以绘制一些曲线。 图2-6 QGraphicsLineItem 图2-7 QGraphicsPathItemQGraphicsPixmapItem可以把一些通用的小图标添加到地图中,例如酒店,车站,书店,政府部门等。图2-8 QGraphicsPixmapItemQGraphicsPolygonItem可以灵活的绘制出一些多边形建筑物,或者行政区域,湖泊等。图2-9 QGraphicsPolygonItemQGraphicsSimpleTextItem、QGraphicsTextItem那么可以在地图上添加文字说明或者地标。 图2-10 QGraphic

26、sSimpleTextItem 图2-11 QGraphicsTextItem2.4 QT应用程序的实现由以上简介可知,Qt是一个创立GUI程序的C+类库,编写Qt应用程序的主要工作是基于已有的Qt类编写用户类。Qt提供了一组范围相当广泛的C+类库,并包含了几种命令行和图形界面的工具,有效地使用这些工具可以加速开发过程。Qt Designer:Qt设计器。用来可视化地设计应用程序界面。Qt Linguist:Qt语言学家。用来翻译应用程序。以此提供对多种语言的支持。Qmake:使用此工具可以由简单的、与平台无关的工程文件来生成编译所需的Makefile。Qt Assistant:关于Qt的帮助

27、文件。类似于MSDN。可以快速地发现你所需要的帮助。moc:元对象编译器。uic:用户界面编译器。在程序编译时被自动调用,通过ui_*.h文件生成应用程序界面。Qt应用程序的设计使用基于工程的方法,并通过.pro文件进行工程管理。实现应用程序的第一步是编写.pro文件,然后使用QT4自带的qmake工具生成Makefile,最后进行源代码的编译。Qmake的过程如下:qmake qmake /生成Makefilenmake /编译2.5 本章小结随着越来越多的第三方软件公司利用Qt/Embedded开发嵌入式Linux下的应用软件,Qt的应用已经越来越广泛。本章主要介绍了QT的背景和描述了QT

28、实现的结构原理,还简述了QT的相关特性。此外,也介绍了QT应用程序开发时的相关工具。3 mapinfo绘制电子地图3.1 MapInfo Professional简介图3-1 mapinfo启动界面MapInfo是美国MapInfo公司的桌面地理信息系统软件,是一种数据可视化、信息地图化的桌面解决方案。它依据地图及其应用的概念、采用办公自动化的操作、集成多种数据库数据、融合计算机地图方法、使用地理数据库技术、参加了地理信息系统分析功能,形成了极具实用价值的、可以为各行各业所用的群众化小型软件系统。MapInfo 含义是“Mapping + Information地图+信息即:地图对象+属性数据

29、。1986年MapInfo公司成立并推出了第一个版本MapInfo for DOS V1.0及其开发工具MapBasic,此后又推出了DOS平台的2.0和3.0版。1995年底MapInfo发布了MapInfo Professional,是一个以Windows 95和Windows NT为平台的桌面地理信息系统。目前该软件的最新版本是MapInfo Professional9.5及其系列软件。MapInfo Professional是一套强大的基于Windows平台的地图化解决方案,可以方便地将数据和地理信息的关系直观的展现,其复杂而详细的数据分析能力可帮助用户从地理的角度更好地理解各种信息;

30、可以增强报表和数据表现能力,找出以前无法看到的模式和趋势,创立高质量的地图以便做出高效的决策;凭借其新特性和增强功能,MapInfo Professional 使得桌面地图化和分析功能更快和更容易-并可延伸至整个企业。MapInfo Professional提供一整套功能强大的工具来进行复杂的商业地图化、数据可视化和GIS功能。通过MapInfo Professional可连接本地及效劳器端的数据库,创立地图和图表以揭示数据行列背后的真正含义。也可以定制MapInfo Professional以满足用户的特定需要。 支持Oracle8i完全读/写,通过OCI对Oracle8i及通过ODBC对其

31、它数据源的实时访问。3.2 MapInfo地图图表使用mapinfo软件可对地图进行处理、查询、编辑和分析等操作,前提条件是:首先应该对地图信息化,而执行该操作的前提就是建立图表。图表由行和列组成,行含了特定地理特性或事件的等信息,而列包含有关表中数据项的特定类型信息。图表的组成类型:一个典型的mapinfo表将主要由*.TAB、*.MAP、*.ID和*.DAT文件格式组成。*.TAB 属性数据的表结构文件*.MAP 空间数据文件*.DAT 属性数据文件*.ID 交叉索引文件图3-2 mapinfo图表之间联系3.3 MapInfo地图图层与图元每一个可用地图表示的mapinfo表都能在地图上

32、作为图层显示。一个mapinfo电子地图可能包含很多不同图层,而每一层都包含了地图的不同局部。通过将这些图层一层层叠加,就可以看到整个地图信息。 北理工 宁堂【标注】图层【点】图层【边界】图层图3-3 多个图层组成mapinfo地图图元是图层中的一个元素。在mapinfo中共育4种根本图元样式。1. 区域对象区域对象特指覆盖给定区域的闭合对象。其中包括多边形、椭圆和矩形,例如国家边界、邮政边界等。2. 点对象点对象表示数据的单一位置。其例如有饭店。3. 线对象线对象是指覆盖指定给定距离的开发对象,包括线、折线、弧线等,其例如有街道、河流和电力线路等。4. 文本对象文本对象是特指用于说明地图或其

33、他对象文本,其例如有标注或标题等。3.4 地图的来源西方绘画有一种写实手法,要有一个真实的物体,才可以进行创作。绘制地图也是同样的道理,要有一个实物的照片或者是事先绘制的纸质地图,才可以进行绘制。本工程绘制的是北京理工大学珠海学院电子地图,由于某些原因,使得地理数据资源比拟匮乏。在google地图上面找到比拟适宜的地图也是2004年学校的卫星照片图3-4。图3-4 Google地球上的卫星照片 这张图片上面虽然建筑物寥寥无几,但是已经可以作为参照物,为地图的绘制提供了较高的准确性。为了获取更多的信息,还拍下了学校路边的地图图3-5作为参考,并且做了实地考察,手工绘制了一幅学校的平面图地图图3-

34、6。图3-5 北京理工大学珠海学院学校路边平面图图3-6 手工绘制北京理工大学珠海学院平面图3.5 电子地图绘制3.5.1 MapInfo Professional地图绘制工具MapInfo Professional提供了一组专门的地图绘制工具,其中图形矢量的工具集全集中在该工具栏中,利用这些工具根本上可灵活完成各种绘图任务任务。这些绘图工具不仅能够在当前操作环境绘制图形对象,而且可根据需要进行必要的编辑和调整,使其符合绘图的需要。图3-7 mapinfo绘图工具条工具条局部工具的含义表3-1符号 含义符号在地图中放置点符号符号样式利用该工具指定符号属性折线在地图中绘制折线线样式可设置线的类型

35、、宽度和颜色多边形可一次绘制各种形状的多边形多边形样式可设置多边形的轮廓宽度和颜色,填充花纹和填充的颜色3.5.2 MapInfo Professional绘制地图在一幅传统的地图中包含多种类型的图纸信息如省市边界、城市、山川、河流、道路和水库,而对于使用地图的个人或某行业来讲,往往仅对注重对每个或局部类型进行显示和分析。所以根据不同需求设计地图的层次机构,有意识的把同一类对象归类,并放置在同一个图层中。清楚了mapinfo中图层和图元的概念以及了解绘图工具的使用后,就可以开始绘制地图了。在本工程中设计了Key、Build、route1、route2、waterArea五层。Key:标注层。标

36、注了地名称,道路名称,建筑名称等。Build:建筑层。包括了该区域所有建筑物,例如教学楼,宿舍,饭堂等。route1:一级道路。适合驾车和步行。route2:二级道路。适合步行。waterArea:水域边界。包括了湖泊、河流等。将道路层分为一级道路和二级道路主要是考虑到导航算法的设计,如果选择驾车,那么在导航算法中只考虑一级道路,而不用考虑二级道路。5个图层绘制完毕后最终显示结果如图:图3-8 各个图层综合显示3.6 *.MIF和*.MID文件绘制完成后mapinfo把每一个图层保存为相应的图表文件。而每一个表又可以同时转出为*.MIF和*.MID两种格式文件。Mif文件包含了该图层所有图元的

37、类型、位置、颜色等相关信息,mid文件包含了mif每个图元对应的标注。例如:Pline 4Pen (7,2,16776960)"金凤路"对应的mid文件eg.MID 对应的mif文件 图3-9 TAB与mif和mid的联系文件描述了该对象是折线对象,该线有4个点,每一个点的具体坐标,画笔是7号像素,2号样式,画笔颜色为16776960黄色。 同样的方法就可用理解其他图元相关的信息。 mapinfo是地图绘制领域使用最为广泛的应用软件之一,本章介绍了mapinfo的通用知识地图图表和地图分层的根本概念,以及对如何绘制地图进行了详细的介绍。最后还详细分析了*.MIF和*.MID

38、文件格式,这两种格式文件是整个工程的地理数据来源,对这两种文件结构的深入理解将是编程的关键。4 系统框架描述系统OS层使用windows CE 5.0系统,底层调用多种驱动,其中包括:USB键盘、鼠标驱动,触摸屏驱动等。软件层API使用QT4自由版提供的API。应用层为电子地图应用程序。 操作系统触摸屏LCD驱动COM驱动键鼠驱动嵌入式GUIQT4电子地图应用层接口层系统层PXA 270开发板硬件层USB驱动图4-1 系统模块图地图显示:显示所在位置周边地理信息,可对当前进行缩放,拖动,自动切换地图。路径导航: 自定义起点终点,利用最优路径算法计算出一条最优路径,并且在地图上面显示。历史记录:

39、系统会自动保存用户最近使用的10条路径导航记录,以方便用户在再次需要时浏览。卫星定位:在地图对应位置显示当前所在位置。本系统设计使用的硬件平台是由北京博创兴业科技开发的UP-TECHPXA270-S 实验平台。该平台是基于Intel XSCALE 架构最新的PXA270 嵌入式微处理器最高主频可达624MHz,参加了Wireless MMX 技术,大大提升了多媒体处理能力;同时PXA270 还参加了Intel SpeedStep动态电源管理技术,在保证CPU 性能的情况下,最大限度地降低移动设备功耗。PXA270可以广泛应用于PDA、智能 、PMP 产品中。博创科技的UP-TECHPXA270

40、-S 教学科研平台主要是面向计算机、软件专业的高端平台,微处理器主频稳定运行在520MHz,可运行WinCE5.0 和Linux 2.6.x 操作系统,支持QT/E、miniGUI 等嵌入式图形界面,提供完整的驱动和应用程序。 图4-2 UP-TECHPXA270-S 教学科研平台图UP-TECHPXA270-S 教学科研平台由处理器核心板、主板及LCD 三部份组成。核心板和主板的接口设计充分考虑了升级产品的兼容性,核心板可以升级到PXA271、PXA272 微处理器,而主板资源不变。此外,除了具有丰富的接口资源,良好的可扩展性也是UP-TECHPXA270-S 平台的一大特色。 UP-TEC

41、HPXA270-S 预留了32 位扩展总线接口,与博创UP-NetARM2410、UP-NetARM2410-S 平台兼容,从而大大减轻了用户扩展新功能的负担。 PXA270 核心板CPUSDRAMNand FlashNorthFlash总线隔离驱动电路10/100M 网卡RJ45 接口MIC、LINE-IN/OUT模拟功率放大器AC97 CODEC触摸屏接口KEYPADRTC 实时钟RS232 串口VGA 输出640*480 TFT 16bitLCD 液晶屏USB1.1 DEVICEUSB1.1 HOST4 端口USB HUB图4-3 以PXA270为核心的硬件架构图4.4 UP-TECHP

42、XA270-S核心模块资源基于Intel XScale 架构内核的嵌入式处理器PXA270,内部集成iwmmx 指令,加速处理器对多媒体数据的 处理速度。辅助CPULPC2119 ARM7TDMI-S。系统稳定工作在520MHZ 主频,64MB SDRAM、16MB Nor Flash、64MB Nand Flash 库。1)UP-TECHPXA270-S 软件资源:lBootloader:eboot;l;l驱动程序:提供所有板级设备的驱动程序;2)UP-TECHPXA270-S 平台配套线缆:lRJ45 交叉网线;lDC12V 电源适配器;l用户自备CAN、RS485 等的连接导;3)PXA

43、270-S 开发平台硬件资源:lPXA270 Core 小板:PXA270 XScale CPU、64M SDRAM、64M NAND FLASH,16M NorFLASH。通过256Pin 2mm 间距直插针与主板连接。lDouble 100M EtherNet 网卡:由两片DM9000 构成的双网卡,l4 HOST / 1 DEVICE USB 接口:PXA270 的主USB 口扩展为4 个,由AT43301 构成USB HUB,其中电源管理用MIC2505。l3 UART/IrDA/RS485: 2 个RS232 串口。1 个RS485 串口,1 个IrDA 收发器,均从处理器的ICP

44、UART 引出,由FPGA 内部逻辑切换。lLCD 显示屏:采用8 寸18bit 真彩屏,同时预留一个24bit LCD 接口。lTouchScr: 通过UCB1400 芯片和AC97 总线实现。lAC97 AUDIO:采用UCB1400 CODEC 和LM4880 功放芯片,具有放音、录音功能。l板载17 键小键盘:从处理器键盘接口扩充。l电源、RESET、RTC、JTAG 等必须资源。电源电路具有专门逻辑,可以实现软件关机功能。PXA270-S 开发平台需要DC12V 供电。lARM7 辅助处理器:平台上配置LPC2119 ARM7 芯片,配合扩展板可完成市场上LPC2119 开发板的大局

45、部功能。LPC2119 通过SPI 和IIC 总线与PXA270 通信。lAD 电位器:由LPC2119 扩展出2 路AD 采集。lCAN BUS:设置2 个CAN 口,由LPC2119 扩展和TJA1050 芯片构成。lVGA 接口:可以接驳VGA 显示器。lUSB2.0 接口:由ISP1760 扩展,提供2 个USB2.0 HOST 接口,1 个USB2.0 OTG/Device接口。MIC2526 作为电源控制器件。lIEEE1394 总线接口:由TSB43AA82PGE 扩展出2 个1394 接口FireWire 火线接口。4.5 本章小结本章介绍了本工程的系统模块,包括每个模块的功能

46、描述。此外,还介绍了系统的硬件架构以及开发平台的软件、硬件模块资源等。5 详细设计开始窗体初始化地图初始化显示地图导航?输入起点输入终点确定?通过Dijkstra计算得出最优路径并且把路径显示在地图上退出导航退出退出图5-1 程序总体流程图开始根据经纬度读取对应Mapinfo地图导出文件获取当前所在位置的经纬度文件结束?多边形折线文本添加到对应链表中添加到画布中结束添加到对应链表中添加到对应链表中图5-2 地图显示局部流程图主窗体class MapWidget继承QGraphicsView基类,使得地图可以充满整个窗体显示,在主窗体中有滑块QSlider,标示Qlabel,按钮QPushBut

47、ton 三种控件。滑块QSlider通过不同刻度的选择,发送信号给主窗体的槽函数slotZoom(int)实现对当前显示地图进行放大缩小。实现语句如下:connect (slider,SIGNAL(valueChanged(int),this,SLOT(slotZoom(int);标示Qlabel有两个zoominLabel和zoomoutLabel,一个在滑块的正上方,一个在滑块的正下方。通过setPixmap(QPixmap(":/images/*.png");加载图片,分别“+和“-,加号标示放大,减号标示缩小。按钮QpushButton,提示用户选择功能。有“导航和

48、“退出两个功能。导航按钮点击后将显示导航子窗体。退出按钮直接发送调clicked()信号给主窗体的close()信号 实现关闭主窗体,退出程序。实现语句如下:connect(quitButton,SIGNAL(clicked(),this,SLOT(close();最后使用布局管理器对以上控件进行布局。利用addWidget()函数将控件添加进布局管理器,实现布局。QVBoxLayout *zoomLayout = new QVBoxLayout;/垂直布局zoomLayout->addWidget(zoominLabel);zoomLayout->addWidget(slider

49、); zoomLayout->addWidget(zoomoutLabel);QSpacerItem *verticalSpacer1;/使用空白空间,目的是为了把滑块放置在布局的上半局部,使得地图有更多的显示空间。verticalSpacer1 = new QSpacerItem(20, 30, QSizePolicy:Minimum, QSizePolicy:Expanding);zoomLayout->addItem(verticalSpacer1);QVBoxLayout *buttonLayout = new QVBoxLayout;/第二个垂直布局buttonLayou

50、t->addItem(verticalSpacer2); /空白buttonLayout->addWidget(okButton);/“导航按钮buttonLayout->addWidget(quitButton);/“退出按钮利用水平布局进行总体布局,通过setLayout()把布局完的结果显示出来。QHBoxLayout *layout = new QHBoxLayout;layout->addLayout(zoomLayout);layout->addItem(horizontalSpacer);/空白layout->addLayout(buttonL

51、ayout);setLayout(layout);图5-3 主窗体布局图5.2.2 子窗体设计子窗体class PathLayout 继承于Qwidget类。主要有下拉框QgroupBox、标示Qlabel和按钮QpushButton这些控件。下拉框有两个,用于路径规划功能,一个选择起点,另外一个选择终点。选择完后,通过发送currentIndexChanged(QString)信号把当前下拉框显示的QString发送到主窗体的槽函数setStartPoint(QString)和setEndPoint(QString)中完成起点与终点的设置。通过addItem()实现对两个下拉框内容的初始化。

52、按钮QpushButton有取消和确定三个,取消按钮发送clicked()信号到主窗体的clearThePath()槽函数中,如果地图上有规划路径,那么把路径去除。确定按钮发送clicked()信号到主窗体的setThePath()槽函数中,实现规划路径。最后一个是“退出按钮,退出子窗体。同样在最后通过布局管理器对所以控件进行布局,布局最终结果如下列图:图5-4 子窗体5.3 地图的显示地图文件中的坐标系统采取的是经纬度坐标,显示时采取的是Sense坐标各个Item的坐标统一转换到Sense坐标,因此加载地图文件,从地图文件解析出图元坐标系统时,需要将图元的经纬度坐标转化为Sense坐标后才能

53、知道在画布的什么位置显示图元。画布的大小是始终固定不变的,但是它表示的经纬范围可变,而它表示的经纬度范围就是进行坐标转换,地图缩放,地图平移的基准。地图表示的经纬度范围用下面定义的结构体表示:typedef struct double x1; /画布左上角代表的经度 double y1; /画布左上角代表的纬度 double x2; /画布右下角代表的经度 double y2; /画布右下角代表的纬度确定好画布表示的经纬度范围后,就可用很方便的将地图数据中的经纬度坐标转换成画布坐标了。具体实现的转换函数:double x; /当前点的xdouble y; /当前点的ydouble wx ;/当

54、前显示区域经度的范围double w;/当前显示区域的宽度double hy; /当前显示区域纬度范围double h; /当前显示区域的高度point=new QPointF(x-x1)/wx)*w-w/2,(y1-y)/hy)*h-h/2);利用这个函数,所有图元都可以在画布上找到准确的位置显示出来。最终形成了整幅地图。地图显示功能,实现原理就是把数据绘制复原称地图。地理数据的来源就是之前绘制好的mapinfo地图,把地图所有图表全部用mif和mid格式文件转出。mif和mid格式文件就是mapinfo和QT的接口。利用QT的QGraphicsItem将mapinfo地图中的图元在QGraphicsScene显示出来。QPointF *point;/存放图元节点QVector<QPointF> pointfRegion;/存放一个多边形所有节点容器QPolygonF *pPolygonF;/多边形指针QGraphicsPolygonItem *pPolygonItem;/ QGraphicsView框架下的多边形图元,要把图元封装成QGraphicsItem才能够在该框架里面显示。QByteArray brushColor;/存放当前填充颜色QByteArray penColor

温馨提示

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

评论

0/150

提交评论