Gps 这个GPGSV句子有效吗?

Gps 这个GPGSV句子有效吗?,gps,nmea,Gps,Nmea,在分析GPS接收机的NMEA输出时,我得到以下几行: $GPGSV,4,1,16,02,17,228,35,03,04,048,37,05,59,285,29,06,02,030,34*73 $GPGSV,4,2,16,07,58,061,46,08,80,159,40,09,11,227,32,10,51,167,47*77 $GPGSV,4,3,16,13,15,089,38,15,00,279,,16,00,018,,26,34,279,42*7A $GPGSV,4,4,16,28,20,

在分析GPS接收机的NMEA输出时,我得到以下几行:

$GPGSV,4,1,16,02,17,228,35,03,04,048,37,05,59,285,29,06,02,030,34*73
$GPGSV,4,2,16,07,58,061,46,08,80,159,40,09,11,227,32,10,51,167,47*77
$GPGSV,4,3,16,13,15,089,38,15,00,279,,16,00,018,,26,34,279,42*7A
$GPGSV,4,4,16,28,20,154,39*4C
据我所知,从网络上的各种来源(例如),这是错误的。根据第三个数字,应该有16颗卫星,这对于我以前遇到的所有GPS接收机都是正确的,但这句话只包含13颗卫星的数据


这是一个错误吗?还是我看错了规范?

Nmea是一种弱指定的文件格式。GPS芯片制造商提供了他们如何解释NMEA规范的文件。
例如,ublox和Sirf各有一章约40页,描述如何解释NMEA格式。

因此,如果您写“或者我是否错误地阅读了规范?”,那么问题是您正在阅读哪个规范。是GPS芯片制造商的吗?NMEA 0183规范包含的信息不足以正确解析句子。

特别是在您的情况下:NMEA协议没有规定如何处理空值和无效值

在你的例子中,接收器预计会看到16颗卫星,但只发现13颗。 我希望丢失的3个SAT都是空的“,,,,,,,,,”。但显然,制造商决定停止并附加校验和字符串。(只是没有规定必须为缺失的3个SAT打印空分号

不幸的是,您不得不期望为每个CHPS芯片制造商编写NMEA解析器。
因此,我总是建议使用芯片制造商协议的二进制格式(例如,uBlox二进制或Sirf二进制,因为它们是精确指定的)

您可以进一步查看GpsBable的文档:它们显示了不同制造商如何生成不同的GSV数据集

更新:
正如您现在所说的,它是一个ublox接收器:

答案是,是的,NMEA的句子是有效的。看看ublox协议规范。我使用ublox 5的规范: 在描述GSV语句的页面上,查看“消息结构”:

花括号括住重复的序列。 下面看“1..4”:这意味着1、2、3或4个区块。没有写“4”,其“1..4”因此卫星信息是可选的,不能为空


如果您进一步查看ublox给出的示例,那么您会发现,最后一条GPGSV消息包含的卫星不到4颗,这与您在问题中所显示的完全相同。

Nmea是一种弱指定的文件格式。GPS芯片制造商提供了有关他们如何解释Nmea规范的文档。
例如,ublox和Sirf各有一章约40页,描述如何解释NMEA格式。

因此,如果你写了“或者我读错了规范了吗?”,那么问题是你读的是哪一个规范。GPS芯片制造商的规范?NMEA 0183规范没有包含足够的信息来正确解析句子。

特别是在您的情况下:NMEA协议没有规定如何处理空值和无效值

在你的例子中,接收器预计会看到16颗卫星,但只发现13颗。 我希望丢失的3个SAT都是空的“,,,,,,,”。但很明显,制造商决定停止并附加校验和字符串。(只是没有规定必须为丢失的3个SAT打印空分号。)

不幸的是,您不得不期望为每个CHPS芯片制造商编写NMEA解析器。
因此,我总是建议使用芯片制造商协议的二进制格式(例如,uBlox二进制或Sirf二进制,因为它们是精确指定的)

您可以进一步查看GpsBable的文档:它们显示了不同制造商如何生成不同的GSV数据集

更新:
正如您现在所说的,它是一个ublox接收器:

答案是,是的,NMEA的句子是有效的。看看ublox协议规范。我使用ublox 5的规范: 在描述GSV语句的页面上,查看“消息结构”:

花括号括住重复的序列。 下面看“1..4”:这意味着1、2、3或4个区块。没有写“4”,其“1..4”因此卫星信息是可选的,不能为空


如果您进一步查看ublox给出的示例,那么您会发现,最后一条GPGSV消息包含的卫星少于4颗,与您在问题中所显示的完全相同。

是的,它不一致;最后一条消息应该描述多颗卫星(实际上是4颗)即使当时卫星在天空中的观察方向和信噪比未知,例如:{,01,,,,},GPS接收机也应至少报告卫星ID(PRN)

这就是说,最好编写能够容忍格式错误的消息的程序;在这种情况下,将卫星的数量更新为13个


(我已经检查了校验和,它们没有问题。)

是的,这是不一致的;最后一条消息应该描述了不止一颗卫星(实际上是四颗),以便总计16颗广告卫星。GPS接收器应该至少报告了卫星ID(PRN),即使它们在天空中的观察方向和SNR当时未知,例如:{,01,,,}

这就是说,最好编写能够容忍格式错误的消息的程序;在这种情况下,将卫星的数量更新为13个


(我已经检查了校验和,它们没有问题。)

既然你特别提到了ublox和Sirf文档:这个文档在网上的什么地方有吗?找到了,但没有帮助,因为ublox文档在GSV语句中没有更具体的内容。ublix规范对你没有帮助,因为你的设备显然来自其他制造商。如果缺少“,,,,,,,,”由合作公司或工作同事生成,然后简单地告诉他们用
{,sv,elv,az,cno}*cs