NMOE_项目结题论文_GPS+ARM+GSM的智能电子导游设计与实现_第1页
NMOE_项目结题论文_GPS+ARM+GSM的智能电子导游设计与实现_第2页
NMOE_项目结题论文_GPS+ARM+GSM的智能电子导游设计与实现_第3页
NMOE_项目结题论文_GPS+ARM+GSM的智能电子导游设计与实现_第4页
NMOE_项目结题论文_GPS+ARM+GSM的智能电子导游设计与实现_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

国家大学生创新性实验计划项目结题论文 中央民族大学 项目组成员: 邵燕 郑旅军 孙福成 指导教师:程卫军 职称:副教授 项目编号: NMOE200811016 2009 年 12 月 15 日 基于 GPS+ARM+GSM 智能电子导游 设计与实现 - 2 - 目录 : 一、 选题背景 - - 3 - 二、 系统设计的关键问题及解决方案 - - 4 - 1、 GIS 电子地图制作: - - 4 - 2、数据的接收及精度的提高 - - 8 - 1)测量的误差来源 - - 8 - 2) GPS NMEA0183 接受协议 - - 9 - 3)定位信息的提取及处理 - - 10 - 4)改善定位精度 - - 10 - 3、 GSM 数据处理 - - 12 - 4、 GPS 与 GSM 及地图显示部分相互整合 - - 14 - 1系统硬件的选择 - - 15 - 2系统软件的选择 - - 15 - 3系统整个程序流程的设计 - - 18 - 五、 研究成果 - - 22 - 参考文献: - - 23 - 致谢 - - 24 - - 3 - 基于 GPS+ARM+GSM 智能电子导游设计与实现 中央民族大学 邵燕 郑旅军 孙福成 指导教师:程 卫军 职称:副教授 摘要: 本项目 在 GPS、 GSM的技术基础上, 制作 了 数据格式的 中央民族大学电子地图 来 开发智能导游系统 。 选取 ARM9-2410 开发板 和 嵌入式 Linux 操作系统进行设计。通过 改进卡尔曼算法实现更高精度的 GPS 定位 ; 通过 GSM 模块短信通信 实现 导游仪间 的相互定位 ,将全球定位技术与第二代移动通信技术相结合很好地实现了 系统 功能 ; 使用 QT 进行 程序界面设计 来实现人机交互,界面着重从艺术设计的 角度 出发,注重人性化、智能化,界面美观大方,易于操作。 关键字: GPS; ARM; GSM;电子导游 一、 选题背景 目 前,先进的发达国家 旅游业界内已经广泛采用非人工讲解的导游仪。在我国,电子导游还属于 新生事物,主要体现在 运用范围不够广, 开发技术不够成熟。 最早的电子导游使用是在广西桂林漓江开始出现,几年来国内的各著名旅游景点也逐步开始引入电子导游,但 是国内的应用主要还集中在触摸式视频讲解系统和仅基于 GPS 定位的自动讲解系统。 1 在智能化和人性化 服务 方面 相对薄弱。电子导游在我国具有良好的发展势头,与 人工导游相比 ,它在保护环境、 避免游客之间的干扰 、服务的质量 稳定性 、满足游客的个性化需求 等方面更有 优势 。 智能型电子导游在我国具 有良好的发展势头,首先 与人工导游相比 ,它在保护环境、 避免游客之间的干扰 、导游服务的质量 稳定性 、 满足游客的个性化需求 等方面更有 优势 ,智能型电子导游更能体现人性化的特点 。 其次,智能型电子导游在我国的市场需求将逐步变大。我国旅游资源丰富,历史悠久,文化传统别具一格。 无论是自然风光、文化 古迹、民族风情和革命纪念地,都有丰富多彩、引人入胜的内容; 随着国内人民生活水平的提高,人们对精神生活质量的追求逐年提升,外加世界范围内旅 游者对中国的兴趣逐年上升,中国将成为世界旅游业最发达的国家之一;智能 电子导游在保证旅游质量的同时 接纳来自世界各地的旅游者将发挥它的无可比拟的优越性。 但是在调研过程中我们发现,虽然电子导游能够满足游客自主游览的需求,但游客在游览过程中很容易出现和队友走散的状况,即使有手机等通讯工具,在陌生的特别是面积比较大的自然景区,游客仍然 不能快而方便的找到彼此, 因此 项目组进行了 智能电子导游的设计与实现 , 使得上述情况发生时双方能够通过电子导游互相定位,直观而方便的寻找到队友。同时改进电子导游的服务内容,使其更加智能 - 4 - 化。在操作界面风格上注重 人性化 设计,使其更好的为旅游者服务。 二、 系统设计的 关键问题 及解决方案 1、 GIS 电子地图制作 : 项目涉及的是 GIS(地理信息系统) 在嵌入式设备上的应用电子地图浏览。典型的嵌入式 GIS应用由嵌入式硬件系统、嵌入式操作系统、和嵌入式 GIS 软件组成。由于嵌入式设备本身的条件限制,其数据存储和处理能力有限, 在项目中我们采用 MAPINFO 格式的地图,对其数据进行了适当裁剪,并选择了合适的数据结构来组织裁剪后的数据,减小了数据冗余,解决了在嵌入式设备上存储大批量数据的问题 1。在此基础上, 以 QT/Embedded 为开发环境,实现了一种能运行在以嵌入式 LINUX 为操作系统的设备上的导航电子地图 。 a.生成电子地图; 利用 mapinfo7.0 软件制作本校区电子地图, 如下图 1-1 所示。 这里要注意地图的地理坐标,因为这将涉及到后面 GPS 的定位能否与电子地图的坐标匹配问题,也就是精度的问题。 b.电子地图数据: 制作好本校的电子地图之后,将其转换成 MIF/MID 文件, Mapinfo 主要通过 MIF、MID 两个文件向外交换数据 以及 与其他 GIS 软件建立数据接口,其中 MIF 数据文件主要保存空间数据的图形信息, MID 数据文件主要保存空间数据的属性信息。 MIF 由头文件和数据段组成,数据段包含 mapinfo 定义的 点 、线、面、多义线、区域、圆弧、文本、矩形、圆角矩形和椭圆等实体,具体如图 1-2 所示。 MID 文件为对应实体的属性。掌握了文件关系之后,就可以用或语言编程实现对 .mif 文件的读取。 图 1-1 mipinfo 编辑软件制作民大地图 - 5 - 图 1-2 .mif 文件内容 c.地图投影和坐标转换: 由于从 mapinfo 的 MIF 文件中获得的数据是位于地球椭球面上的经纬度坐标,所以需要经过地图投影将经纬度坐标数据投影为平面坐标数据,才能在 QT 图形界面里正确绘制地图。 具体原理过程如下: 大地坐标转换成地图平面坐标 2。 以 O 为圆心 ,长轴 a 为半径做圆弧 RQ ,又以 O 为圆心 , 短 轴 b 为半径做圆弧 L M ,如图 3 所示 , K K 垂直 OP 轴 ,设 O K与 OP 轴夹角为 u , KT 为 K 点在子午椭圆的切线 ,得 : 图 1-3 - 6 - 则椭球圆上一点 K 坐标 ( P , Z) 为 : 其中 : 由图 1-3 可得 : 其中 , H 为高度。 地图平面坐标转换成大地坐标 。 由式 (2) 可得其逆变换为 : 地图平面坐标转换为屏幕坐标 3 由于地图平面坐标系和屏幕坐标系都是平面直角坐标系 ,它们之间的差别在于坐标原点的不同 ,坐标轴的方向和刻度单位不同。因此 ,它们之间的变换只要通过比例变换、平移变换和旋转变换就可以实现。假设原坐标系的坐标值为 ( X , Y) ,变换后的坐标值为 ( sx , sy) , x 轴 , y 轴的比例变换因子分别为 xs , ys ;平移变换因子分别为 t x , ty ,旋转角度为 ;则它们之间的坐标变换可用下列方程实现 : 比例变换方程为 : - 7 - 平移变换方程为 : 旋转变换方程为 : 本项目中采用高斯 -克吕格投影。经过地图投影后,原来的经纬度坐标数据就转化成了平面上以米为单位的坐标数据。但是要把地图绘制在嵌入式设备的屏幕上,还需要把平面坐标数据转化为屏幕上以像素为单位的坐标数据。 代码实现为: 首先调用 translate() 函数转化绘图设备坐标系统的原点( 0, 0)到窗口的左上角。具体 实现 的核心代码 如下 所示 - r.moveTopLeft( QPoint(-r.width()/2, -r.height()/2) ); eraseRect = eraseRect.unite( mtx.map(r) ); eraseRect.moveBy( -1, -1 ); eraseRect.setSize( QSize( eraseRect.width() + 2,eraseRect.height() + 2 ) ); um.translate( pw/2, ph/2 ); / 0,0 is center um = mtx * um; p.setWorldMatrix( um ); 在 QT 图形 界面的图形 绘制: 图形的绘制包括点、线等 的绘 制,绘制工作都是在类 Show 中的 paintEvent(QpaintEvent*)函数中完成的。 主要代码如下 : Class MyMap:public QWidget Protected: Void paintEvent(QpaintEvent*); ; Void MyMap:paintEvent(QpaintEvent*0 - 8 - Qpainter p(this); Qpen pen(QColor(2,142,188), 3); p.setPen(pen); p.drawPloyline(draw); d.电子地图的缩放和漫游 电子地图数据结构选用 矢量结构,这 样在地图缩放显示时,原图的各个部分成比例的缩放。以 坐标变换和地图的显示为基础,地图的缩放和漫游就比较容易实现。地图缩放只需在将平面坐标转化为屏幕坐标时,将转化比例再乘上一个缩放因子 K;同样,地图漫游只需在坐标转化时,加上或减去一个漫游常数 scale.即可实现放大和缩小效果。但是在实际实现时,每一次地图刷新都要重绘一次地图,使得系统处理速度骤降,不能很好的工作,因此,项目在实际中采用 栅格形式和 实时 绘制 结合的方案,地图主体以 栅格 显示为主 ,关键点的数据采用读取 .mif 文件中的信息来绘制。这样,系统处理的速度得到了很大的提高,而美中不足是在放大缩小时图像边缘会有细小模糊出现,但完全不影响整体效果。 2、 数据的接收及 精度的提高 1) 测量的误差来源 在卫星信号的收发过程中 , 以及对信号的传播时间计算方面都不可避免的带来误差 , 引起定位误差的因素有很多 , 大致可以分成以下几类。 设备误差 首先 , 虽然卫星上装了精确度很高的原子钟 , 但是原子钟还是存在误差 , 卫星轨道本身虽然很高但是收到地球大气层的影响要产生 漂移 , 其次接收器本身时钟也存在误差和噪声 , 这些都影响定位的精确度 ,但这些不是主要的。 大气层的干扰 GPS 通过电波发送定时信号 , 当 GPS 信号经过电离层 (Ionosphere)上一些带电性的粒子及对流层(Troposphere)上的水汽时 , 信号便产生迟滞延时的现象。这些延时不可能提前预知 , 因为受到天气的影响 , 另外还受到大气环境的影响 , 在好的接收器中考虑了典型大气层延时的影响 , 做了相应的修正 , 但是不可能对大气层的变化做出实时的 , 精准的数学模型 , 所以大气层 对定时信号的延时影响依然存 - 9 - 在 , 这也是影响定位精度的又一原因。 SA( selective availability) 策略 GPS 卫星传送两种频率的载波 L1 (Link 1) 载波的频率为 1575.42 MHZ, L2 (Link 2) 载波的频率为 1227.60MHZ。这两种载波可修正电离层迟滞效应的误差 , 在载波上除了状态讯息之外 , 并调制了 2 个供定时的码 C/A 码 (Coarse Acqusition), 频率为 1.023MHZ, 仅在 L1 载波上作调变 , 每 1023 位重复一次 , 这种码制的定位精度大大超出了原来的设计 , 出于美国自身及其盟国安全的考虑 , 在这一码制当中加入了时钟伪码和星历伪码 , 导致其定位精度在 100 米左右 ,提供给民间和非军事同盟国使用。 P 码 (Precise Code), 频率为 10.23MHZ, 每七天重复一次可同时采用 L1 及 L2 载波变 , 主要提供军事用途 P 码的频率大约是 C/A 码的 10 倍不但更为精确 ,也更不易被干扰。这种定位精度很高的码制只有美国军方独家使用 其他因素 以上前两种都可以说是固有的误 差 , 而 SA 策略则是人为的 , 这个是造成 GPS 定位精度下降的关键因素 , 本文提供的方法就能大大改善由此策略造成的精度下降。另外还有其他的因素影响精度 , 比如信号的多径效应 , 太空当中的一些偶发事件都会对卫星造成影响 , 从而导致精度下降 , 不过这些和 SA略相比而言不占主要地位。 2) GPS NMEA0183 接受协议 全球定位 位系统( Global Positioning System - GPS)是美国从本世纪 70 年代开始研制,历时 20 年,耗资 200 亿美元,于 1994 年全面建成,具有在海、陆、空进行全方位实时三维导航与定位能力的新一代卫星导航与定位系统。 GPS 接收机接收到的数据通过串口输入,其数据格式符合 NMEA0183 标准 ,格式如下 图 1-4 所示 : 图 1-4 NMEA0183 标准语句 中,字段 0( GPGGA)中包含了我们所需要的所有定位信息,所以我们只取这段 - 10 - 数据做为有用数据,其定义如下: 字段 0: $GPGGA,语句 ID,表明该语句为 Global Positioning System Fix Data( GGA) GPS 定位信息 字段 1: UTC 时间, hhmmss.sss,时分秒格式 字段 2:纬度 ddmm.mmmm,度分格式(前导位数不足则补 0) 字段 3:纬度 N(北纬)或 S(南纬) 字段 4:经度 dddmm.mmmm,度分格式(前导位数不足则补 0) 字段 5:经度 E(东经)或 W(西经) 字段 6: GPS 状态, 0=未定位, 1=非差分定位, 2=差分定位, 3=无效 PPS, 6=正在估算 字段 7:正在使用的卫星数量( 00 - 12)(前导位数不足则补 0) 字段 8: HDOP 水平精度因子( 0.5 - 99.9) 字段 9:海拔高度( -9999.9 - 99999.9) 字段 10:地球椭球面相对大地水准面的高度 字段 11:差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空) 字段 12:差分站 ID 号 0000 - 1023(前导位数不足则补 0,如果不是差分定位将为空字段 13:校验值 3)定位信息的 提取及处理 GPS 接收机接收到的数据以字符的形式进入串口,我们把字符“ GA”作为标志符,获取经度和纬度信息,程序代码如下: (注)变量 buffi, buff_lati, buff_loni都是 char 型变量,电子地图中使用的是 double型变量,所以需要把 char 型转变成 double 型,程序代码如下: 4)改善定位精度 - 11 - G P S 模块数据采样(以理工楼6 0 5 室为对象)116.3129116.313116.3131116.3132116.3133116.3134116.3135116.31361 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79采样次数纬度G P S 测得数据GOOGLE EARTH测得数 据G P S 模块数据采样(以理工楼6 0 5 室为对象)39.947239.947339.947439.947539.947639.947739.947839.94791 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77采样次数经度G P S 测得经度GOOGLE EARTH测 得经度 GPS 单点定位系统误差改正 比较实测观测值与其真值 , 可以 看出 , Y 坐标 、 X 坐标均偏 大 。因此 ,本手持式 GPS 定位中存在着明显的系统误差 , 而量级在 10 米级 , 因此需要对所使用的仪器进行误差模拟来改善系统误差对单点定位精度的影响。 按式 (3) 计算系统误差均值 - 12 - ix, iy 为控制点的观测值与其已知值之差。 经系统误差改正后的结果由式 ( 4) 计算。 4 算法上改善定位精度 系统 使用改进的卡尔曼滤波算法 来 提高定位精度, 5针对最小二乘法和标准卡尔曼滤波的特点,通过伪距离估计出接收机的位置和钟差,避免由于滤波初 值,系统噪声方差以及测量噪声方差带来的滤波发散问题。在进行卡尔曼滤波时 ,关键是 建立数学模型、 确定状态向量、建立系统方程和测量方程、确定噪声统计特性等。 6 3、 GSM数据处理 GSM 是 Global System For Mobile Communication 的简称,中文名称为全球移动通信系统,是 1992 年由欧洲标准化委员会统一推出的,以数字为主的第二带代移动电话系统。它采用数字通信技术、统一的网络标准,使通信质量得以保证,是全球最成熟的数字移动电话网络标准之一,用的是窄带TDMA,能提供 全面的语音、文字和数据业务,并提供一些诸如短消息服务、语音信箱、呼叫转移等的增值业务。 7 在本导游系统中, GPS定位信息交互是通过 GSM网络的短信来实现的, GSM模块同样是通过串口操作。我们使用的 GSM通信猫使用的是 法国 wavecom(微控科技) 生产的模块,双波段( 900/1800MHz)工作,支持通用 AT 命令。 AT 命令集是用于终端机(如 PC 机)和调制解调器( MODEM)之间通讯控制的一组命令。 AT 是ATTENTION 的缩写。所有 AT 命令都是以 ASCII 字符 “AT” 开始,并由回车符 或换行符 结束。我们用到的 AT命令及其功能介绍如下: - 13 - AT 命令 功能 AT+IPR=9600 设置波特率为 B9600 AT&W 保存设置 (未保存,断电后设置将还原 ) AT+CMGS=” 138*” 发送信息 AT+CMGR=1 读取第一条信息 AT+CMGD=1,4 删除所有信息 对 GSM模块的操作通过串口 ttyS0,打开串口后,对串口进行初始化,接着就可以进行收发信息的操作了。其流程图和代码如 图 1-5所示 : 图 1-5 发送信息代码如下: 接收信息代码如下: - 14 - 删除信息代码如下: 4、 GPS与 GSM 及地图显示部分 相互整合 在嵌入式 linux 下针对 GPS与 GSM 模块分别编码,成功实现各自功能后,需要在 qt 界面中将二者的代码相互整合,实现信息共享和命令的 互相 响应, 例如利用 GSM 模块 将 gps 接受的当前系统的位置信息以短信形式发送到另一个导游系统上,另一个导游系统利用 GSM 模块 接受位置信息后共享给电子地图绘制程序段,将第一个系统的位置在地图上显示出来。 此处主要应用了 qt 设计的最重要特点:信号 -槽机制 , 这个机制可以在对象之间彼此并不了解的情况下将它们的行为联系起来, 取代了老旧的开发套件所使用的粗糙的回调和消息映射。其次模块间任务的优先级别不同, GPS需要实时的不断接受信息,而 GSM 则只在需要的时候使用,因此要合适设计二者的运行方式,才能达到高效快捷的使用效果 - 15 - 三、 方案 选择 1 系统硬件的选择 1)本项目选择芯 片 ARM9-2410 作为系统处理器, ARM9 系列芯片具有 高性能、廉价、耗能低 等特点,目前 已经成功地广泛应用于嵌入控制、消费 /教育类多媒体、 dsp 和移动式应用等领域。 它的如下特点 能充分的完成本项 目的各项性能要求 : 5 级整数流水线,指令执行效率更高; 提供 1.1MIPS/MHz 的哈佛结 构; 支持 32 位 ARM 指令集和 16 位 Thumb 指令集; 支持 32 位的高速 AMBA 总线接口; 全性能的 MMU ,支持 Windows CE 、 Linux 、 Palm OS 等多种主流嵌入式操作系统; 支持数据 Cache 和指令 Cache ,具有更高的指令和数据处理能力。 8 2)本项目选择 GSM 模块来实现系统间的相互通信。 GSM 是当前应用最为广泛的移动电话标准。它是目前基于时分多址技术的移动 通信体制中成熟、完善、应用最广泛的一种系统,而短信息服务作为GSM 网络的一种基本业务,已得到越来越多的系统运营商和系统开发商的重视,基于这种业务的各种应用也蓬勃发展起来。利用 GSM 短信息 (SMS)进行电子导游之间的通讯具有 成本低、可靠性高等特点。利用 GSM 短信息系统进行无线通信还具有双向数据传输功能,性能稳定。 3) 本项目选择 XW-GPS100 作为 GPS 定位模块,它具有 速度快 、 灵敏度高 、 定位精度准 、 智能化多径检测与抑制 等优点。 GPS 即全球定位系统( Global Positioning System)是美国从 本世纪 70 年代开始研制,于 1994 年全面建成,具有在海、陆、空进行全方位实时三维导航与定位能力的新一代卫星导航与定位系统。 全球定位系统的主要特点包括全天候运行、全球覆盖、三维定速定时高精度、快速省时高效率、应用广泛多功能等等。 9GPS 是目前世界上运用最广泛,技术最成熟的定位技术,可充分实现本项目的定位要求。 2系统软件的选择 1) PC端系统的选择 进行嵌入式开发, PC 端系统选择 一般有两种方式,一 是选择双系统( Linux Windows XP) ;二 是选择虚拟机安装 LINUX。前者的优点是运行速度快,缺 点是切换系统的时候需要重新启动。后者的优点是可以 任意 切换系统,缺点是对硬件要求较高。 为了共享资料和方便查找网络资源,本项目选择方法 2,即在 Windows 主机上安装虚拟宿主机 ,作为开发环境。 2) 嵌入式操作系统的选择 本项目选择 嵌入式 Linux作为操作系统。 纯商业性的嵌入式操作系统主要有 WinCE和 VxWorks,开源的嵌入式操作系统有嵌入式 Linux,其他的还有 uC/OS-II 等。 经过比对几款系统之间的利弊选择 - 16 - 了嵌入式 Linux,它 是按照嵌入式操作系统的要求而设计的一种小型操作系统。相对于 WinCE、 VxWorks等 作系统 ,具有源码开放、易移植、模块化、资源丰富等优势;支持多线程、多进程; 支持多种平台 ,如 x86、 PowerPC、 ARM、 MIPS 等等。 10其 可伸缩的结构使 系统 适合于从简单到复杂的各种嵌入式应用 ; 另外它拥有有大量的开发工具,这些工具为嵌入式系统的开发提供了良好的开发环境也是我们选择linux 的主要原因之一。而与之相匹配的实现我们选择了 Qt 来实现各种应与程序的人机交互,力求整个系统更加人性化和智能化。 ( 1) QT/ Embedded 软件体系结构介绍 QTE 是著名的 Qt 库 开发商 Trolltech 公司开发的面向嵌入式系统的 Qt 版本 , 熟悉 Linux 界面设计的人一定对 QT 不会陌生 , 很多人正在使用的 KDE 就是基于 QT 图形库开发的 ,QT 自身则是通过使用Xlib 来实现其图像显示功能的。由于 Xlib 本身比较大 , 无法适应嵌入式开发的需要 ,Trolltech 公司设计了新的 QTE 图形库 , 它在底层彻底摒弃了 X lib, 仅采用 framebuffer 作为底层图形接口 , 而在上层依然保持原来 QT 的架构 , 使在很多 X Window 上设计的程序能非常方便的移植。 11 从 QT 到 QTE 的这个开发过程体现了软件开发中非常重要的一个思想 : 软件设计一定要保持易用性和可移植性。 QTE 是使用 C+语言设计的 , 虽然牺牲了一些效率 , 但在当前很多界面开发人员已经适应了 MFC 的开发模式时 , 使用 C+无疑会更方便开发人员 。在代码设计上 , Qt/Embedded 利用了 C+独有的机制 , 如继承、多态、模板等 , 具体实现非常灵活。但其底层代码由于追求与多种系统、多种硬件的兼容 , 代码补丁较多 , 风格稍显混乱。 2 . 软件总体架构 图 1-6 - 17 - 上 图 描述了 QTE 软件的总体架构。 QTE 共可分为三层架构 : a. 图形引擎和事件驱动层 : 这一层通过调用和直接访问 Linux 操作系统的 framebuffer 和输入设备驱动实现。 b. 上层图形层 : 图形引擎封装了对 FrameBuffer 的绘图操作 , 是低级别的绘图层 , 这一层抽象出对于显示设备的具体操作接口 ( 图形设备环境 ) , 如选择画刷、画线、画矩形、 alpha 操作等 , 为上层开发和用户提供了图形的抽象层。 c. 上层控件层 : 这一层通过公共抽象类 QWidget , 实现了用户所需的主要控件类。 3 . 图形引擎层的实现 这是整个系统最复杂的一部分 , 也使用了很多典型的设计模式。底层图形引擎基于 framebuffer , Framebuffer 是在 Linux 内核架构版本 2.2 以后推出的标准显示设备驱动接口。采用 mmap 系统调用 , 可以将 framebuffer 的显示缓存映射为可连续访问的一段内存储针。由于目前比较高级的 ARM 体系的嵌入式 CPU 中大多集成了 LCD 控制模块 , LCD 控制模块一般采用双 DMA 控制器组成的专用 DMA 通道。其中一个 DMA 可以自动从一个数据结构队列中取出并装入新 的参数 , 直到整个队列中的 DMA 操作都已完成为止。另外一个 DMA 与画面缓冲区相关 , 这部分由两个 DMA 控制器交替执行 , 并每次都自动按照预定的规则改变参数。虽然使用了双 DMA, 但这两个 DMA 控制器的交替使用对于 CPU 来说是不可见的。CPU 所获得的只是由两个 DMA 组成的一个“ 通道” 而已。在 Qt/Embedded 中 , Qscreen 类为抽象出的底层显示设备基类 , 其中声明了对于显示设备的基本描述和操作方式 , 如打开、关闭、获得显示能力、创建 GFX 操作对象等。另外一个重要的基类是 QGfx 类。 该类抽象出对于显示设备的具体操作接口 ( 图形设备环境 ) , 如选择画刷、画线、画矩形、 alpha 操作等。以上两个基类是 Qt/Embedded 图形引擎的底层抽象。其中所有具体函数基本都是虚函数 , Qt/Embedded 对于具体的显示设备 , 如 Linux 的framebuffer、 Qt Virtual Framebuffer 做的抽象接口类全都由此继承并重载基类中的虚函数实现。下图为 Qt/Embedded 中底层图形引擎实现结构。 图 1-7 - 18 - 如 图 1-7: 对于基本的 framebuffer 设备 , Qt/Embedded 用 QlinuxFbScreen 来处理。针对具体显示硬件 ( 如 Mach 卡、 Voodoo 卡 ) 的加速特性 , Qt/Embedded 从 QlinuxFbScreen 和图形设备环境模板类 QgfxRaster 继承出相应子类 , 并针对相应硬件重载相关虚函数。 Qt/Embedded 在体系上为 C/S 结构 , 任何一个 Qt/Embedded程序都可以作为系统中唯一的一个 GUI Server 存在。当应用程序首次以系统 GUI Server 的方式加载时 , 将建立 QWSServer 实体。此时调用 QWSServer:openDisplay () 函数创建窗体 , 在 QWSServer:openDisplay( ) 中对 QWSDisplay: : Data 中的 init ()加以调用 ; 根据QgfxDriverFactory 实体中的定义 ( QLinuxFbScreen)设置关键的 Qscreen 指针 qt_screen 并调用connect ()打开显示设备 ( dev/fb0) 。在 QWSServer 中所有对于显示设备的调用都由 qt_screen 发起。至此完成了 Qt/Embedded 中 QWSServer 的图形发生引擎的创建。当系统中建立好 GUI Server 后 , 其它需要运行的 Qt/Embedded 程序在加载后采用共享内存及有名管道的进程通信方式 , 以同步访问模式获得对共享资源 framebuffer 设备的访问权。随着嵌入式处理器运算能力的不断提高 , 对外设支持的 不断丰富 , 嵌入式 Linux 系统的应用也逐渐增多。 12QTE 延续了 Qt 在桌面系统的所有功能 , 丰富的API 接口和基于组件的编程模型使得嵌入式 Linux 系统中的应用程序开发更加便捷。 由于 Qt/Embedded 本身面向高端的 手持设备和移动设备 , 将成为未来嵌入式系统的主要 GUI。 3 系统整个 程序流程的 设计 作 为一个 同时使用 GPS 和 GSM 模块的系 统, 如何 处理 好 收发信息之间的同步关系和数据交互 这个问题特别重要,本项目使用 是使用定时器 的方式来实现功能 。 GPS 和 GSM 的相关程序用 C 语言编写, 然后与 QT 图形界面 C+代码整合在一起,核心 程序流程 下图 所示。主要包括系统初始化、 GPS 数据处理、GSM 数据处理 3 部分。 如下图 1-8 所示。 GPS 数据处理: 通过定时器动态实时地接受 GPS 数据,每一次从完整数据中提取出所需的基本信息如时间,经纬 度等内容,然后通过定时器触发显示到界面上,考虑到人的肉眼分辨频率,数据刷新次数不易过快,同时也因为人的步行速度较慢,不需要达到车载导航时的要求,因此界面显示设置为每 3 秒钟刷新一次信息。 GSM 数据处理 主机选择 GSM 功能,则弹出新的对话框,将当前系统的地理位置信息传送给通讯模块,以短信形式发送出去,同时,通讯模块循环以查询方式来检测是否有别人给本机发送信息,如果有,则显示提示信息后自动接收,然后在电子地图上显示出来,如果接受信息不是位置信息而是其他信息内容则报错提示然后退出子程序继续查询。 GSM 的 短信业务 SMS 利用信令信道传输,它不用拨号建立连接,把要发送的信息加上目的地址和其他控制信息发到短信服务中心,经 短信服务中心完成存储再转发送给目标机,这 - 19 - 种特性适合数据远程传送 。 13本 项目 采用的是 PDU Mode,采用 AT 命令完成短信息的读取和发送。如发送一条消息可以采用 AT+CMGS 命令,格式如下: AT+CMGS=+ 系统上电后, ARM 微控制器开始执行主程序。在主程序中,首先进行系统初始化,初始化的内容包括 GPS 模块和 GSM 模块的基本参数设 置,然后进入主程序的数据处理部分 ,后文将有详细的论述,此处不展开讲解。 N Y Y 图 1-8 设置共享方手机号码 弹出 GSM对话框 若“介绍”功能键按下 每 3 秒触发定时器,刷新一次 ,显示信息到界面, 绘制位置点到地图上 循环提取出所需数据并进行优化处理提高精度。 自动接受 GPS信息 系统初始化,设置串口,读入地图主界面 开始 提取当前位置信息 若“评分”功能键按下 若“ GSM”功能键按下 发送 点击“关闭”返回主界面 弹出 学校介绍 对话框 弹出 评分系统 对话框 点击按 钮浏览信息 点击按钮进行投票统计 点击“关闭”返回主界面 点击“关闭”返回主界面查询是否有队友位置信息 判断是否为地理信息显示 提示信息,自动接收 Y 绘制对方位置点到地图上 返回主界面 是 是 否 等待 下次查询 - 20 - 四、系统 总体 开发 流程图 及进度 1、 系统 总体 开发流程图 ,如图 1-9 所示。 图 1-9 ARM9-2410 开发板 Bootloader 的移植 裁剪编译 Linux2.4+Qtopia 制作系统镜像文件 烧录镜像文件,并能成功在开发板上运行 QT 环境的配置和搭建 GPS 模块串口通信的实 现、制作电子地图 应用程序的 UI设计 ,读取地图 GSM 模块发送短信功能实现 界面与模块之间的整合 测试,调试,完成 软件系统设计 硬件系统设计 安装交叉编译工具链 - 21 - 2、项目 整体进度表及工作涉及工作量 本 项目 整体 进度表 如下图 1-10 所示, 主要工作量和涉及相关 知识为: 系统平台搭建(硬件 +软件): 嵌入式系统开发, LINUX操作系统应用。 GPS、 GSM 模块使用部分: 单片机,微机接口,主要用于串口操作实现信息提取、查询,进制计算转换。 地图部分: 使用 MAPINF

温馨提示

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

评论

0/150

提交评论