Mavlink 解析 GPS笔记(一)
MAVLink传输时,以消息包作为基本单位,数据长度为8~263字节。消息数据包的结构如下:
这里放上一个数据包:FE 15 48 01 01 24 5A E4 8F 49 29 04 29 04 29 04 29 04 00 00 00 00 00 00 00 00 00 99 9E
下面具体说明每个数值
0)FE是包起始标记(包内的PAYLOAD字段很可能也包含FE,这个时候应该对比有效载荷长度LEN和PAYLOAD的长度,如果PAYLOAD长度小于LEN说明该FE并不是包起始标记)
1)LEN是15(16进制,转换为10进制应该是21,所以往后数PAYLOAD应该有21个字节)
2)SEQ即包的***是48
3)SYS即系统编号是01
4)COMP即部件ID号是01
5)MSG即消息包ID号是24(16进制,转换为10进制是36,可以根据这个ID号到https://mavlink.io/en/messages/common.html#SERVO_OUTPUT_RAW查询)
6)PAYLOAD即有效载荷数据,是“5A E4 8F 49 29 04 29 04 29 04 29 04 00 00 00 00 00 00 00 00 00”,共21个字节
7)CKA和CKB共两个字节组成了16位的校验码,“99 9E”
下面主要说一下MSG和PAYLOAD
MAVLink Messages在common文件夹内每个消息包的头文件中定义。在文档和网站(https://mavlink.io/en/messages/common.html#SERVO_OUTPUT_RAW)中msgid以蓝色的“#”加数字的方式来表示
上表中写明了PAYLOAD内数据的组成,其中以蓝色加**标识的是可选的数据,即PAYLOAD中不一定有该数据。通过计算( (32+8+16*8)/8=21)可知,该表内写明的数据(不含蓝色加**标识的数据)长度等于LEN的值(十进制下是21)