Yunxion资产跟踪之GNSS NEMA语句解析之GGA
Posted 瑞奇Ricky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Yunxion资产跟踪之GNSS NEMA语句解析之GGA相关的知识,希望对你有一定的参考价值。
NMEA作为全球不同定位系统GPS导航中的统一BTCM标准。由美国国家海洋电子协会制定的一套通讯协议。一些专业开发研究定位跟踪通信类产品的公司,在开发产品过程中发现NMEA-0183协议是GPS接收机上使用最广泛的协议。这个协议也包含了丰富的语句。为了兼容不同的导航系统,在开发过程中发现,一般会出现GPGGA(GPS导航系统)、BDGGA(北斗导航系统)等待其他类型,但是后缀肯定都是GGA。因此开发人员设计出了一个统一的解析代码,帮助解析不同导航系统的GGA语句。在此基础上,开发人员开发出了以实时监测定位为特点的多类产品,分别专注于于运输状态监测、资产监测、人员监测、车辆监测等。
因此当遇到类似问题,可以参考以下解决方案:
/GGA Struct/
typedef struct
{
char utc[15];
float lat;
char ns[2];
float lon;
char we[2];
int state;
int num;
float hdop;
float altitude;
}NEMA_GGA_t;
/*
*功能:解析GGA语句
*输入:GGA语句
*输出:(NEMA_GGA_t)解析结果
*/
NEMA_GGA_t nema_gga_parse(char nema_gga_str)
{
NEMA_GGA_t gga;
char q = strstr(nema_gga_str,“GGA”);
sscanf(q,"%[,],%[,],%f,%[,],%f,%[,],%d,%d,%f,%f,", (gga.utc),&gga.lat,gga.ns,
&gga.lon,gga.we,&gga.state,&gga.num,&gga.hdop,&gga.altitude);
return gga;
}
/*****************************************************************************/
/
*示例
*/
#include <stdio.h>
#include “string.h”
int main(int argc, char **argv)
{
char *nema_gga = "$GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,19.7,M,,,,0000*1F";
printf("nema_gga = %s\\r\\n\\r\\n",nema_gga);
NEMA_GGA_t gga;
gga = nema_gga_parse(nema_gga);
printf("utc = %s\\r\\n",gga.utc);
printf("lat = %f\\r\\n",gga.lat);
printf("ns = %s\\r\\n",gga.ns);
printf("lon = %f\\r\\n",gga.lon);
printf("we = %s\\r\\n",gga.we);
printf("state = %d\\r\\n",gga.state);
printf("num = %d\\r\\n",gga.num);
printf("hdop = %.2f\\r\\n",gga.hdop);
printf("altitude = %.2f\\r\\n",gga.altitude);
}
结论:NMEA-0183协议的兼容问题,可以根据统一的解析代码,帮助解析不同导航系统的GGA语句。
以上是关于Yunxion资产跟踪之GNSS NEMA语句解析之GGA的主要内容,如果未能解决你的问题,请参考以下文章
Yunxion资产监测设备之GNSS NEMA语句解析之GSA
Yunxion资产监测设备,GNSS NEMA语句解析之VTG