基于ARM-Linux平台的GPS定位系统_第1页
基于ARM-Linux平台的GPS定位系统_第2页
基于ARM-Linux平台的GPS定位系统_第3页
基于ARM-Linux平台的GPS定位系统_第4页
基于ARM-Linux平台的GPS定位系统_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

基于ARM-Linux平台的

GPS定位系统课题简介GPS系统的硬件设计系统的软件开发应用程序移植和系统测试课题总结一、课题简介一、课题简介

GPS全球定位系统广泛应用于各个领域,而GPS系统与嵌入式相结合,实现它的便捷性。是目前研究的主流,但是嵌入式GPS定位导航系统在系统平台、开发环境、应用软件上几乎都处在一个商业化封闭的环境,造成了开发成本昂贵、安全性低、数据更新交换困难等问题。

本文通过嵌入式GPS定位系统的相关理论、方法和技术,提出了一套基于嵌入式Linux的GPS定位系统的设计方案。对设计和开发基于开放系统平台和数据标准的,安全稳定,低成本的嵌入式GPS定位系统做出有益探索。

二、GPS系统的硬件设计S3C2440电源时钟晶振SDRAMNandFlashGPSCS8900A复位电路J-LinkLCDJTAG串口S3C2440电源时钟晶振SDRAMNandFlashGPSCS8900A复位电路J-LinkLCD

GPS系统的软件设计文件系统uboot引导程序Linux内核QtopiaGPS应用程序

1.建立软件开发环境安装串口工具minicom创建QT开发平台创建交叉编译环境增加g++3.4.6g++4.4.5的可选项PC版本的qtopia-2.2.0串口设置设置并保存2.建立嵌入式Linux系统平台启动U-Boot后显示信息编译移植引导程序U-Boot1.3.2编译移植Linux2.6.32内核制作YAFFS根文件系统带qte的yaffs2文件系统

GPS信息显示GPS信息提取GPS用户界面串口设置3.GPS应用程序

GPS用户界面

设置一下环境变量exportQPEDIR=/root/yizhi/qtopia-free-2.2.0/qtopiaexportQTDIR=/root/yizhi/qtopia-free-2.2.0/qt2exportLD_LIBRARY_PATH=$QPEDIR/lib:$QTDIR/lib:$DQTDIR/lib:$LD_LIBRARY_PATH在Linux下的/opt/EmbedSky/Qte/x86_qtopia/pro的文件中新建一个first的文件夹用来存放以后所要用的程序。在终端中输入#$QTDIR/bin/designer&启动Qtdesigner输入ls可以查看该目录下的文件可见已产生Makefile文件Makefile文件:GNUmake程序在执行时默认读取的配置文件。记录了文件之间的关系。创建main.cpp文件cfsetispeed(&opt,B4800);cfsetospeed(&opt,B4800);波特率设置tcgetattr(fd,&opt);读串口参数配置opt.c_cflag&=~PARENB;opt.c_iflag&=~INPCK;设置奇偶校验

opt.c_cflag&=~CSTOPB;1位停止位opt.c_cc[VTIME]=150;opt.c_cc[VMIN]=0;设置超时时间opt.c_cflag&=~CSIZE;opt.c_cflag|=CS8;设置数据位串口设置fd=open("/dev/ttySAC1",O_RDWR);if(fd<0){qWarning("GPS::gps_start():open_portttySAC1error!");

NAME-0183协议当前卫星信息$GPGGA推荐定位信息数据格式$GPRMC地面数据信息$GPVTG当前卫星信息$GPGSA含经纬度的地理位置$GPGLL信号经过GPS系统后以NAME-0183协议输出的,所以要想获取定位信息就要了解NAME-0183协议内容,并用程序解析出来。NAME-0183协议如下,GPGGA适合我所要提取信息,所以我选GPGGA进行信息获取。GPS信息提取$GPGGA的帧格式$GPGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M(10),M,(11),(12),*(CR),(LF)(1)标准定位时间:##时##分##秒(2)纬度(格式ddmm.mmmm即##度##.####分)(3)N/S南或北表示纬度即北纬37度54.9756分(4)经度(格式ddmm.mmmm即##度##.####分)(5)E/W东或西表示经度即东经109度28.4278分(6)质量因子(0=没有定位,1=实时GPS,2=差分GPS)(7)可以应用卫星个数(0--8)(8)水平精度因子(1.0--99.9)水平精度因子=1.0(9)天线高程天线高程20.6米(10)大地椭球面相对海平面的高度(-999.9---9999.9,单位:米)(11)差分GPS数据年龄,实时GPS时无(12)差分某准站号(0000---1023),实时GPS时无flag_gps=1; qWarning("tmpsuccess!");if(buffer[2]=='G'&&buffer[3]=='G'&&buffer[4]=='A'){ ggainfo.bIsGPGGA=1; qWarning("thisisGGAsuccess!");读取GPGGA成功no=6; for(i=0;i<4;i++) Hour[i]=0; Hour[0]=buffer[no]; Hour[1]=buffer[no+1];no+=2;//no=8 for(i=0;i<4;i++) Minu[i]=0; Minu[0]=buffer[no]; Minu[1]=buffer[no+1];no+=2;for(i=0;i<4;i++) Second[i]=0;Second[0]=buffer[no];Second[1]=buffer[no+1];ggainfo.hour=atoi(Hour);ggainfo.min=atoi(Minu);ggainfo.sec=atoi(Second);ggainfo.secFrac=0;ggainfo.bjhour=ggainfo.hour+8;

no=17;for(i=0;i<4;i++) Degree[i]=0;Degree[0]=buffer[no];Degree[1]=buffer[no+1];no+=2;for(i=0;i<8;i++) Minute[i]=0;for(i=0;i<7;i++) Minute[i]=buffer[no+i];ggainfo.latitude=(atof(Minute))/60.0+atoi(Degree);ggainfo.latNS=buffer[27];if(ggainfo.latNS=='N') flag_gps=1;else flag_gps=0;no=29;for(i=0;i<4;i++) Degree[i]=0;Degree[0]=buffer[no];Degree[1]=buffer[no+1];Degree[2]=buffer[no+2];no+=3;for(i=0;i<8;i++) Minute[i]=0;for(i=0;i<7;i++) Minute[i]=buffer[no+i];ggainfo.longitude=(atof(Minute))/60.0+atoi(Degree);ggainfo.lgtEW=buffer[40];if(ggainfo.lgtEW=='E')flag_gps=1;else flag_gps=0;no=51;for(i=0;i<4;i++) Height[i]=0;if(buffer[no]=='-'){Height[0]=buffer[no+1];Height[1]=buffer[no+2];Height[2]=buffer[no+4];ggainfo.altitude=(atof(Height))/10.0; }else{Height[0]=buffer[no];Height[1]=buffer[no+1];Height[2]=buffer[no+3];ggainfo.altitude=(atof(Height))/10.0; }高度信息T_time->setText(tr("BJtimeis:%1:%2:%3").arg(ggainfo.bjhour).arg(ggainfo.min).arg(ggainfo.sec));T_time2->setText(tr("UTCtimeis:%1:%2:%3").arg(ggainfo.hour).arg(ggainfo.min).arg(ggainfo.sec));显示BJ间UTC间GPS信息显示T_statellite->setText(tr("statellites:%1").arg(ggainfo.satellites));T_hight->setText(tr("Height:%1M").arg(ggainfo.altitude));显示高度单位米if(ggainfo.latNS=='N')T_latitude->setText(tr("Latitudeis:N:%1'").arg(ggainfo.latitude));if(ggainfo.latNS=='S')T_latitude->setText(tr("Latitudeis:S:%1'").arg(ggainfo.latitude));if(ggainfo.lgtEW=='E')T_longitude->setText(tr("Longitudeis:E:%1'").arg(ggainfo.longitude));if(ggainfo.lgtEW=='W')T_longitude->setText(tr("Longitudeis:W:%1'").arg(ggainfo.longitude));显示南北东西Qtopia的移植五、应

温馨提示

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

评论

0/150

提交评论