0
点赞
收藏
分享

微信扫一扫

QGC4.1.6地图页面添加数据显示

陌岛 2022-09-04 阅读 23


文章目录

  • ​​前言​​
  • ​​一、使用步骤​​

前言

qgc版本:4.1.16
QT编译套件:5.13.2
ubuntu 18.04

一、使用步骤

在下面目录添加​​TestInfoFactGroup.cc​​​和​​TestInfoFactGroup.h​​两个文件

QGC4.1.6地图页面添加数据显示_linux

在​​TestInfoFactGroup.h​​中添加如下:

#pragma once

#include "FactGroup.h"
#include "QGCMAVLink.h"

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

// Overrides from FactGroup
void handleMessage(Vehicle* vehicle,mavlink_message_t& message) override;

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

在​​TestInfoFactGroup.cc​​中添加如下:

#include "TestInfoFactGroup.h"
#include "Vehicle.h"
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);
// Start out as not available "--.--"
_test1Fact.setRawValue(qQNaN());
_test2Fact.setRawValue(qQNaN());
_test3Fact.setRawValue(qQNaN());
_test4Fact.setRawValue(qQNaN());
}

void TestInfoFactGroup::handleMessage(Vehicle*, mavlink_message_t& message)
{
if (message.msgid != MAVLINK_MSG_ID_ALTITUDE) {
return;
}
mavlink_altitude_t altitude;
mavlink_msg_altitude_decode(&message, &altitude);
test1()->setRawValue(altitude.altitude_relative);
_setTelemetryAvailable(true);
}

在​​qgroundcontrol.pro​​中添加头文件和cc文件

在下图位置加上​​src/Vehicle/TestInfoFactGroup.h \​

QGC4.1.6地图页面添加数据显示_json_02


在下图位置加上:​​src/Vehicle/TestInfoFactGroup.cc \​

QGC4.1.6地图页面添加数据显示_json_03


修改Vehicle.h

在下面位置添加

#include "TestInfoFactGroup.h"

QGC4.1.6地图页面添加数据显示_json_04


在下面位置加上

;

注意添加的位置,位置不对会报错

QGC4.1.6地图页面添加数据显示_linux_05

在下面位置加上

static const char* _testInfoFactGroupName;

QGC4.1.6地图页面添加数据显示_ubuntu_06


在下面位置加上

FactGroup* testInfoFactGroup            () { return &_testInfoFactGroup; }

QGC4.1.6地图页面添加数据显示_ubuntu_07


在下面位置加上

Q_PROPERTY(FactGroup*           testInfo        READ testInfoFactGroup         CONSTANT)

QGC4.1.6地图页面添加数据显示_linux_08

修改Vehicle.cc
在下面位置加上

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

QGC4.1.6地图页面添加数据显示_ubuntu_09


在下面位置加上

, _testInfoFactGroup            (this)

QGC4.1.6地图页面添加数据显示_json_10


在下面位置加上

, _testInfoFactGroup                (this)

QGC4.1.6地图页面添加数据显示_json_11


在下面位置加上

_addFactGroup(&_testInfoFactGroup,          _testInfoFactGroupName);

QGC4.1.6地图页面添加数据显示_PX4_12

添加JSON文件
在​​​srv/vehicle​​​中添加​​TestInfoFact.json​

QGC4.1.6地图页面添加数据显示_#include_13


内容如下:

{
"version": 1,
"fileType": "FactMetaData",
"QGC.MetaData.Facts":
[
{
"name": "test1",
"shortDesc": "测试1",
"type": "double",
"decimalPlaces": 2,
"units": "v"
},
{
"name": "test2",
"shortDesc": "测试2",
"type": "double",
"decimalPlaces": 2,
"units": "v"
},
{
"name": "test3",
"shortDesc": "测试3",
"type": "double",
"decimalPlaces": 2,
"units": "v"
},
{
"name": "test4",
"shortDesc": "测试4",
"type": "uint32"
}
]
}

其中 “name”:对应程序中的名字
“shortDesc”: 对应页面中显示的名字
“type”: 对应类型
“decimalPlaces”: 对应小数点后几位
“units”: 对应单位

在qt上搜索并打开`qgroundcontrol.qrc`

QGC4.1.6地图页面添加数据显示_ubuntu_14


点击下图“添加-》添加文件”添加json文件

QGC4.1.6地图页面添加数据显示_ubuntu_15


选择之前建立的json文件并打开

设置其别名为:​​Vehicle/TestInfoFact.json​​并回车

然后保存编译

插上飞控测试。
在飞行地图页面下方点击一个数字,设置为TestInfo的Test1,然后点击Close

QGC4.1.6地图页面添加数据显示_#include_16


正常的话会出现​​测试1​​,其值和高度相同,精度为小数点后两位

QGC4.1.6地图页面添加数据显示_#include_17


举报

相关推荐

0 条评论