git clone https://github.com/mavlink/mavlink.git
cd mavlink
git submodule update --init --recursive
python -m mavgenerate
出现以下界面
XML填写自定义xml路径,直接在mavlink/message_definitions/v1.0/common.xml
添加
Out为输出路径
<?xml version="1.0"?>
<message id="99" name="gggGGG">
<description>hahaha</description>
<field type="char" name="custom_char">char</field>
<field type="int32_t" name="custom_int32">int32_t</field>
<field type="float[10]" name="custom_float_array">float_array</field>
</message>
导出的路径如下
//encode decode示例
#include <common/mavlink.h>
#include<iostream>
int main(){
mavlink_gggggg_t g;
g.custom_char = 'a';
g.custom_int32 = 4;
float array[]={1,2,3,4};
memset(g.custom_float_array,0,sizeof(g.custom_float_array));
memcpy(g.custom_float_array,array,sizeof(array));
uint8_t * buffer2= new uint8_t[300];
mavlink_message_t test_msg;
mavlink_msg_gggggg_pack(0x01,0x01,&test_msg,g.custom_char,g.custom_int32,g.custom_float_array);
mavlink_msg_to_send_buffer(buffer2,&test_msg);
// for(int i = 0 ; i < 300 ;i++){
// printf("%#X\n",buffer2[i]);
// }
mavlink_message_t test_msg2;
mavlink_status_t test_status2;
for(int i = 0 ; i < 300 ;i++){
if(mavlink_parse_char(MAVLINK_COMM_0, buffer2[i], &test_msg2, &test_status2)){
switch (test_msg2.msgid)
{
case MAVLINK_MSG_ID_gggGGG:
mavlink_gggggg_t g2;
mavlink_msg_gggggg_decode(&test_msg2,&g2);
printf("g2.custom_char = %c, g2.custom_int32 = %d\n",g2.custom_char,g2.custom_int32);
printf("g2.custom_float_array = \n");
for(int i = 0 ; i < sizeof(g2.custom_float_array)/sizeof(g2.custom_float_array[0]);i++){
printf("%f\n",g2.custom_float_array[i]);
}
break;
default:
break;
}
}
}
}
cmake_minimum_required(VERSION 3.0)
project(mavt)
include_directories(/home/wjd1/mavlink/outv1)
set(SRC src/main.cpp )
add_executable(a ${SRC})