GPS(NMEA)数据解析

本文介绍了GPS的NMEA数据格式,包括$GPGGA、$GPGLL、$GPGSA、$GPRMC和$GPVTG等协议,并提供了C语言实现的解析GPS数据的代码示例,用于获取定位、速度和时间等信息。
摘要由CSDN通过智能技术生成

一、GPS定位信息

设置好gps模式,启动gps,正常的话在gps通路有NMEA数据上报,如下:

$GPGSV,3,1,11,01,62,130,42,07,61,201,43,11,72,075,28,17,20,251,38*7A

$GPGSV,3,2,11,30,63,272,44,03,00,149,,08,34,046,,13,05,309,*76

$GPGSV,3,3,11,22,08,127,,27,03,057,,28,34,312,*4C

$GPGGA,042523.0,3413.610533,N,10854.063257,E,1,05,2.6,438.5,M,-28.0,M,,*78

$GPVTG,245.9,T,245.9,M,0.0,N,0.0,K,A*23

$GPRMC,042523.0,A,3413.610533,N,10854.063257,E,0.0,245.9,190716,0.0,E,A*0F

$GPGSA,A,2,01,07,11,17,30,,,,,,,,2.8,2.6,1.0*3F

(1) $GPGGA (GPS定位信息)

  协议格式:

$GPGGA,161229.487,3723.2475,N,12158.3416,W,1,07,1.0,9.0,M, , ,,0000*18

 协议格式详细分析:

(2) $GPGLL (地理定位信息)

  协议格式:

$GPGLL,<1>,<2>,<3>,<4>,<5>,<6>*hh<CR><LF>

样例数据:

$GPGLL,3723.2475,N,12158.3416,W,161229.487,A*2C

协议格式详细分析:

(3) $GPGSA (当前卫星信息)

  协议格式:

$GPGSA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>,<15>,<16>,<17>*hh<CR><LF>

样例数据:

$GPGSA,A,3,07,02,26,27,09,04,15, , , , , ,1.8,1.0,1.5*33

协议格式详细分析:

(4) $GPGSV(可见卫星信息)

 协议格式:
$GPGSV, <1>,<2>,<3>,<4>,<5>,<6>,<7>,...,<4>,<5>,<6>,<7>*hh<CR><LF>

样例数据:

$GPGSV,2,1,07,07,79,048,42,02,51,062,43,26,36,256,42,27,27,138,42*71$GPGSV,2,2,07,09,23,313,42,04,19,159,41,15,12,041,42*41

需要注意的是这里的样例数据有2条,这是因为当前可见卫星一共有7个,但是每条语句最多包括四颗卫星的信息,所以分成了2条语句。每颗卫星的信息有四个数据项,即:<4>(卫星编号)、<5>(卫星仰角)、<6>(卫星方位角)、<7>(信噪比)。

  协议格式详细分析(只分析第1条样例数据语句):

(5) $GPRMC(最简定位信息)

  协议格式:

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>*hh<CR><LF>

样例数据:

$GPRMC,161229.487,A,3723.2475,N,12158.3416,W,0.13,309.62,120598,,*10

协议格式详细分析:

(6) $GPVTG(地面速度信息)

  协议格式:

$GPVTG,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>*hh<CR><LF>

样例数据:

$GPVTG,309.62,T, ,M,0.13,N,0.2,K*6E

协议格式详细分析:

二、GPS(NMEA)数据解析

/*********************************************************************************/

ingps.h

/*********************************************************************************/

#include<stdio.h>  

#include<stdlib.h>  

#include<string.h>  

#include<sys/types.h>  

#include<sys/stat.h>  

#include<fcntl.h>  

#include<unistd.h>  

#include<termios.h>  

#include<string.h> 

/*********************************************************************************/

degps.h

/*********************************************************************************/

#include "ingps.h"

#define TTYUSB "/dev/ttyUSB3"  /*串口设备*/ 

#define BAUD_RATE 4800      /*波特率 */

#define DATA_BITS 8     /*数据位*/ 

#define NEVENT 'N'       /*校验 */

#define NSTOP 1         /*停止位*/ 

#define BUFLEN 512       /*可随意取,但要大于GPGGA_MAX*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值