Yunxion资产监测设备之GNSS NEMA语句解析之GSA
Posted 瑞奇Ricky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Yunxion资产监测设备之GNSS NEMA语句解析之GSA相关的知识,希望对你有一定的参考价值。
笔者在资产监测设备的开发过程中,发现资产监测设备的实时定位功能与运动监测等功能需要完善GPS定位系统。以便为客户提供更高效、更合适的解决方案。NEMA-0183协议GPS接收机都应当遵守的协议。同时也是目前GPS接收机上使用最广泛的协议。但在市场上常见的GPS接收机、GPS数据处理软件中都会兼容该协议。由于该协议语句较多,在资产监测定位设备的开发过程中,对于所有语句之一的GSA语句,能够兼容不同的导航系统。
一般会出现GPGSA(GPS导航系统)、BDGSA(北斗导航系统)等待其他类型,但是根据资产监测设备开发人员的总结,后缀都是GSA。因此为了后期资产监测设备的用户体验感更佳,开发人员需要设计出一个统一的解析代码,以保障该代码可以解析不同导航系统的GSA语句。
遇到类似问题时,可以参考以下解决方案:
/GSA Struct/
typedef struct
{
char mode[3];
int type;
char prn[12][5];
float pdop;
float hdop;
float vdop;
}NEMA_GSA_t;
/*
*功能:解析GSA语句
*输入:GSA语句
*输出:(NEMA_GSA_t)解析结果
*/
NEMA_GSA_t nema_gsa_parse(char *nema_gsa_str)
{
NEMA_GSA_t gsa;
char *q = strstr(nema_gsa_str,“GSA”);
sscanf(q,"%*[^,],%[^,],%d,%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%f,%f,%f",
gsa.mode,&gsa.type,gsa.prn[0],gsa.prn[1],gsa.prn[2],gsa.prn[3],gsa.prn[4],
gsa.prn[5],gsa.prn[6],gsa.prn[7],gsa.prn[8],sa.prn[9],gsa.prn[10],gsa.prn[11],&gsa.pdop,&gsa.hdop,&gsa.vdop);
return gsa;
}
/*****************************************************************************/
/*
*示例
*/
int main(int argc, char **argv)
{
char *nema_gsa = "$GPGSA,A,3,01,20,19,13,,,,,,,,,40.4,24.4,32.2*0A";
printf(“nema_gsa = %s\\r\\n\\r\\n”,nema_gsa);
NEMA_GSA_t gsa;
gsa = nema_gsa_parse(nema_gsa);
printf(“mode = %s\\r\\n”,gsa.mode);
printf(“type = %d\\r\\n”,gsa.type);
printf(“pdop = %.2f\\r\\n”,gsa.pdop);
printf(“hdop = %.2f\\r\\n”,gsa.hdop);
printf(“vdop = %.2f\\r\\n”,gsa.vdop);
}
结论:NMEA-0183协议的兼容问题,可以根据统一的解析代码,帮助解析不同导航系统的GSA语句。
以上是关于Yunxion资产监测设备之GNSS NEMA语句解析之GSA的主要内容,如果未能解决你的问题,请参考以下文章