解析定位信息
首先,我们从串口调试助手查看一下收到的数据。
我们可以看到每一行数据各不相同,但大制可以分为语句标识符和具体信息,每条信息用$开头。
标识符
语句标识符以可以拆分为两部分,前两位是第一部分,标识是哪种卫星发来的数据;后三位是第二部分,标识后面的数据是那种类型的数据。
- 第一部分中,具体有五种类型的卫星。
标识符 | 含 义 |
---|---|
BD | BDS,北斗三代/二代卫星系统 |
GP | GPS |
GL | 俄罗斯GLONASS卫星导航系统 |
GA | Galileo,欧洲“伽利略”卫星导航系统 |
GN | GNSS,全球导航卫星系统 |
我们只需要根据标识符的前两位就可以判断出数据来自哪种卫星定位。
比如:$GNGGA,062904.094,3352.18877,N,11528.72841,E,0,1,,20.19,M,-8.76,M,,*77
标识符的前两位为GN,既可以判断出是收到的是GNSS(全球导航卫星系统)的信息。
2. 第二部分中,标识数据类型主要也有五种。
标识符 | 含 义 |
---|---|
GGA | 时间、位置、卫星数量 |
GSA | GPS 接收机操作模式,定位使用的卫星,DOP 值,定位状态 |
GSV | 可见 GPS 卫星信息、仰角、方位角、信噪比 |
RMC | 时间、日期、位置、速度 |
VTG | 地面速度信息 |
我们只需要根据标识符的后三位就可以判断出数据是什么类型。
比如:$GNGGA,062904.094,3352.18877,N,11528.72841,E,0,1,,20.19,M,-8.76,M,,*77
标识符的后三位为GGA,即代表后面的具体数据为时间、位置和卫星数量。
具体信息
我们现在来解析以下具体的数据。
我们根据标识符对后面的信息进行截取
比如
$GNGGA,063327.094,3352.18138,N,11528.75505,E,0,4,,20.21,M,-8.75,M,,*78
我们可以根据GPS-GGA数据格式进行解析这些数据。可分为具体17个字段:
标识符,UTC时间,纬度,纬度半球,经度,经度半球,定位指示,卫星数量,水平精确度,海拔高度,高度单位,大地水准面高度,高度单位,差分GPS数据期限,差分参考基站标号,校验和,结束标记(用回车符和换行符),分别用14个逗号进行分隔。
格式为
$--GGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh
下面来具体解析一些数据,方便大家进行理解。
- 时间信息为:063327.094 时间格式为前两位为小时,三四位是分钟,后面是秒。所以这个数据可以解析为,UTC时间06:33:27.094
- 位置信息为:3352.18138,N,11528.75505,E 时间格式为先是纬度,再是经度,中间用逗号隔开并且用位置的首字母来区分是北纬还是南纬,东经还是西经,和经纬度也用逗号隔开。经纬度的具体度数的格式为小数点前两位以前为度,后面为分 以这个数据可以解析为,位置,北纬33度52.18138分,东经115度28.75505
- 剩余信息根据手册进行使用,对日常的开发用处较少,下面将GGA的数据格式分享出来。
- 从这里我们可以看出,
$GNGGA,063327.094,3352.18138,N,11528.75505,E,0,4,,20.21,M,-8.75,M,,*78
中的卫星数量是4,剩下的数据可以自行和表对照。
使用
我们使用这些数据,可以通过位数的值来使用。比如如果接收到一组数据data。那么如果data[1]= =‘B’ ,
data[2]= =‘D’,那么就代表这个数据收到的是北斗导航的数据。
或者可以使用字符串匹配算法进行使用,当数据中有GAGSV,明显这条数据就是Galileo卫星后面是可见 GPS 卫星信息、仰角、方位角、信噪比的数据。