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的主要内容,如果未能解决你的问题,请参考以下文章

Yunxion资产监测设备,GNSS NEMA语句解析之VTG

Yunxion资产跟踪之GNSS NEMA语句解析之GGA

Yunxion资产跟踪设备之GPS NEMA解析

Yunxion资产监测设备技术中代码优化

Yunxion资产监测设备中串口上下拉问题

Yunxion资产监测设备中DCDC芯片选择