例如,我正在尝试发送一个 mavlink 命令
GPS_RTCM_DATA ( #233 )
flags uint8_t
len uint8_t
data uint8_t[180] RTCM message (may be fragmented)
https://mavlink.io/en/messages/common.html#GPS_RTCM_DATA
我知道 uint8_ 将是一个单字节无符号整数。[180] 是什么意思?
例如,我正在尝试发送一个 mavlink 命令
GPS_RTCM_DATA ( #233 )
flags uint8_t
len uint8_t
data uint8_t[180] RTCM message (may be fragmented)
https://mavlink.io/en/messages/common.html#GPS_RTCM_DATA
我知道 uint8_ 将是一个单字节无符号整数。[180] 是什么意思?
MAVLink GPS_RTCM_DATAuint8_t[180]
消息中的表示该字段最多可包含 180 个字节。data
请注意,RTCM 消息可能大于 180 字节,并且会被分成多个 GPS_RTCM_DATA 消息。
您可以flags
按照 mavlink 文档中的说明检查该字段:
LSB:1 表示消息被分片,接下来的 2 位是分片 ID,其余 5 位用于序列 ID。只有在自动驾驶仪上重建了整个消息后,才会将消息刷新到 GPS。片段 ID 指定片段应以何种顺序组装到缓冲区中,而序列 ID 用于检测不同缓冲区之间的不匹配。当所有 4 个片段都存在或接收到具有非完整有效负载的第一个片段之前的所有片段时,缓冲区被认为是完全重建的。此管理用于确保正常的 GPS 操作不会损坏 RTCM 数据,并从不可靠的运输交付订单中恢复。
我尝试了每一个,但它不起作用。除了把它作为一个 180 字节的数组。例如,数据可能只有 30 个字节。但是以这种方式输入其他 150 0x00 字节,python 程序接受我的命令。奇怪的是。我无法解释为什么,但在这种情况下它有效。