基于winceGPS_第1页
基于winceGPS_第2页
基于winceGPS_第3页
基于winceGPS_第4页
基于winceGPS_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、本科生毕业论文(设计)题 目: 基于wince的GPS系统设计 学生姓名: 谢 佳 红 学 号: 200911020107 专业班级: 电信09101班 指导教师: 王 先 春 完成时间: 2013年5月10日 目 录摘要1第一章 引言21.1课题背景21.2课题意义3第二章 GPS硬件系统方案设计42.1 主板芯片的选择42.2 GPS搜星选择42.3 系统设计方案42.3.1硬件系统设计框图52.3.2开发板构成52.3.3GPS模块8第三章 软件系统设计123.1 装载wince操作系统123.2 应用程序流程图133.2.1 GPS主窗口流程图133.3开发环境及应用程序各个部分源代码

2、153.3.1软件开发环境介绍153.3.2源代码开发过程介绍16第四章 系统结果测试234.1将程序下载到ARM开发板234.2使用ActiveSync将程序下载到开发板上244.3程序的运行结果25第五章 结论28答谢28参考论文28基于wince的GPS系统设计 基于wince的GPS系统设计电子信息科学与技术专业学生:谢佳红指导老师:王先春摘要:Windows CE操作系统是大部分手持移动设备的操作系统,其风格类似PC机,本系统是以wince系统为核心的嵌入式设备,TQ2440开发板与GPS模块相连,应用程序通过访问相应的串口来获取相应的GPS数据,应用程序把读取到的有效GPS数据进行

3、解析并把其显示到程序界面上,从而实现定位的功能。关键字:嵌入式、wince、GPS、TQ2440开发板System design of GPS based on WinCEElectronics and Information Science and TechnologyCandidate:Xie JiahongAdvisor:Wang XianchunAbstract: Windows CE operating system is the operating system most handheld mobile devices.Which style is similar to the P

4、C machine. This system is embedded equipment based on WinCE system. TQ2440 board link to GPS module Application by accessing the corresponding serial port to obtain data corresponding to the GPS. Application to GPS data read to parse and display to the program interface. Result to achieve the positi

5、oning function.Keywords:embed WinCE GPS TQ2440 Experimental board.第1章 引言1.1课题背景 全球定位系统(Global Positioning System - GPS)是美国从本世纪70年代开始研制,历时20年,耗资200亿美元,于1994年全面建成,具有在海、陆、空进行全方位实时三维导航与定位能力的新一代卫星导航与定位系统。随着全球定位系统的不断改进,硬、软件的不断完善,应用领域正在不断地开拓,目前已遍及国民经济各种部门,并开始逐步深入人们的日常生活。因其在众多领域的应用,使得研究其应用方法是很有必要的,并且随着科学技术的

6、发展,产品的发展趋势也越来越倾向于小巧,便携,节能,功能齐全的方向发展着.就这一发展趋势,本文设计了一个带有操作系统的GPS显示系统的嵌入式设备.下面就相关知识做一个简单的介绍.1.1.1嵌入式系统定义 国内对嵌入式系统的一般定义是:以应用为中心,一计算机技术为基础,软硬件可剪切,从而能够适应实际应用中对功能,可靠性,成本,体积,功耗等眼科的要求的专业计算机系统.1.1.2嵌入式系统的组成 嵌入式系统通常是由嵌入式处理器,外围设备,嵌入式操作系统和应用软件等几大部分组成.1. 嵌入式处理器嵌入式处理器是嵌入式系统的核心部件.嵌入式处理器与通用处理器的最大不同点在于嵌入式处理器大多工作在为特定的

7、用户群设计的系统中.它通常把通用计算机中许多部件集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,并具有高效率,高可靠性等特征.2. 外设备 外围设备是指在一个嵌入式系统中,嵌入式处理器以外的完成存储,通信,调试,显示等辅助功能的其他部件.根据外围设备的功能可分为以下3类:1)存储器,2)接口,3)人机交互3. 嵌入式操作系统 在大型嵌入式应用系统中,为了使嵌入式开发更兼方便,快捷,需要具备一种稳定,安全的软件模块集合,用来管理存储器分配,中断处理,任务间通信和定时器响应,以及提供多任务处理等,这样的软件模块集合就是嵌入式操作系统.嵌入式操作系统的引入大大扩展了嵌入式系统的功能,方便了应用软

8、件的设计,但同时也占用了嵌入式系统的宝贵资源.一般在比较大型或多任务的应用场合,才考虑使用嵌入式操作系统.4. 应用软件 嵌入式系统的应用软件是针对特定的实际专业领域的,基于相应的嵌入式硬件平台,并能完成用户预期的任务的计算机软件.用户的任务可能有时间和精度的要求,因此,有些应用软件需要嵌操作系统的支持.1.1.3嵌入式系统的特点嵌入式系统是应用于特定环境下,面对专业领域的应用系统,它具有以下特点:1) 功耗低2) 体积小3) 集成度高4) 成本低1.2课题意义 通过以上介绍,在WINDOWS CE操作系统上开发显示从GPS模块上下载的位置信息,这可以为以后开发诸如车载导航系统,防盗定位系统等

9、产品提供有力的参考.从这个设计中,我们不仅能够了解和掌握有关GPS方面的有关信息,还能掌握在WINDOWS CE系统上,如何编写程序,以及深刻理解操作系统的基本原理.在通信领域中,如何通过嵌入式系统在与各种器件通信. 第二章 GPS硬件系统方案设计 根据题目的要求,确定一下方案:采用又由S3C2440做主控芯片的TQ2440开发板做主要载体,再配上GPS模块构成整体的硬件结构,主机搭载wince6.0操作系统,已达到我们所需要的软硬件要求. 这种方案能实现系统进行定位,可满足对系统的各项要求.2.1 主板芯片的选择 主机的主控芯片市面上流行的主要有基于arm7的s3c2410和基于arm9的s

10、3c2440以及基于arm11以上的ok6410等,由于我们是基于wince系统,arm7主要用于工业控制更多的时候我们只把它当做“高级的单片机”用,对于有操作系统的消费类电子它已不太合适,而arm11主要是是用于跑android系统这样的智能设备,所以说arm9对我们所要实现的设备是完全可以的,基于以上,我们选择以s3c2440作为主板芯片,选取TQ2440开发板作为我们的主板.2.2 GPS搜星选择 方案一 选用usb蓝牙gps,需要适配蓝牙模块,将蓝牙作为串口. 方案二 选用串口gps,TQ2440提供了一个串口,选择其作为gps的接口.这里我们选择串口gps模块.2.3 系统设计方案

11、本系统由TQ2440开发板和GPS模块构成.2.3.1硬件系统设计框图如图一所示:基于wince的TQ2440开发板GPS模块LCD触摸显示屏GPS软件系统图一2.3.2开发板构成: TQ2440开发板是由s3c2440a作为主控芯片,外加SDRAM 作为内存芯片,以及3.3V供电电路、复位电路、Jtag电路、Nor/Nand falsh启动选择电路、串口电路等构成,以下简单介绍其中部分相关芯片及其电路.主控芯片s3c2440a芯片如下,它由128个管脚组成,内部集成了LCD控制器、UART控制器、Jtag控制器、nand 控制器等。1、s3c2440A芯片如下:图二2.、供电电路如下:图三

12、3.3v电源电路图四 1.25v电源电路3、 复位电路如下:图五 复位电路4、Jtag接口电路如下:图六5、 开发板带有一个五线异步接口和一个UART扩展接口,其电路如下:图七6、 lcd液晶屏接口电路:图八其中跳线J4可以在3.3v与5v间选择液晶屏的供电电压.7、 系统时间电路: 系统时钟源直接采用外部晶振,内部PLL电路可以调整系统时钟,使系统运行速度更快.系统时钟电路如下图图九 8、 usb接口电路 Usb模块集成在s3c2440A芯片中,所以使用S3C2440A时,可以直接利用其中的usb模块。实验板上有个HOST USB1.1接口和一个Device USB1.1接口,USB接口电路

13、如下:图十以上为开发板基本的一些模块,当然还有一些其他的电路比如说SD卡接口电路、IIC接口电路等在这不再敖述。2.3.3GPS模块GPS信息协议: NMEA是全国海洋电子协会(National Marine Electronics Association);国际海上电子协会(National Marine Electronics Association)或(National Marine Electronics Association)获得国际海事电子协会缩写,同时也是数据传输标准工业协会,在这里,实际上应为NMEA 0183。它是一套定义接收机输出的标准信息,有几种不同的格式,每种都是独立

14、相关的ASCII格式,逗点隔开数据流,数据流长度从30-100字符不等,通常以每秒间隔选择输出,最常用的格式为GGA,它包含了定位时间,纬度,经度,高度,定位所用的卫星数,DOP值,差分状态和校正时段等,其他的有速度,跟踪,日期等。NMEA实际上已成为所有的GPS接收机和最通用的数据输出的格式。NMEA 数据如下:$GPGGA,111342.000,3937.3032,N,11611.6046,E,1,05,2.0,45.9,M,-5.7,M,0000*77 $GPRMC,111342.000,A,3958.3032,N,11629.6046,E,15.15,359.95,070306,A*5

15、4$GPVTG,359.95,T,M,15.15,N,28.0,K,A*04$GPGGA,121253.000,3937.3090,N,11611.6057,E,1,06,1.2,44.6,M,-5.7,M,0000*72$GPGSA,A,3,14,15,05,22,18,26,2.1,1.2,1.7*3D$GPGSV,3,1,10,18,84,067,23,09,67,067,27,22,49,312,28,15,47,231,30*70$GPGSV,3,2,10,21,32,199,23,14,25,272,24,05,21,140,32,26,14,070,20*7E$GPGSV,3,3

16、,10,29,07,074,30,07,163,28*7D说明:NMEA0183 格式以“$”开始,主要语句有GPGGA,GPVTG,GPRMC 等1、GPS DOP and Active Satellites(GSA)当前卫星信息$GPGSA,A,3,14,15,05,22,18,26,2.1,1.2,1.7*3D$GPGSA,模式:M = 手动, A = 自动。定位型式1 = 未定位, 2 = 二维定位, 3 = 三维定位。PRN 数字:01 至32 表天空使用中的卫星编号,最多可接收12 颗卫星信息。 PDOP 位置精度因子(0.599.9) HDOP 水平精度因子(0.599.9) V

17、DOP 垂直精度因子(0.599.9) Checksum.(检查位).2、GPS Satellites in View(GSV)可见卫星信息$GPGSV, ,?,$GPGSV,3,3,12,25,00,000,00,20,00,000,28,00,000,00,30,-01,000,00*5A GSV 语句的总数 本句GSV 的编号 可见卫星的总数,00 至12。 卫星编号, 01 至32。卫星仰角, 00 至90 度。卫星方位角, 000 至359 度。实际值。讯号噪声比(C/No), 00 至99 dB;无表未接收到讯号。Checksum.(检查位).3、Global Positionin

18、g System Fix Data(GGA)GPS 定位信息$GPGGA,M,M,*hh UTC 时间,hhmmss(时分秒)格式 纬度ddmm.mmmm(度分)格式(前面的0 也将被传输) 纬度半球N(北半球)或S(南半球) 经度dddmm.mmmm(度分)格式(前面的0 也将被传输) 经度半球E(东经)或W(西经) GPS 状态:0=未定位,1=非差分定位,2=差分定位,6=正在估算 正在使用解算位置的卫星数量(0012)(前面的0 也将被传输) HDOP 水平精度因子(0.599.9) 海拔高度(-9999.999999.9) 地球椭球面相对大地水准面的高度 差分时间(从最近一次接收到差

19、分信号开始的秒数,如果不是差分定位将为空) 差分站ID 号00001023(前面的0 也将被传输,如果不是差分定位将为空)4、Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐定位信息$GPRMC,*hh UTC 时间,hhmmss(时分秒)格式 定位状态,A=有效定位,V=无效定位 纬度ddmm.mmmm(度分)格式(前面的0 也将被传输) 纬度半球N(北半球)或S(南半球) 经度dddmm.mmmm(度分)格式(前面的0 也将被传输) 经度半球E(东经)或W(西经) 地面速率(000.0999.9 节,前面的0 也将被传输) 地面航向(

20、000.0359.9 度,以真北为参考基准,前面的0 也将被传输) UTC 日期,ddmmyy(日月年)格式 磁偏角(000.0180.0 度,前面的0 也将被传输) 磁偏角方向,E(东)或W(西) 模式指示(仅NMEA0183 3.00 版本输出,A=自主定位,D=差分,E=估算,N=数据无效)5、Track Made Good and Ground Speed(VTG)地面速度信息$GPVTG,T,M,N,K,*hh 以真北为参考基准的地面航向(000359 度,前面的0 也将被传输) 以磁北为参考基准的地面航向(000359 度,前面的0 也将被传输) 地面速率(000.0999.9 节

21、,前面的0 也将被传输) 地面速率(0000.01851.8 公里/小时,前面的0 也将被传输) 模式指示(仅NMEA0183 3.00 版本输出,A=自主定位,D=差分,E=估算,N=数据无效)GPS模块电路:本设计主要用HX-87 manual-GPS ENGINE BOARD模块作为GPS模块.产品介绍:SIRF HX-87 series GPS模块具有高精度,高性能的SIRF STarIII 芯片组解决方案.该模块在同一时间跟踪20个人造卫星,同时提供快速时钟校准和1赫兹程序导航控制及电源管理系统.全球定位系统所需的硬件连接图:图十一第3章 软件系统设计3.1 装载wince操作系统开

22、始时用uboot启动开发板,然后通过uboot命令一步一步的实现wince镜像的烧写,在这里我们是首先通过nor flash的方式启动开发板。基本的步骤如下:第一步烧写stepldr镜像:在命令列表里选择: 【1】Download u_boot or STEPLDR.nb1 or other bootloader to Nand Flash.第二步烧写eboot镜像:在命令列表中选择: 【2】Download Eboot(eboot.nb0)to Nand Flash第三步烧写logo镜像:在命令列表中选择: 【b】Download LOGO Picture.bin to Nand Flash

23、第四步 烧写NK镜像: 关闭TQ2440开发板电源选择由nand flash重新启动分别通过:命令b-命令9-命令u完成NK镜像的烧写当然除了上述主要步骤外还需要其他的地方配合比如USB下载软件DNW的配合,在此我们不再敖述,下面我们主要介绍一下应用程序的开发。3.2 应用程序流程图 在本系统设计中,软件系统是我们非常重要的一环,本系统主要由三个部分组成分别是:GPS主窗口处理、串口设置、GPS数据读线程,下面介绍软件系统主要流程思想.3.2.1 GPS主窗口流程图图十二3.2.2串口设置流程图十三 在我们的串口设置中,我们做了些出错处理,在此我们没有列出来.3.2.3 GPS读线程流程图十四

24、3.3开发环境及应用程序各个部分源代码3.3.1软件开发环境介绍Visual Studio 2005是基于.NET2.0框架的。它同时也能开发跨平台应用程序,如开发使用wince的程序等。总体来说是一个非常庞大的软件,甚至包含代码测试功能。这个版本的Visual Studio 包含有众多版本,分别面向不同的开发角色。同时还永久提供免费的Visual Studio Express 版本。.Microsoft Windows CE .NET 是Windows CE 3.0 的后续产品,它不仅是一个功能强劲的实时嵌入式操作系统,而且提供了众多强大工具,允许用户利用它快速开发出下一代的智能化小体积连接

25、设备。借助于完善的操作系统功能和开发工具,Windows CE .NET 为开发人员提供了构建、调试和部署基于Windows CE.NET 的定制设备所需的一切特性。平台开发工具Platform Builder 是一个完全集成的开发环境(IDE),并且包括一个软件开发工具包(SDK)导出工具。Windows CE .NET 支持Microsoft eMbedded Visual C+和Microsoft Visual Studio .NET,为面向Microsoft .NET Compact Framework(Microsoft .NET Framework 的一个子集)的Web 服务和应用

26、程序开发提供了一个完整的开发环境。利用这些工具,开发人员可以迅速开发出能够在最新硬件上运行各种应用程序的智能化设计。3.3.2源代码开发过程介绍1. 在PC机的Windows中打开vs2005集成开发环境。2. 打开环境后,选择文件,然后选择新建,在项目选项中选择智能设备项目在勾上空项目,在Project Name框中填写本工程的名称:myGPS;再选择当前Win32(WCE ARMV4I),建立工程名为myGPS的工程.图十五 新建项目界面建立好工程后,在资源中添加一个设置串口的对话框:图十六 串口设置对话框3. 在myGPS工程项目中创建gps.h头文件,主要内容如下:LRESULT CA

27、LLBACK MainWndProc (HWND, UINT, WPARAM, LPARAM);/主窗口处理函数BOOL CALLBACK DialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );/串口处理函数DWORD ReadThread(LPVOID lpParameter);/读线程函数LRESULT DoPaintMain (HWND, UINT, WPARAM, LPARAM);/主窗口刷新处理函数LRESULT DoDestroyMain (HWND, UINT, WPARAM, LPARAM);/主

28、窗口销毁处理函数LRESULT DoCreate(HWND, UINT, WPARAM, LPARAM);/主窗口创建处理函数LRESULT DoCommand(HWND,UINT,WPARAM,LPARAM);/主窗口命令处理函数void SetCom(HWND hh);/串口设置函数int findchar(char *s,int len,int i);/在GPS解析函数内用来寻找,的函数int findstr(TCHAR *s,TCHAR *s1);/在GPS数据中寻找字串的函数BOOL GPS_jiexi(TCHAR *buf);/GPS解析函数4. 在工程中新建gps.c文件,在该文

29、件中主要实现头文件声明的各个函数,下面对主要函数进行介绍:int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) MSG msg; int rc = 0; / HWND hwndMain; hwndMain = InitInstance (hInstance, lpCmdLine, nCmdShow); if (hwndMain = 0) return 0x10; while (GetMessage (&msg, NULL, 0, 0) Translate

30、Message (&msg); DispatchMessage (&msg); / Instance cleanup return TermInstance (hInstance, msg.wParam);这个是整个应用程序的入口函数,主要用来创建主窗口并实现消息循环.串口设置函数SetCom()的主体部分如下:/配置串口DCB PortDCB; PortDCB.DCBlength = sizeof(DCB); GetCommState(hcom,&PortDCB);PortDCB.BaudRate=Mbuad;PortDCB.StopBits=Mstop;PortDCB.Parity=Mjo

31、; PortDCB.ByteSize=Mdata;if (! SetCommState(hcom, &PortDCB) /配置串口失败MessageBox(hdlg1,TEXT(串口配置失败),TEXT(错误),MB_OK); return ;/配置超时值COMMTIMEOUTS CommTimeouts;GetCommTimeouts(hcom, &CommTimeouts);CommTimeouts.ReadIntervalTimeout = MAXDWORD; CommTimeouts.ReadTotalTimeoutMultiplier = 10; CommTimeouts.ReadT

32、otalTimeoutConstant = 10; if (!SetCommTimeouts(hcom, &CommTimeouts) MessageBox(hdlg1,TEXT(串口设置超时失败),TEXT(错误),MB_OK); return; GPS数据读线程函数如下:DWORD ReadThread(LPVOID lpParameter)HWND hwnd=(HWND)lpParameter;/HANDLE hPort = *(HANDLE*)pParam;int i=-1; BYTE Byte; int iCounter = 0;DWORD dwBytes; SetCommMask

33、(hcom, EV_RXCHAR); /只接收字符事件 while (hcom != INVALID_HANDLE_VALUE) DWORD dwCommStatus; WaitCommEvent(hcom, &dwCommStatus, 0); /等待事件发生 SetCommMask (hcom, EV_RXCHAR); /重新设置要等待的信号 do ReadFile(hcom, &Byte, 1, &dwBytes, 0); if(dwBytes = 1) /如果读到了数据 bufferiCounter=(TCHAR)Byte; /存入buffer iCounter+; while (dw

34、Bytes = 1); /读到有效数据if(iCounter = 0) /没接到数据 continue; else /数据读完了且数据有效 GPS_jiexi(buffer); /解析数据SetWindowText(GetDlgItem(hwnd,IDC_GPSDATE),buffer); /显示SetWindowText(GetDlgItem(hwnd,IDC_STATE),val);/val代表是否有效SetWindowText(GetDlgItem(hwnd,IDC_JINDU),Edatatext);/显示东经度数 SetWindowText(GetDlgItem(hwnd,IDC_W

35、EIDU),Ndatatext);/显示北纬度etWindowText(GetDlgItem(hwnd,IDC_TIMER),timetext);/显示时间SetWindowText(GetDlgItem(hwnd,IDC_DATE),datetext);/显示日期 return 0;下面介绍GPS解析函数:BOOL GPS_jiexi(TCHAR *buf) /GPS数据解析函数 int i,m,n;int pos1,pos2,loc1,loc2; char flag1=0,flag2=0;TCHAR *temp1,*temp2; loc1=findstr(buf,TEXT($GPGGA);

36、 /寻找buffer里的$GPGGA后的位置if(loc1=-1)return FALSE;elsetemp1=buf+loc1; pos1=findchar(temp1,70,1); /寻找第一个”,”逗号 for(m=0;m6;m+) timem=temp1pos1+; /存入时间 timem=0; wsprintf(timetext,TEXT(%c%c时%c%c分%c%c秒),time0,time1,time2,time3, time4,time5); pos1+=5; for(m=0;m9;m+) Ndatam=temp1pos1+; /存入纬度 Ndatam=0; wsprintf(Ndatatext,TEXT(N%c%c%s),Ndata0,Ndata1,&Ndata2); pos1+=3; for(m=0;m10;m+) Edatam=temp1pos1+;/存入经 Edatam=0; wsprintf(Edatatext,TEXT(E%c%c%c%s),Edata0,Edata1,Edata2,&Edata3); flag1=1;loc2=findstr(buf,TEXT($GPRMC);/寻找$GPRMC字符后的位置if(loc2=-1) return FALSE;elsetemp2=buf+loc2;p

温馨提示

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

评论

0/150

提交评论