您的位置:

GPGSV详解

一、GPGSV简介

GPGSV是GPS接收器预期接收到的卫星信号的信息,是GPS卫星定位中的重要组成部分。GPGSV指令为可选指令,其作用为返回所有可用卫星的信息,包括可见卫星数量、卫星的PRN号、仰角、方位角和信噪比等信息。

二、GPGSV指令格式

如下所示:

$GPGSV,3,1,09,02,31,193,46,04,69,240,32,05,46,046,37,08,17,21,23*70
$GPGSV,3,2,09,10,14,335,,13,05,143,,16,24,301,27,23,03,261,*73
$GPGSV,3,3,09,27,09,210,*4F

以上指令分为3行,每行最多能够包含4个卫星的信息。其中:

  • GPGSV:指令头,表示GPS卫星可见性数据;
  • 3:当前数据包的总页数;
  • 1:本数据包在总页数中的页数;
  • 09:搜锁星的卫星总数;
  • 02:第1个卫星的PRN号(伪随机噪声序列的标识符);
  • 31:当前卫星距离候选接收器的高度角(俯仰角);
  • 193:当前卫星距离候选接收器的方位角;
  • 46:当前卫星的信号强度(dBHz)。

三、GPGSV字段详解

1. GPGSV指令头

每一个GPGSV指令的第一个词汇都是指令头,它告诉的是这个语句传送的是卫星信息。

$GPGSV

如果是GLONASS卫星将会是$GLGSV。

2. 目前已搜到卫星数量和页码

在$GPGSV语句中,第二个和第三个字段告诉你这是多少卫星的数据和当前在哪页。

3,1

目前已搜到卫星数量为3,这是一个多页数据,当前页是第一页。

3. 可视卫星数量

第四个字段是可视卫星的数量。下面是一个例子:

3,1,09

这句话告诉你,当前卫星的总数是9。

4. 卫星详细信息

后面的每四个字段是卫星详细信息,依次为PRN号、俯仰角、方位角和信噪比。

02,31,193,46
04,69,240,32
05,46,046,37
08,17,21,23

这四个字段的信息说明了接收机所接收到的卫星信息,其中PRN号是伪随机噪声序列的唯一标识符,它唯一地标识了一个卫星。PRN号是从1到32的值,表示GPS卫星的数量。GPS接收器收到越多的卫星,定位精度就越高。

四、GPGSV使用示例

我们可以通过以下代码示例来使用GPGSV指令来获取可见卫星的PRN号、仰角、方位角和信噪比等信息:

import serial

# 打印GPGSV信息
def print_gpgsv(data):
    if data[0] == '$' and data[7:10] == "GSV":
        gpgsv = data.strip().split(",")
        num_msg = int(gpgsv[1])
        num_sat = int(gpgsv[2])
        t_msg = (num_msg-1)*4 + num_sat + 3
        if num_msg == 1:
            print("总共有{0}颗卫星:".format(num_sat))
        
        index = 4
        for i in range(num_sat):
            prn = "PRN: " + gpgsv[index]
            el = " 仰角: " + gpgsv[index+1]
            az = " 方位角: " + gpgsv[index+2]
            sn = " 信噪比: " + gpgsv[index+3]
            print(prn + el + az + sn)
            index += 4
        return True
    else:
        return False

if __name__ == '__main__':
    # 连接串口设备
    ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=0.5)

    while True:
        data = ser.readline().decode()
        if print_gpgsv(data):
            break

    ser.close()

五、总结

GPGSV是GPS接收器预期接收到的卫星信号的信息,在GPS卫星定位中具有非常重要的作用。从GPGSV指令格式和字段详解,我们可以了解到卫星数量、当前页码、可视卫星数量以及各个卫星的基本信息,包括PRN号、仰角、方位角和信噪比。在实际应用中,我们可以通过GPGSV指令获取这些信息,并进行后续的处理和分析,以获得更精准和稳定的定位结果。