ArduSub程序学习(4)--添加自定义文件实现RGBled闪烁

今天我们还是实现RGBled闪烁,不同的是今天我们在libraries自建一个文件夹,通过我们自建的文件夹实现RGBled闪烁,大家能动手实践的一定动手实践,创建自定义文件的过程大同小异,不论什么版本,基本思路都是差不多的。

1.复制文件夹,修改文件夹名称

在路径libraries\AP_Notify下,复制该文件夹,并粘贴在libraries下,根据自己的喜好更换文件夹名称

我这里将其命名为:AP_My_Notify,并将其目录下对本次试验没有用的文件删除,同时将各文件进行重命名,这里在每个文件名称前面加上“My”

2.修改类名称

接下来对我们所修改的文件里面的类名称进行修改,逐个修改,所有的文件里名称都要修改,我这里是在每个类前面加一个“My_”,

所有的都需要更改,一个个的改,或者更改所有匹配项(容易分不清改动的地方),我就不一一的给大家展示了,关于这篇文章后面可能会出个视频带大家实践学习。

3.删除不需要的头文件

AP_Notify.cpp里面的头文件删除不需要的

原文件中的头文件

删除头文件后

另外My_AP_Notify.cpp和My_AP_Notify.h结尾有一个notify需要自己改个名字防止程序重定义

4.删除add_backends里面的不需要的

在My_AP_Notify.cpp中void My_AP_Notify::add_backends(void)删除里面不需要的后端

5.修改上层应用

在修改上层应用之前需要先让程序识别到我们自己定义的程序,这里需要打开ArduSub\wscriptArduSub\make.inc,在对应的文件中添加上我们自定义的文件夹,如下所示:我用的是waf编译,所以只更改ArduSub\wscript

6.开始对顶层应用进行修改:

在头文件Sub.h中导入我们自定义的头文件#include <AP_My_Notify/My_AP_Notify.h>: 

 7.创建自定义类的对象:

8.在ArduSub文件夹中创建一个leds.cpp的文件,用于对底层函数的调用;

这里创建的函数要在Sub.h里面声明一下

9.将函数添加到任务列表

10.对init_ardupilot函数进行修改,将自定义的功能在这里初始化(由于这里自定义的是对RGBLed的控制,因此要将原来的AP_Notify的初始化做屏蔽处理)

11.编译看是否有错

在这过程中可能会遇到各种报错,大家逐步的更重一下吧,我在这里例举几个并说出解决办法

①检测到 #include 错误。请更新 includePath。已为此翻译单元(/home/wby/ardupilot自定义/libraries/AP_My_Notify/My_AP_Notify.cpp)禁用波形曲线。C/C++(1696) 无法打开 源 文件 "include/mavlink/v2.0/ardupilotmega/version.h" (dependency of "GCS_MAVLink/GCS_MAVLink.h")C/C++(1696)

这里会出现例如#include "My_AP_Notify.h"头文件无法识别,下面有波浪线,最后报错是下面这种情况

解决办法是在ardupilot目录下搜索version.h文件查看位置,然后更新 includePath

使用 find 命令在整个项目中搜索 version.h 文件:

在终端输入命令find . -name version.h

find 命令的输出结果来看,项目中存在多个 version.h 文件,但它们都位于不同的目录中。特别是,缺失的 version.h 文件应该位于以下路径:

include/mavlink/v2.0/ardupilotmega/version.h

但在输出中,只有以下路径包含 ardupilotmega/version.h 文件:

./build/fmuv3/libraries/GCS_MAVLink/include/mavlink/v2.0/ardupilotmega/version.h

这个路径是构建输出目录中的路径,而不是源代码目录中的路径。这意味着编译器在构建时可以找到这个文件,但在 IDE 或代码编辑器的 includePath 中可能没有正确配置。

解决步骤

你的 IDE 或编译器可能需要更新 includePath 配置,以确保它可以找到构建输出目录中的文件。

如果你使用的是 VSCode,可以在 .vscode/c_cpp_properties.json 文件中添加 includePath,使其包括 build/fmuv3/libraries/GCS_MAVLink/include 路径:

可以按下shift+ctrl+p快捷键打开界面找到json文件。

这将帮助 IDE 找到构建目录中的头文件。

12.修改update程序

最后直到编译成功,自定义文件就添加成功了,后面就是在添加好的文件中My_AP_Notify.cpp等文件的操作了,和上一篇ArduSub程序学习(3)--控制RGB LED的颜色-优快云博客的步骤一样这里就不过多描述了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

仗剑走代码

“您的支持是我创作的动力”

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

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

打赏作者

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

抵扣说明:

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

余额充值