MAVLINK生成自定义消息

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})

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用`node-mavlink`库解析Mavlink消息,您可以按照以下步骤进行操作: 1. 首先,确保已经安装了`node-mavlink`库。可以使用以下命令通过npm进行安装: ```shell npm install node-mavlink ``` 2. 在您的代码文件中,导入`node-mavlink`库: ```typescript import { MavLinkPacketParser, MavLinkPacket, MavLinkMessage } from 'node-mavlink'; ``` 3. 创建一个`MavLinkPacketParser`实例: ```typescript const parser = new MavLinkPacketParser(); ``` 4. 将收到的Mavlink数据包传递给`parser.parseBuffer`方法进行解析,并获取解析后的消息: ```typescript const buffer = Buffer.from(receivedPacketData); // 替换为您收到的Mavlink数据包 const packets: MavLinkPacket[] = parser.parseBuffer(buffer); ``` 5. 对于每个解析出来的数据包,您可以通过`packet.payload`属性获取消息的有效负载,并将其转换为特定的Mavlink消息类型: ```typescript for (const packet of packets) { const message: MavLinkMessage = packet.payload; // 根据具体的消息类型进行处理 switch (message.messageId) { case 1: // 根据消息ID进行处理 // 处理消息类型为1的消息 break; case 2: // 处理消息类型为2的消息 break; // 其他消息类型的处理... } } ``` 请注意,上述示例代码只是一个基本的模板,您需要根据您的实际需求和消息类型进行适当的处理。您可以参考`node-mavlink`库的文档以获取更多关于消息解析和处理的详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值