GPS解析
1.GPRMC
$GPRMC,091155.00,A,3025.057278,N,11426.649452,E,0.0,183.0,161221,3.6,W,A25
推荐定位信息(GPRMC)
G
P
R
M
C
,
<
1
>
,
<
2
>
,
<
3
>
,
<
4
>
,
<
5
>
,
<
6
>
,
<
7
>
,
<
8
>
,
<
9
>
,
<
10
>
,
<
11
>
,
<
12
>
∗
h
h
<
1
>
U
T
C
时
间
,
h
h
m
m
s
s
.
s
s
s
(
时
分
秒
.
毫
秒
)
格
式
<
2
>
定
位
状
态
,
A
=
有
效
定
位
,
V
=
无
效
定
位
<
3
>
纬
度
d
d
m
m
.
m
m
m
m
(
度
分
)
格
式
(
前
面
的
0
也
将
被
传
输
)
<
4
>
纬
度
半
球
N
(
北
半
球
)
或
S
(
南
半
球
)
<
5
>
经
度
d
d
d
m
m
.
m
m
m
m
(
度
分
)
格
式
(
前
面
的
0
也
将
被
传
输
)
<
6
>
经
度
半
球
E
(
东
经
)
或
W
(
西
经
)
<
7
>
地
面
速
率
(
000.0
999.9
节
,
前
面
的
0
也
将
被
传
输
)
<
8
>
地
面
航
向
(
000.0
359.9
度
,
以
正
北
为
参
考
基
准
,
前
面
的
0
也
将
被
传
输
)
<
9
>
U
T
C
日
期
,
d
d
m
m
y
y
(
日
月
年
)
格
式
<
10
>
磁
偏
角
(
000.0
180.0
度
,
前
面
的
0
也
将
被
传
输
)
<
11
>
磁
偏
角
方
向
,
E
(
东
)
或
W
(
西
)
<
12
>
模
式
指
示
(
仅
N
M
E
A
01833.00
版
本
输
出
,
A
=
自
主
定
位
,
D
=
差
分
,
E
=
估
算
,
N
=
数
据
无
效
)
∗
后
h
h
为
GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh <1> UTC时间,hhmmss.sss(时分秒.毫秒)格式 <2> 定位状态,A=有效定位,V=无效定位 <3> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输) <4> 纬度半球N(北半球)或S(南半球) <5> 经度dddmm.mmmm(度分)格式(前面的0也将被传输) <6> 经度半球E(东经)或W(西经) <7> 地面速率(000.0~999.9节,前面的0也将被传输) <8> 地面航向(000.0~359.9度,以正北为参考基准,前面的0也将被传输) <9> UTC日期,ddmmyy(日月年)格式 <10> 磁偏角(000.0~180.0度,前面的0也将被传输) <11> 磁偏角方向,E(东)或W(西) <12> 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效) *后hh为
GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>∗hh<1>UTC时间,hhmmss.sss(时分秒.毫秒)格式<2>定位状态,A=有效定位,V=无效定位<3>纬度ddmm.mmmm(度分)格式(前面的0也将被传输)<4>纬度半球N(北半球)或S(南半球)<5>经度dddmm.mmmm(度分)格式(前面的0也将被传输)<6>经度半球E(东经)或W(西经)<7>地面速率(000.0 999.9节,前面的0也将被传输)<8>地面航向(000.0 359.9度,以正北为参考基准,前面的0也将被传输)<9>UTC日期,ddmmyy(日月年)格式<10>磁偏角(000.0 180.0度,前面的0也将被传输)<11>磁偏角方向,E(东)或W(西)<12>模式指示(仅NMEA01833.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)∗后hh为到所有字符的异或和
sscanf( (char const*)buf, “$GPRMC,%lf,%c,%lf,%c,%lf,%c,%lf,%lf,%d,%*s,%*s,%*s”, &time, &status, &latitude, &isNorth, &longitude, &isEast, &knots, &direction, &date)
2.GPGGA
$GPGGA,091156.00,3025.057284,N,11426.649459,E,1,08,0.7,51.9,M,-12.0,M,*71
$GPGGA 语句包括17个字段:语句标识头,世界时间,纬度,纬度半球,经度,经度半球,定位质量指示,使用卫星数量,HDOP-水平精度因子,椭球高,高度单位,大地水准面高度异常差值,高度单位,差分GPS数据期限,差分参考基站标号,校验和结束标记(用回车符和换行符),分别用14个逗号进行分隔。
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx
$GPGGA:起始引导符及语句格式说明(本句为GPS定位数据);
<1> UTC时间,格式为hhmmss.sss;
<2> 纬度,格式为ddmm.mmmm(第一位是零也将传送);
<3> 纬度半球,N或S(北纬或南纬)
<4> 经度,格式为dddmm.mmmm(第一位零也将传送);
<5> 经度半球,E或W(东经或西经)
<6> GPS状态, 0初始化, 1单点定位, 2码差分, 3无效PPS, 4固定解, 5浮点解, 6正在估算 7,人工输入固定值, 8模拟模式, 9WAAS差分
<7> 使用卫星数量,从00到12(第一个零也将传送)
<8> HDOP-水平精度因子,0.5到99.9,一般认为HDOP越小,质量越好。
<9> 海拔高度,-9999.9到9999.9米
M 指单位米
<10> 大地水准面高度异常差值,-9999.9到9999.9米
M 指单位米
<11> 差分GPS数据期限(RTCM SC-104),最后设立RTCM传送的秒数量,如不是差分定位则为空
<12> 差分参考基站标号,从0000到1023(首位0也将传送)。
- 语句结束标志符
xx 从 开 始 到 ∗ 之 间 的 所 有 A S C I I 码 的 异 或 校 验 < C R > 回 车 符 , 结 束 标 记 < L F > 换 行 符 , 结 束 标 记 s s c a n f ( ( c h a r c o n s t ∗ ) b u f , " 开始到*之间的所有ASCII码的异或校验回车符,结束标记 换行符,结束标记 sscanf( (char const*)buf, " 开始到∗之间的所有ASCII码的异或校验 回车符,结束标记 换行符,结束标记sscanf((charconst∗)buf,"GPGGA,%*f,%*f,%*c,%*f,%*c,%d,%d,%*lf,%lf", &fs, &state, &msl)



