问题描述
例如,我正在尝试发送一个 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 消息中的 uint8_t[180]
表示 data
字段最多可以包含 180 个字节。
请注意 RTCM 消息可能大于 180 字节,并且可能会被分段 不止一条 GPS_RTCM_DATA 消息。
您可以按照 mavlink 文档中的说明检查 flags
字段:
LSB:1 表示消息被分片,接下来的 2 位是分片 ID, 剩余的 5 位用于序列 ID。消息只是 当整个消息都被刷新到 GPS 在自动驾驶仪上重建。片段 ID 指定哪个顺序 片段应组装到缓冲区中,而序列 ID 用于检测不同缓冲区之间的不匹配。缓冲区是 当所有 4 个片段中的任何一个都被认为是完全重建的 存在,或第一个片段之前的所有片段 接收到完整的有效载荷。这种管理用于确保 正常的 GPS 操作不会破坏 RTCM 数据,并从 不可靠的运输交货单。
,我每个都试过了,但没有用。除了把它作为一个 180 字节的数组。例如,数据可能只有 30 个字节。但是以这种方式输入另外150个0x00字节,python程序接受了我的命令。奇怪的是。我无法解释为什么,但在这种情况下它有效。