GPS GPRMC语句
时间: 2023-07-17 11:53:29 浏览: 73
GPRMC语句是GPS接收机输出的一种标准语句,包括了接收机位置、速度、时间等信息。其中,GPRMC是语句的类型标识符,其含义为Recommended Minimum Specific GPS/Transit Data(推荐最小特定GPS/过境数据)。GPRMC语句的格式如下:
$GPRMC,time,status,lat,NS,long,EW,spd,crs,date,mv,mvEW,posMode*cs<CR><LF>
其中,各字段含义如下:
- time: UTC时间,格式为hhmmss.sss
- status: 定位状态,A=有效定位,V=无效定位
- lat: 纬度,格式为ddmm.mmmm
- NS: 纬度半球N或S
- long: 经度,格式为dddmm.mmmm
- EW: 经度半球E或W
- spd: 速度,单位为节,格式为nnn.n
- crs: 地面航向,以真北为参考,格式为ddd.d
- date: UTC日期,格式为ddmmyy
- mv: 磁偏角,格式为ddd.d
- mvEW: 磁偏角方向,E或W
- posMode: 定位模式,N=没有定位信息,A=自主定位,D=差分定位
示例:$GPRMC,082445.000,A,3152.1043,N,11708.4522,E,0.00,0.00,280714,,,A*7B
相关问题
gprmc和gnrmc
GPRMC和GNRMC是GPS接收器输出的两种标准数据语句。它们都是以ASCII字符形式发送的NMEA 0183标准语句。
GPRMC(General Purpose Recommended Minimum Data)是一种广泛应用的推荐最小数据语句。它包含了位置、速度、方向和时间等关键信息。GPRMC语句的结构由多个字段组成,每个字段之间通过逗号进行分隔。其中最重要的字段包括UTC时间、位置的纬度和经度、速度以及方向。
GNRMC(Global Navigation Satellite System Recommended Minimum Data)是基于GNSS系统的最小数据语句。与GPRMC相比,它可以同时支持多个全球定位系统,如GPS、GLONASS、Galileo等。GNRMC语句的结构与GPRMC类似,也包括了UTC时间、位置、速度和方向等信息。它的存在使得接收器能够从不同的GNSS系统中选择最佳的定位数据。
无论是GPRMC还是GNRMC,它们都是GPS接收器非常重要的输出信号。通过解析这些语句,我们可以获取到定位、导航和时间等相关的信息。这些数据对于航海、车辆导航、灾难救援等领域都具有重要意义。
总结起来,GPRMC和GNRMC都是GPS接收器输出的NMEA 0183标准语句,用于提供位置、速度、方向和时间等关键信息。它们的存在使得我们可以轻松获取到全球卫星导航系统的定位数据,并应用于各种领域的导航和定位需求中。
使用c语言解析gprmc数据
解析GPRMC数据需要先了解GPRMC数据的格式和含义。GPRMC是一种标准的NMEA0183协议的GPS语句,包含了GPS定位信息中的时间、日期、纬度、经度、速度、航向等信息。
GPRMC数据格式如下:
```
$GPRMC,time,status,lat,N/S,lon,E/W,spd,cog,date,mv,mvE,mode*cs<CR><LF>
```
其中:
- $GPRMC:语句ID,表示该语句为GPRMC语句。
- time:UTC时间,格式为hhmmss.sss。
- status:定位状态,A表示定位有效,V表示定位无效。
- lat:纬度,格式为ddmm.mmmm,前两位为度数,后面为分数。
- N/S:纬度方向,N表示北半球,S表示南半球。
- lon:经度,格式为dddmm.mmmm,前三位为度数,后面为分数。
- E/W:经度方向,E表示东经,W表示西经。
- spd:速度,单位为节。
- cog:航向,以真北为参考,单位为度。
- date:UTC日期,格式为ddmmyy。
- mv:磁偏角,单位为度。
- mvE:磁偏角方向,E表示东偏,W表示西偏。
- mode:定位模式,A表示自主定位,D表示差分定位。
下面是使用C语言解析GPRMC数据的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FIELD_COUNT 13
void parse_gprmc(char *data);
int main(void)
{
char *data = "$GPRMC,083745.000,A,3157.5238,N,11848.1585,E,0.00,173.01,100720,,,A*7E\r\n";
parse_gprmc(data);
return 0;
}
void parse_gprmc(char *data)
{
char *field[FIELD_COUNT];
int i = 0;
// 分割语句
char *token = strtok(data, ",");
while(token != NULL) {
field[i++] = token;
token = strtok(NULL, ",");
}
// 检查语句ID是否为GPRMC
if(strcmp(field[0], "$GPRMC") != 0) {
printf("Invalid data: %s", data);
return;
}
// 检查定位状态是否有效
if(strcmp(field[2], "A") != 0) {
printf("No GPS fix available\n");
return;
}
// 解析经纬度
double lat = atof(field[3]) / 100 + atof(field[4]) / 60;
if(strcmp(field[5], "S") == 0) {
lat = -lat;
}
double lon = atof(field[5]) / 100 + atof(field[6]) / 60;
if(strcmp(field[7], "W") == 0) {
lon = -lon;
}
// 解析时间和日期
char time[10], date[10];
strncpy(time, field[1], 6);
strncpy(date, field[9], 6);
printf("Time: %s, Date: %s, Latitude: %lf, Longitude: %lf\n", time, date, lat, lon);
}
```
这个示例代码将GPRMC数据作为字符串传递给parse_gprmc函数,在函数中解析语句并提取所需信息。解析过程包括分割语句、检查语句ID和定位状态、解析经纬度、解析时间和日期等步骤。最后,函数将解析结果输出到控制台。