c语言gga字符串校验和代码,NEMA-0183(GPGGA,GPRMC,GPGSA,GPGSV,GPVTG)详解,并附解析代码(C语言版)...

nmea数据如下:

$GPGGA,121252.000,3937.3032,N,11611.6046,E,1,05,2.0,45.9,M,-5.7,M,,0000*77

$GPRMC,121252.000,A,3958.3032,N,11629.6046,E,15.15,359.95,070306,,,A*54

$GPVTG,359.95,T,,M,15.15,N,28.0,K,A*04

$GPGGA,121253.000,3937.3090,N,11611.6057,E,1,06,1.2,44.6,M,-5.7,M,,0000*72

$GPGSA,A,3,14,15,05,22,18,26,,,,,,,2.1,1.2,1.7*3D

$GPGSV,3,3,10,29,07,074,,30,07,163,28*7D

注:NMEA0183格式以“$”开始,主要语句有GPGGA,GPRMC,GPGSA,GPGSV,GPVTG,GPZDA等

1、 GPS DOP and Active Satellites(GSA)当前卫星信息

$GPGSA,<1>,<2>,<3>,<4>,,,,,<12>,<13>,<14>, <15>,<16>,<17>,<18>

<1>模式 :M = 手动, A = 自动。

<2>定位型式 1 = 未定位, 2 = 二维定位, 3 = 三维定位。

<3>到<14>PRN 数字:01 至 32 表天空使用中的卫星编号,最多可接收12颗卫星信息

(上面蓝色处,总共有12个)。

<
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的NMEA-0183协议解析代码C语言实现示例。 ```c #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX_NMEA_SENTENCE_LENGTH 80 typedef struct { int hour; int minute; int second; float latitude; float longitude; float altitude; int fix_quality; int num_satellites; } GPSData; void parse_nmea_sentence(char* sentence, GPSData* gps_data) { char* tokens[20]; int num_tokens = 0; char* token = strtok(sentence, ","); while (token != NULL) { tokens[num_tokens++] = token; token = strtok(NULL, ","); } if (strcmp(tokens[0], "$GPGGA") == 0) { // 解析GGA语句 if (num_tokens >= 10) { gps_data->hour = atoi(tokens[1]) / 10000; gps_data->minute = (atoi(tokens[1]) / 100) % 100; gps_data->second = atoi(tokens[1]) % 100; gps_data->latitude = (float)atof(tokens[2]); gps_data->longitude = (float)atof(tokens[4]); gps_data->altitude = (float)atof(tokens[9]); gps_data->fix_quality = atoi(tokens[6]); gps_data->num_satellites = atoi(tokens[7]); } } } int main() { char nmea_sentence[MAX_NMEA_SENTENCE_LENGTH]; GPSData gps_data = {0}; while (fgets(nmea_sentence, MAX_NMEA_SENTENCE_LENGTH, stdin) != NULL) { if (nmea_sentence[strlen(nmea_sentence) - 1] == '\n') { nmea_sentence[strlen(nmea_sentence) - 1] = '\0'; } parse_nmea_sentence(nmea_sentence, &gps_data); printf("Latitude: %f, Longitude: %f, Altitude: %f\n", gps_data.latitude, gps_data.longitude, gps_data.altitude); } return 0; } ``` 在这个示例中,我们定义了一个GPSData结构体来存储解析出来的位置信息,同时实现了一个parse_nmea_sentence函数来解析NMEA-0183协议语句。在主函数中,我们从标准输入流中读取NMEA-0183协议语句,并将解析出来的位置信息打印出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值