嵌入式系统GPS模块设备编程

本文介绍了如何在嵌入式系统中编程处理GPS模块,特别是使用FL2440开发板和Linux-3.0内核,结合NMEA-0183协议解析GPS数据。通过分析`analysis.c`中的`gps_analysis`函数,展示了如何从GPS数据包中提取GPRMC信息,并提供了打印和解析这些信息的示例代码。
摘要由CSDN通过智能技术生成


GPS是英文Global Positioning System(全球定位系统)的简称。GPS起始于1958年美国军方的一个项目,1964年投入使用。利用GPS定位卫星,在全球范围内实时进行定位导航的系统,称为全球卫星定位系统,简称GPS。GPS是由美国国防部研制建立的一种具有全方位、全天候、全时段、高精度的卫星导航系统,能为全球用户提供低成本、高精度的三维位置、速度和精确定时等导航信息,是卫星通信技术在导航领域的应用典范,它极大地提高了地球社会的信息化水平,有力地推动了数字经济的发展。

NMEA-0183协议

NMEA是National Marine Electronics Association(美国国家海事电子协会)的缩写。NMEA-0183协议是目前GPS接收机上使用最广泛的协议,大多数常见的GPS接收机、GPS数据处理软件、导航软件都遵守或者至少兼容这个协议。

开发板平台: FL2440 
Linux内核版本: linux-3.0 
开发模块: FIT-GPS-SF2820 

analysis.c GPS数据解析函数:

  1 /*********************************************************************************
  2  *      Copyright:  (C) 2016 huangjiaming<421380303@qq.com>
  3  *                  All rights reserved.
  4  *
  5  *       Filename:  analyse_gps.c
  6  *    Description:  This file 
  7  *                 
  8  *        Version:  1.0.0(2016年04月02日)
  9  *         Author:  huangjiaming <421380303@qq.com>
 10  *      ChangeLog:  1, Release initial version on "2016年04月02日 10时43分34秒"
 11  *                 
 12  ********************************************************************************/
 13 
 14 #include <stdio.h>
 15 #include <string.h>
 16 #include <stdlib.h>
 17 #include <sys/types.h>
 18 #include <errno.h>
 19 #include <sys/stat.h>
 20 #include <fcntl.h>
 21 
 22 #include <gps.h>
 23 
 24 //从GPS数据包中抽取出GPRMC最小定位信息
 25 int gps_analysis(char *buff,GPRMC *gps_date)
 26 {
 27     char *ptr=NULL;
 28 
 29     if(gps_date==NULL)
 30         return -1;
 31 
 32     if(strlen(buff)<10)
 33         return -1;
 34 
 35     if(NULL==(ptr=strstr(buff,"$GPRMC")))
 36         return -1;

 37 
 38     sscanf(ptr,"$GPRMC,%d.000,%c,%f,N,%f,E,%f,%f,%d,,,%c*",&(gps_date->time),&(gps_date->pos_state),&(gps_date->latitude),&(gps_date->longitude),
    &(gps_date->speed),&(gps_date->direction),&(gps_date->date),&(gps_date->mode));
 39     return 0;
 40 }
 41 
 42 //解析GPRMC最小定位信息,并打印到屏幕上
 43 int print_gps(GPRMC *gps_date)
 44 {
 45     printf("                                                                \n");
 46     printf("                                                                \n");
 47     printf("================================================================\n");
 48     printf("==              Global GPS positioning and navigation module  ==\n");
 49     printf("==              Developer:huangjiaming                       ==\n");
 50     printf("==              Email:421380303@qq.com                       ==\n");
 51     printf("==              Development platform:fl2440                  ==\n");
 52     printf("==              GPSmodel:FIT-GPS_SF2820(replace ET-312)    ==\n");
 53     printf("================================================================\n");
 54     printf("                                                                \n");
 55     printf

GPS应用程序设计》源代码。本软件是专为《GPS应用程序设计》一书配套发行的。包括: 1、 data_log.c 数据采集程序 2、 rinexout.c RINEX数据格式写入子程序 3、 to_rinex.c 数据格式转换 4、 sav_pos.c 卫星位置计算程序 5、 sky_sav.c 卫星天空显示程序 6、 dop_calc.c 卫星星座DOP计算程序 7、 view_sav.c 历书预报卫星出现程序 8、 absl_pos.c 单点绝对定位程序 9、 ssgsoft.c -- 相对静态定位主程序 10、 controlf.c ? 读取输入文件子程序 11、 orbit.c -- 选择参考卫星子程序 12、 broad.c -- 读广播星历计算子程序 13、 igs.c -- 读 IGS 精密星历子程序 14、 singlep.c -- 近似位置计算子程序 15、 rinex.c -- 读 Rinex 数据、探测跳周、组成单差子程序 16、 eqdd_s.c -- 组成双差方程子程序 17、 normdd_s.c ? 组成法方差子程序 18、 ad_core.c -- 平差子程序19、 ambifix.c -- 糊度固定子程序 20、 tranf.c -- 坐标变换子程序 21、 dgps_ppr. 相位平滑伪距改正数计算程序 22、 dgps_phr 准载波相位改正数计算程序 23 rtcmencd.c RTCM 电文编码程序 24 rtcmencd.c RTCM 电文译码程序 25、 net_dgn.c 测量格网设计程序 26 sur_ctr.c 动态测量控制程序 27、 replay.c 动态测量数据回放程序 28、 kin_tran.c 动态定位坐标转换程序 29、 rms.c 定位精度估计程序 30、 tide.c 潮位改正程序 31、 xybl_54.c 54坐标变换程序 32、 xyxy_loc.c 任意坐标系转换程序 33、 gga+gsv.c GGA和GSV数据拟程序 34、 depth.c 水深数据拟程序 35、 gg_pos.c GPS+GLONASS导航程序 36、 menu1.c DOS环境换页式菜单程序 37、 menu2.c DOS环境下拉式菜单程序 38、 menu3.c windows95环境下拉式多层界面菜单程序 39、 makedata.c 利用RINEX格式文件data.98n和data.98o形成的data.out文件,供计算单点定位用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值