前言

Ubuntu 18.04
Qt5。13。2
qgc 4。0
在下图的页面处添加自己的数据显示
在这里插入图片描述

一、修改Vehicle.h

打开Vehicle.h
仿照类VehicleVibrationFactGroup
添加类TestInfoFactGroup如下,类名和里面的成员可以根据自己需要修改

class TestInfoFactGroup : public FactGroup
{
    Q_OBJECT

public:
    TestInfoFactGroup(QObject* parent = nullptr);

    Q_PROPERTY(Fact* test1       READ test1       CONSTANT)
    Q_PROPERTY(Fact* test2       READ test2       CONSTANT)
    Q_PROPERTY(Fact* test3       READ test3       CONSTANT)
    Q_PROPERTY(Fact* test4       READ test4       CONSTANT)

    Fact* test1 () { return &_test1Fact; }
    Fact* test2 () { return &_test2Fact; }
    Fact* test3 () { return &_test3Fact; }
    Fact* test4 () { return &_test4Fact; }

    static const char* _test1FactName;
    static const char* _test2FactName;
    static const char* _test3FactName;
    static const char* _test4FactName;

private:
    Fact            _test1Fact;
    Fact            _test2Fact;
    Fact            _test3Fact;
    Fact            _test4Fact;
};

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

在下图位置添加

    Q_PROPERTY(FactGroup* testInfo          READ testInfoFactGroup          CONSTANT)

在这里插入图片描述

在下图位置添加

    FactGroup* testInfoFactGroup            () { return &_testInfoFactGroup; }

在这里插入图片描述

在下图位置添加mavlink接收处理函数

    void _handleTestInfo                (mavlink_message_t& message);

函数名可以自己定义
在这里插入图片描述
在下图位置实例化一个对象:

    TestInfoFactGroup               _testInfoFactGroup;

在这里插入图片描述

在下图位置添加:

    static const char* _testInfoFactGroupName; 

在这里插入图片描述

二、修改Vehicle.cc

在下图位置添加

const char* Vehicle::_testInfoFactGroupName =           "testInfo";

在这里插入图片描述

在下图位置加上

    , _testInfoFactGroup(this)

在这里插入图片描述

在下图位置加上

    , _testInfoFactGroup(this)

在这里插入图片描述

在下图位置加上

    _addFactGroup(&_testInfoFactGroup,              _testInfoFactGroupName);

在这里插入图片描述

添加mavlink接收处理函数
将需要显示的数据解析并显示
在下图位置添加:
我这里直接借用的高度数据处理函数,显示高度数据,实际中具体根据需要显示的mavlink消息的msgid决定,可以是现成的,也可以是自定义的,case自己对应的msgid即可。
在下图位置添加:

        _handleTestInfo(message);

在这里插入图片描述

实现消息处理函数
添加如下:

void Vehicle::_handleTestInfo(mavlink_message_t& message)
{

    mavlink_altitude_t altitude;
    mavlink_msg_altitude_decode(&message, &altitude);
    if (!_globalPositionIntMessageAvailable) {
            _testInfoFactGroup.test1()->setRawValue(altitude.altitude_relative);
        if (!_gpsRawIntMessageAvailable) {
            _testInfoFactGroup.test1()->setRawValue(altitude.altitude_amsl);
        }
    }
}

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

里面根据msgid调用解包函数,我这里直接复制的上面的解包函数,实际的根据msgid调整。setRawValue()里面即是要显示的值

仿照VehicleVibrationFactGroup
在下图位置添加如下:

const char* TestInfoFactGroup::_test1FactName =      "test1";
const char* TestInfoFactGroup::_test2FactName =      "test2";
const char* TestInfoFactGroup::_test3FactName =      "test3";
const char* TestInfoFactGroup::_test4FactName =      "test4";

TestInfoFactGroup::TestInfoFactGroup(QObject* parent)
    : FactGroup(1000, ":/json/Vehicle/TestInfoFact.json", parent)
    , _test1Fact        (0, _test1FactName,         FactMetaData::valueTypeDouble)
    , _test2Fact        (0, _test2FactName,      FactMetaData::valueTypeDouble)
    , _test3Fact        (0, _test3FactName,         FactMetaData::valueTypeDouble)
    , _test4Fact   (0, _test4FactName,    FactMetaData::valueTypeUint32)
{
    _addFact(&_test1Fact,       _test1FactName);
    _addFact(&_test2Fact,       _test2FactName);
    _addFact(&_test3Fact,       _test3FactName);
    _addFact(&_test4Fact,  _test4FactName);
}

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

三、添加json文件

在src/Vehicle中添加TestInfoFact.json
在这里插入图片描述

内容如下:

[
{
    "name":             "test1",           //程序中的名字
    "shortDescription": "测试1",//页面中显示的名字
    "type":             "double", //类型
    "decimalPlaces":    2, //小数点后几位
    "units":            "v"  //单位
},
{
    "name":             "test2",
    "shortDescription": "测试2",
    "type":             "double",
    "decimalPlaces":    2,
    "units":            "v"
},
{
    "name":             "test3",
    "shortDescription": "测试3",
    "type":             "double",
    "decimalPlaces":    2,
    "units":            "v"
},
{
    "name":             "test4",
    "shortDescription": "测试4",
    "type":             "uint32"
}
]

在qt上搜索并打开qgroundcontrol.qrc
在这里插入图片描述
点击下图“添加-》添加文件”添加json文件
在这里插入图片描述
选择之前建立的json文件并打开
设置其别名为:Vehicle/TestInfoFact.json并回车

然后保存编译

插上飞控测试。
点击飞行视图的这个按钮
在这里插入图片描述

选中需要显示的数据并
在这里插入图片描述
正常的话“测试1”会显示高度数据,但是更新频率稍微慢一点
在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐