Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gps NMEA值是否可以包含'*';(星号)?_Gps_Nmea - Fatal编程技术网

Gps NMEA值是否可以包含'*';(星号)?

Gps NMEA值是否可以包含'*';(星号)?,gps,nmea,Gps,Nmea,我试图创建与NMEA兼容的专有语句,其中可能包含任意字符串 带有校验和的NMEA语句的通常格式为: $GPxxx,val1,val2,...,valn*ck<cr><lf> $GPxxx,val1,val2,…,valn*ck 其中,*标记2位校验和的开始 我的问题是:任何值字段本身都可以包含*字符吗 解析器似乎可以等待最后的,然后回顾前面的3个字符以查找校验和(如果存在)(而不是只等待句子中的第一个*)。但是我不知道标准是否允许 是否还有其他可能导致问题的字符?如果

我试图创建与NMEA兼容的专有语句,其中可能包含任意字符串

带有校验和的NMEA语句的通常格式为:

$GPxxx,val1,val2,...,valn*ck<cr><lf>
$GPxxx,val1,val2,…,valn*ck
其中,
*
标记2位校验和的开始

我的问题是:任何值字段本身都可以包含
*
字符吗

解析器似乎可以等待最后的
,然后回顾前面的3个字符以查找校验和(如果存在)(而不是只等待句子中的第一个
*
)。但是我不知道标准是否允许


是否还有其他可能导致问题的字符?

如果您自己扩展协议(基于“专有”),那么当然,您可以输入任何您喜欢的字符。我会坚持使用ASCII,但在这些范围内会变得疯狂。(很明显,您需要提出自己的$GPxxx,以避免与现有消息冲突。可能需要一个新的标题$SQUEL,…)

根据定义,专有消息将不兼容NMEA

侦听NMEA流的标准解析器应该忽略任何与其认为“好”数据不匹配的内容。这意味着一个校验和错误,或者任何严重损坏的消息,就像它认为你的新消息中抛出了一些随机*一样


如果您只是在编写一条现有的消息,那么a*就没有意义,应该被忽略,但是如果校验和正确,并且解析器不理解有效负载,那么您就有发生重大问题的风险。

如果您自己扩展协议(基于“专有”),那么当然,您可以放入任何您喜欢的内容。我会坚持使用ASCII,但在这些范围内会变得疯狂。(很明显,您需要提出自己的$GPxxx,以避免与现有消息冲突。可能需要一个新的标题$SQUEL,…)

根据定义,专有消息将不兼容NMEA

侦听NMEA流的标准解析器应该忽略任何与其认为“好”数据不匹配的内容。这意味着一个校验和错误,或者任何严重损坏的消息,就像它认为你的新消息中抛出了一些随机*一样


如果您只是在编写一条现有的消息,那么*就没有意义,应该忽略,但是如果校验和正确,并且解析器不理解有效负载,那么您就有发生重大问题的风险。

需要注意的两个ASCII字符是$,必须在开始处,以及*在校验和之前。任何解析您的自定义NMEA的人都不会期望在其他任何地方找到这些字符中的任何一个。一些解析器在遇到$时会假定新行已经开始。在串行端口通信中,有时字符会在传输过程中丢失,这就是为什么会有$start of句子标记

如果要生成自己的NMEA命令,通常以p开头,后跟3个字符的代码,表示创建专有消息的制造商或公司,因此可以使用$PSQU。请注意,尽管建议NMEA命令的长度为5个字符,但各种硬件和软件制造商提供的专有消息的长度从4个字符到7个字符不等

显然,如果您正在编写自己的解析器,您可以随心所欲

这个网站相当有用:


需要注意的两个ASCII字符是$,必须在开头,和*在校验和之前。任何解析您的自定义NMEA的人都不会期望在其他任何地方找到这些字符中的任何一个。一些解析器在遇到$时会假定新行已经开始。在串行端口通信中,有时字符会在传输过程中丢失,这就是为什么会有$start of句子标记

如果要生成自己的NMEA命令,通常以p开头,后跟3个字符的代码,表示创建专有消息的制造商或公司,因此可以使用$PSQU。请注意,尽管建议NMEA命令的长度为5个字符,但各种硬件和软件制造商提供的专有消息的长度从4个字符到7个字符不等

显然,如果您正在编写自己的解析器,您可以随心所欲

这个网站相当有用:


谢谢,非常有用!我猜“NMEA兼容”是指它遵循NMEA的句子结构。我想我会避免(或翻译)“*”。谢谢,信息量很大!我猜“NMEA兼容”是指它遵循NMEA的句子结构。我想我会避免(或翻译)“*”然后。