GPS固定数据输出语句($GPGGA)

$GPGGA是GPS接收机输出的一种标准NMEA-0183协议数据,包含了位置、时间和卫星信息等关键导航数据。
摘要由CSDN通过智能技术生成

GPGGA

  GPS固定数据输出语句($GPGGA)
这是一帧GPS定位的主要数据,也是使用最广的数据。
$GPGGA 语句包括17个字段:语句标识头,世界时间,纬度,纬度半球,经度,经度半球,定位质量指示,使用卫星数量,水平精确度,海拔高度,高度单位,大地水准面 高度,高度单位,差分GPS数据期限,差分参考基站标号,校验和结束标记(用回车符<CR>和换行符<LF>),分别用14个逗 号进行分隔。该数据帧的结构及各字段释义如下:
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx<CR><LF>
$GPGGA:起始引导符及语句格式说明(本句为GPS定位数据);
<1> UTC时间,格式为hhmmss.sss;
<2> 纬度,格式为ddmm.mmmm(第一位是零也将传送);
<3> 纬度半球,N或S(北纬或南纬)
<4> 经度,格式为dddmm.mmmm(第一位零也将传送);
<5> 经度半球,E或W(东经或西经)
<6> 定位质量指示,0&#
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用C语言在Linux系统下解析$GPGGA数据的代码程序,可以使用模拟数据进行测试: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define BUFF_SIZE 256 int main(int argc, char **argv) { char buff[BUFF_SIZE]; char *token; char *delim = ","; char *data[14]; int i = 0; // 模拟数据 strncpy(buff, "$GPGGA,045049.000,2235.3977,N,11403.4831,E,1,10,0.85,26.6,M,-5.8,M,,*5C", BUFF_SIZE); // 如果数据$GPGGA开头 if (strncmp(buff, "$GPGGA", 6) == 0) { // 使用strtok函数分割数据 token = strtok(buff, delim); while (token != NULL) { data[i++] = token; token = strtok(NULL, delim); } // 输出分割后的数据 for (i = 0; i < 14; i++) { printf("%s ", data[i]); } printf("\n"); // 解析数据 // 时间 char time[10]; strncpy(time, data[1], 6); time[6] = '\0'; printf("Time: %s\n", time); // 纬度 char lat[20]; double lat_deg, lat_min; strncpy(lat, data[2], 2); lat[2] = '\0'; lat_deg = atof(lat); strncpy(lat + 3, data[2] + 2, strlen(data[2]) - 2); lat_min = atof(lat + 3); printf("Latitude: %lf\n", lat_deg + lat_min / 60.0); // 经度 char lon[20]; double lon_deg, lon_min; strncpy(lon, data[4], 3); lon[3] = '\0'; lon_deg = atof(lon); strncpy(lon + 4, data[4] + 3, strlen(data[4]) - 3); lon_min = atof(lon + 4); printf("Longitude: %lf\n", lon_deg + lon_min / 60.0); // 定位质量指示符 printf("Positioning quality: %s\n", data[6]); // 卫星数量 printf("Number of satellites: %s\n", data[7]); // 水平精度因子 printf("HDOP: %s\n", data[8]); // 海拔高度 printf("Altitude: %s m\n", data[9]); // 大地水准面下的椭球面高度 printf("Geoid separation: %s m\n", data[11]); } return 0; } ``` 该程序中使用模拟数据进行测试,输出结果如下: ``` $GPGGA 045049.000 2235.3977 N 11403.4831 E 1 10 0.85 26.6 M -5.8 M *5C Time: 045049 Latitude: 22.589962 Longitude: 114.058052 Positioning quality: 1 Number of satellites: 10 HDOP: 0.85 Altitude: 26.6 m Geoid separation: -5.8 m ``` 可以看到,程序正确地解析了模拟数据,并输出了各个字段的值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值