【PX4 飞控二次开发】使用MAVLink向地面站发送消息

MavLink的使用前提条件是安装好MavLink环境
在这里插入图片描述

一、 生成MavLink库

1.编写测试代码

<?xml version="1.0"?>
<mavlink>
  <version>3</version>
  <messages>
    <message id="188" name="TEST_TYPES">
      <description>Test all field types</description>
      <field type="uint8_t" name="c">uint8_t</field>
    </message>
  </messages>
</mavlink>

在这里插入图片描述

2.使用工具

在mavlink库目录下运行mavgenerate.py工具

python3 -m mavgenerate 

将文件前面编辑的 test.xml 文件选中
在这里插入图片描述
生成成功,在相应目录下找到文件
在这里插入图片描述
将生成的test文件夹中的文件复制到飞控源码中 Firmware/mavlink/include/mavlink/v2.0/common/ 目录下
在这里插入图片描述
在这里插入图片描述

二、修改代码

1.“common.h”添加头文件

Firmware/mavlink/include/mavlink/v2.0/common/

#include "./mavlink_msg_test_types.h"

在这里插入图片描述

2.修改 “mavlink_messages.cpp”

"Firmware/src/modules/mavlink/mavlink_messages.cpp"
添加类 “MavlinkStreamMytest

class MavlinkStreamMytest: public MavlinkStream
{
public:
	const char *get_name() const
	{
		return MavlinkStreamMytest::get_name_static();
	}

	static constexpr const char *get_name_static()
	{
		return "TEST_TYPES";
	}

	static constexpr uint16_t get_id_static()
	{
		return MAVLINK_MSG_ID_TEST_TYPES;
	}

	uint16_t get_id()
	{
		return get_id_static();
	}

	static MavlinkStream *new_instance(Mavlink *mavlink)
	{
		return new MavlinkStreamMytest(mavlink);
	}

	unsigned get_size() override
	{
		return MAVLINK_MSG_ID_TEST_TYPES_LEN  + MAVLINK_NUM_NON_PAYLOAD_BYTES ;	// commands stream is not regular and not predictable
	}

private:
	/* do not allow top copying this class */
	MavlinkStreamMytest(MavlinkStreamMytest &);
	MavlinkStreamMytest &operator = (const MavlinkStreamMytest &);

protected:
	explicit MavlinkStreamMytest(Mavlink *mavlink) : MavlinkStream(mavlink){}
	~MavlinkStreamMytest(){}
	bool send(const hrt_abstime t)
	{
		mavlink_test_types_t test;
		test.c = 8;
		mavlink_msg_test_types_send_struct(_mavlink->get_channel(), &test);
		return true;
	}
};

在这里插入图片描述
StreamListItem streams_list[] 将编写的类添加到列表中

create_stream_list_item<MavlinkStreamMytest>(),

在这里插入图片描述在这里插入图片描述

3.在mavlink_main.cpp设置频率

"Firmware/src/modules/mavlink/mavlink_main.cpp"
在这里插入图片描述

三、下载代码查看结果

1.编译下载

make px4_fmu-v3_default upload

在这里插入图片描述
拔插一次USB,进入下载
在这里插入图片描述

2.查看输出结果

windows 下载MP地面站源代码
在这里插入图片描述
VS2015打开项目
在这里插入图片描述
在这里插入图片描述
解析出来的ID值和代码设置的ID一致
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dy6667188

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值