qgc 解析apm飞控新定义的mavlink消息(ubuntu)

1. 飞控中添加一条自定义mavlink包

加一个遥控和mavlink摇杆切换状态显示,也就是远程操控时候下面两货的切换:

qgc 解析apm飞控新定义的mavlink消息(ubuntu)qgc 解析apm飞控新定义的mavlink消息(ubuntu)

在VSCode中打开ArduCopter代码,打开子模块,如下编译器截图中操作即可:
qgc 解析apm飞控新定义的mavlink消息(ubuntu)

由于223在ardupilotmega.xml中没用到,故用了:

    </message>
    <message id="223" name="MAVLINK_REMOTE_OK">
             <description>mavlink remote contro1.</description>
            <field name="Mavlink_remote" type="uint8_t">valid length of buf</field>
    </message>

uint8_t ff=2; mavlink_msg_mavlink_remote_ok_send(chan,ff); 发送消息。
qgc 解析apm飞控新定义的mavlink消息(ubuntu)

再在
然后编译代码:
sudo sim_vehicle.py -v ArduCopter -f quad --console --map -D
编译代码:
开头用的软件在环仿真,调式了很久,用qgc的qDebug发现根本没发出来。qgc 解析apm飞控新定义的mavlink消息(ubuntu)
在qt5中搜索 mavlinkpro ,得到MAVLinkProtocol.cc,如下图:
qgc 解析apm飞控新定义的mavlink消息(ubuntu)
在mavlink接收端加入 qDebug()<< b.toHex();就能打印出所有qgc接收到的mavlink消息包,如图:
qgc 解析apm飞控新定义的mavlink消息(ubuntu)
用软件在环仿真,居然没有发出自定义的mavlink消息包。然后拿出cubeblack ,就能发消息了,qgc也能接收。

debug如下:
qgc 解析apm飞控新定义的mavlink消息(ubuntu)

2. qgc 加入解析mavlink

把生成的mavlink头文件,如下图:
qgc 解析apm飞控新定义的mavlink消息(ubuntu)
加入如下文件夹中:
qgc 解析apm飞控新定义的mavlink消息(ubuntu)
然后把,如下图中的 ardupilotmega.h中打开:
qgc 解析apm飞控新定义的mavlink消息(ubuntu)
由于msgid是223,crc 是67, len 1, len_min 1, 如下填写那个校验,就可以在代码里加入解析了。
qgc 解析apm飞控新定义的mavlink消息(ubuntu)

在如下文件中加入解析:
qgc 解析apm飞控新定义的mavlink消息(ubuntu)
然后debug:
qgc 解析apm飞控新定义的mavlink消息(ubuntu)
void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t message)中添加解算case:

qgc 解析apm飞控新定义的mavlink消息(ubuntu)

debug结果:
qgc 解析apm飞控新定义的mavlink消息(ubuntu)

完成

上一篇:PHP应用程序的应用程序性能管理


下一篇:如何更快地对复杂的应用程序进行故障排除?