mavlink的数据封装的结构体以及封装解析的函数都在mavlink代码库中的头文件中。
主要的结构体:E:\mavlink\mavlink\include\v1.0\mavlink_types.h
MAVPACKED(
typedef struct __mavlink_message {
uint16_t checksum; ///< sent at end of packet
uint8_t magic; ///< protocol magic marker
uint8_t len; ///< Length of payload
uint8_t seq; ///< Sequence of packet
uint8_t sysid; ///< ID of message sender system/aircraft
uint8_t compid; ///< ID of the message sender component
uint8_t msgid; ///< ID of message in payload
uint64_t payload64[(MAVLINK_MAX_PAYLOAD_LEN+MAVLINK_NUM_CHECKSUM_BYTES+7)/8];
}) mavlink_message_t;
mavlink数据的解析流程:
linux平台从串口接收到mavlink数据,解析出mavlink数据,根据msg_id区分不同的mavlink消息。
s_ret = read(uart_fd, mavlink_data, BUFFER_SIZE);//从串口接收飞控发送的mavlink数据
for (i = 0; i < s_ret; i++)
{
if (mavlink_parse_char(1, mavlink_data[i], &a