e7cf44504c
## 架构升级:Service Registry + Bridge 模式 - 新增 PluginSDK/IPluginServices.h:10 个纯虚服务接口(IDataProvider/ILinkProvider/...) - 新增 MavLinkServiceBridge:单 QObject 实现全部服务,隔离 MavLinkNode 依赖 - 升级 PluginManifest:支持 plugin.json 的 provides/consumes 声明式依赖 - 实现 ExtensionHost::autoWire():元对象自省自动连接信号槽 - 集成到 AppController:initModules() 中创建桥接器并注册到 ServiceRegistry - CockpitPlugin 演示服务发现:initialize() 中通过 PluginContext 查找服务 ## 代码清理 - Plugins/opmap:~280 行死代码(waypointsetting 100行注释块/tilematrix 54行/等27个文件) - Plugins/MavLinkNode:~200 行 GBK 乱码注释翻译为 UTF-8 + 12 行注释死代码 - Plugins/ToolsUI:~222 行死代码(ECU.cpp 82行/INS.cpp 113行/Parse/ToolsUI 等) - StatusUI/Setting/MissionUI:~65 行注释死代码 - Cockpit/leftladder.cpp:10 处 GBK 乱码翻译为中文 - 清理头文件注释掉的 #include(19 处)、空 if-else 分支、注释变量声明 ## 编译验证 - [100%] Built target GCS 零错误 - 运行时 timeout 3s 正常退出,无崩溃
368 lines
13 KiB
C++
368 lines
13 KiB
C++
#include "landinggear.h"
|
|
#include "ui_landinggear.h"
|
|
|
|
landinggear::landinggear(QWidget *parent)
|
|
: ToolsWidget(parent)
|
|
, ui(new Ui::landinggear)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
//load qss
|
|
QFile file(":/qss/LandingGear.qss");
|
|
file.open(QFile::ReadOnly);
|
|
QTextStream filetext(&file);
|
|
QString stylesheet = filetext.readAll();
|
|
this->setStyleSheet(stylesheet);
|
|
file.close();
|
|
|
|
|
|
|
|
setColor(ui->checkBox,state::inital);
|
|
setColor(ui->checkBox_2,state::inital);
|
|
setColor(ui->checkBox_3,state::inital);
|
|
setColor(ui->checkBox_4,state::inital);
|
|
setColor(ui->checkBox_5,state::inital);
|
|
setColor(ui->checkBox_6,state::inital);
|
|
setColor(ui->checkBox_7,state::inital);
|
|
setColor(ui->checkBox_8,state::inital);
|
|
|
|
setColor(ui->checkBox_9,state::inital);
|
|
setColor(ui->checkBox_10,state::inital);
|
|
setColor(ui->checkBox_11,state::inital);
|
|
setColor(ui->checkBox_12,state::inital);
|
|
setColor(ui->checkBox_13,state::inital);
|
|
setColor(ui->checkBox_14,state::inital);
|
|
setColor(ui->checkBox_15,state::inital);
|
|
setColor(ui->checkBox_16,state::inital);
|
|
|
|
setColor(ui->checkBox_17,state::inital);
|
|
setColor(ui->checkBox_18,state::inital);
|
|
setColor(ui->checkBox_19,state::inital);
|
|
setColor(ui->checkBox_20,state::inital);
|
|
setColor(ui->checkBox_21,state::inital);
|
|
setColor(ui->checkBox_22,state::inital);
|
|
setColor(ui->checkBox_23,state::inital);
|
|
setColor(ui->checkBox_24,state::inital);
|
|
|
|
setColor(ui->checkBox_DO_1,inital);//ok
|
|
setColor(ui->checkBox_DO_2,inital);//no
|
|
setColor(ui->checkBox_DO_3,inital);
|
|
setColor(ui->checkBox_DO_4,inital);
|
|
setColor(ui->checkBox_DO_5,inital);
|
|
setColor(ui->checkBox_DO_6,inital);
|
|
setColor(ui->checkBox_DO_7,inital);
|
|
setColor(ui->checkBox_DO_8,inital);
|
|
|
|
setColor(ui->checkBox_DO_9, inital);
|
|
setColor(ui->checkBox_DO_10,inital);
|
|
setColor(ui->checkBox_DO_11,inital);
|
|
setColor(ui->checkBox_DO_12,inital);
|
|
setColor(ui->checkBox_DO_13,inital);
|
|
setColor(ui->checkBox_DO_14,inital);
|
|
setColor(ui->checkBox_DO_15,inital);
|
|
setColor(ui->checkBox_DO_16,inital);
|
|
|
|
setColor(ui->checkBox_DO_17,inital);
|
|
setColor(ui->checkBox_DO_18,inital);
|
|
setColor(ui->checkBox_DO_19,inital);
|
|
setColor(ui->checkBox_DO_20,inital);
|
|
setColor(ui->checkBox_DO_21,inital);
|
|
setColor(ui->checkBox_DO_22,inital);
|
|
setColor(ui->checkBox_DO_23,inital);
|
|
setColor(ui->checkBox_DO_24,inital);
|
|
|
|
|
|
timer = new QTimer(this);
|
|
timer->setInterval(20);//100Hz
|
|
|
|
/*
|
|
connect(timer,&QTimer::timeout,
|
|
this,&landinggear::timerOut);
|
|
*/
|
|
|
|
fuelFile = new QFile(QString("./log/other/fuel%1.csv").arg(QDateTime::currentDateTime().toString("yyyyMMddHHmmss")));
|
|
fuelFile->open(QIODevice::WriteOnly);
|
|
timeCount = QTime::currentTime().msecsSinceStartOfDay();
|
|
|
|
|
|
QByteArray fueldata;
|
|
|
|
fueldata.clear();
|
|
fueldata.append("time"); fueldata.append(",");
|
|
fueldata.append("ecleps"); fueldata.append(",");
|
|
fueldata.append("fuel"); fueldata.append("\n");
|
|
|
|
QTextStream stream(fuelFile);
|
|
stream << fueldata;
|
|
fuelFile->flush();
|
|
|
|
}
|
|
|
|
landinggear::~landinggear()
|
|
{
|
|
if(fuelFile)
|
|
{
|
|
fuelFile->close();
|
|
fuelFile->deleteLater();
|
|
}
|
|
|
|
|
|
delete ui;
|
|
}
|
|
|
|
void landinggear::timerOut(void)
|
|
{
|
|
uint8_t byte[4] = {0};
|
|
|
|
|
|
}
|
|
|
|
void landinggear::recieveData(const int &id, const QByteArray &data)
|
|
{
|
|
//return;
|
|
|
|
if(id == 0)
|
|
{
|
|
Parse *parse = new Parse;
|
|
|
|
connect(this,&landinggear::parseData,
|
|
parse,&Parse::parseData);
|
|
|
|
connect(parse,&Parse::gear_Info,
|
|
this,&landinggear::gear_Info);
|
|
|
|
connect(parse,&Parse::actuator_info,
|
|
this,&landinggear::actuator_info);
|
|
|
|
connect(parse,&Parse::actuator1_info,
|
|
this,&landinggear::actuator1_info);
|
|
|
|
connect(parse,&Parse::actuator2_info,
|
|
this,&landinggear::actuator2_info);
|
|
|
|
|
|
QThreadPool::globalInstance()->start(parse);
|
|
emit parseData(id,data);
|
|
}
|
|
else if(id == 1)
|
|
{
|
|
Parse *parse = new Parse;
|
|
|
|
connect(this,&landinggear::parseData,
|
|
parse,&Parse::parseData);
|
|
|
|
connect(parse,&Parse::actuator_info,
|
|
this,&landinggear::actuator_info);
|
|
|
|
connect(parse,&Parse::actuator1_info,
|
|
this,&landinggear::actuator1_info);
|
|
|
|
connect(parse,&Parse::actuator2_info,
|
|
this,&landinggear::actuator2_info);
|
|
|
|
QThreadPool::globalInstance()->start(parse);
|
|
emit parseData(id,data);
|
|
}
|
|
}
|
|
|
|
void landinggear::gear_Info(Parse::_gear info)
|
|
{
|
|
setColor(ui->checkBox, (info.SW[0])?(state::success):(state::inital));//ok
|
|
setColor(ui->checkBox_2,(info.SW[1])?(state::inital):(state::success));//no
|
|
setColor(ui->checkBox_3,(info.SW[2])?(state::inital):(state::success));
|
|
setColor(ui->checkBox_4,(info.SW[3])?(state::inital):(state::success));
|
|
setColor(ui->checkBox_5,(info.SW[4])?(state::inital):(state::success));
|
|
setColor(ui->checkBox_6,(info.SW[5])?(state::success):(state::inital));//ok
|
|
setColor(ui->checkBox_7,(info.SW[6])?(state::inital):(state::success));
|
|
setColor(ui->checkBox_8,(info.SW[7])?(state::inital):(state::success));
|
|
|
|
setColor(ui->checkBox_9, (info.SW[8])?(state::inital):(state::success));
|
|
setColor(ui->checkBox_10,(info.SW[9])?(state::inital):(state::success));
|
|
setColor(ui->checkBox_11,(info.SW[10])?(state::success):(state::inital));//ok
|
|
setColor(ui->checkBox_12,(info.SW[11])?(state::inital):(state::success));
|
|
setColor(ui->checkBox_13,(info.SW[12])?(state::inital):(state::success));
|
|
setColor(ui->checkBox_14,(info.SW[13])?(state::inital):(state::success));
|
|
setColor(ui->checkBox_15,(info.SW[14])?(state::inital):(state::success));
|
|
setColor(ui->checkBox_16,(info.SW[15])?(state::inital):(state::success));
|
|
|
|
setColor(ui->checkBox_17,(info.SW[16])?(state::inital):(state::success));
|
|
setColor(ui->checkBox_18,(info.SW[17])?(state::inital):(state::success));
|
|
setColor(ui->checkBox_19,(info.SW[18])?(state::inital):(state::success));
|
|
setColor(ui->checkBox_20,(info.SW[19])?(state::inital):(state::success));
|
|
setColor(ui->checkBox_21,(info.SW[20])?(state::inital):(state::success));
|
|
setColor(ui->checkBox_22,(info.SW[21])?(state::inital):(state::success));
|
|
setColor(ui->checkBox_23,(info.SW[22])?(state::inital):(state::success));
|
|
setColor(ui->checkBox_24,(info.SW[23])?(state::inital):(state::success));
|
|
|
|
ui->lineEdit_p1->setText(QString::number(info.LeftPressure,'f',3));
|
|
ui->lineEdit_p2->setText(QString::number(info.AirPressure,'f',3));
|
|
ui->lineEdit_p3->setText(QString::number(info.RightPressure,'f',3));
|
|
ui->lineEdit_rpm1->setText(QString::number(info.LeftWheel,'f',0));
|
|
ui->lineEdit_rpm2->setText(QString::number(info.RightWheel,'f',0));
|
|
ui->lineEdit_rpm3->setText(QString::number(info.rpm3,'f',0));
|
|
ui->lineEdit_rpm4->setText(QString::number(info.rpm4,'f',0));
|
|
ui->lineEdit_rpm5->setText(QString::number(info.fuel,'f',5));
|
|
|
|
|
|
|
|
|
|
|
|
ui->label_cpuload->setText(QString::number(info.cpu_load) + "us");
|
|
|
|
setColor(ui->checkBox_DO_1,(info.DO[0])?(state::success):(state::inital));//ok
|
|
setColor(ui->checkBox_DO_2,(info.DO[1])?(state::success):(state::inital));//no
|
|
setColor(ui->checkBox_DO_3,(info.DO[2])?(state::success):(state::inital));
|
|
setColor(ui->checkBox_DO_4,(info.DO[3])?(state::success):(state::inital));
|
|
setColor(ui->checkBox_DO_5,(info.DO[4])?(state::success):(state::inital));
|
|
setColor(ui->checkBox_DO_6,(info.DO[5])?(state::success):(state::inital));//ok
|
|
setColor(ui->checkBox_DO_7,(info.DO[6])?(state::success):(state::inital));
|
|
setColor(ui->checkBox_DO_8,(info.DO[7])?(state::success):(state::inital));
|
|
|
|
setColor(ui->checkBox_DO_9, (info.DO[8])?(state::success):(state::inital));
|
|
setColor(ui->checkBox_DO_10,(info.DO[9])?(state::success):(state::inital));
|
|
setColor(ui->checkBox_DO_11,(info.DO[10])?(state::success):(state::inital));//ok
|
|
setColor(ui->checkBox_DO_12,(info.DO[11])?(state::success):(state::inital));
|
|
setColor(ui->checkBox_DO_13,(info.DO[12])?(state::success):(state::inital));
|
|
setColor(ui->checkBox_DO_14,(info.DO[13])?(state::success):(state::inital));
|
|
setColor(ui->checkBox_DO_15,(info.DO[14])?(state::success):(state::inital));
|
|
setColor(ui->checkBox_DO_16,(info.DO[15])?(state::success):(state::inital));
|
|
|
|
setColor(ui->checkBox_DO_17,(info.DO[16])?(state::success):(state::inital));
|
|
setColor(ui->checkBox_DO_18,(info.DO[17])?(state::success):(state::inital));
|
|
setColor(ui->checkBox_DO_19,(info.DO[18])?(state::success):(state::inital));
|
|
setColor(ui->checkBox_DO_20,(info.DO[19])?(state::success):(state::inital));
|
|
setColor(ui->checkBox_DO_21,(info.DO[20])?(state::success):(state::inital));
|
|
setColor(ui->checkBox_DO_22,(info.DO[21])?(state::success):(state::inital));
|
|
setColor(ui->checkBox_DO_23,(info.DO[22])?(state::success):(state::inital));
|
|
setColor(ui->checkBox_DO_24,(info.DO[23])?(state::success):(state::inital));
|
|
|
|
ui->label_Gear_cmd->setText((info.cmd)?(tr("Gear Up")):(tr("Gear Down")));
|
|
|
|
QString statusStr = tr("unkown status");
|
|
switch (info.status) {
|
|
case 1:
|
|
statusStr = tr("CheckWoW1");
|
|
break;
|
|
case 2:
|
|
statusStr = tr("GearDownReady");
|
|
break;
|
|
case 3:
|
|
statusStr = tr("GearUpDoorCloseUnlock");
|
|
break;
|
|
case 4:
|
|
statusStr = tr("GearUpDoorOpenUnlock");
|
|
break;
|
|
case 5:
|
|
statusStr = tr("GearUpReady");
|
|
break;
|
|
case 6:
|
|
statusStr = tr("wait");
|
|
break;
|
|
case 7:
|
|
statusStr = tr("wait1");
|
|
break;
|
|
}
|
|
|
|
ui->label_Gear_status->setText(statusStr);
|
|
|
|
|
|
|
|
|
|
|
|
QByteArray fueldata;
|
|
|
|
fueldata.clear();
|
|
fueldata.append(QDateTime::currentDateTimeUtc().toString("yyyy.MM.dd HH:mm:ss:zzz")); fueldata.append(",");
|
|
fueldata.append(QString::number(QTime::currentTime().msecsSinceStartOfDay() - timeCount)); fueldata.append(",");
|
|
fueldata.append(QString::number(info.fuel)); fueldata.append("\n");
|
|
|
|
QTextStream stream(fuelFile);
|
|
stream << fueldata;
|
|
fuelFile->flush();
|
|
|
|
timeCount = QTime::currentTime().msecsSinceStartOfDay();
|
|
}
|
|
|
|
|
|
void landinggear::setDO(void)
|
|
{
|
|
QObject *obj = sender();
|
|
if(obj)
|
|
{
|
|
QCheckBox *ckb = qobject_cast<QCheckBox *>(obj);
|
|
if(ckb)
|
|
{
|
|
setColor(ckb, (ckb->isChecked())?(state::success):(state::inital));
|
|
}
|
|
}
|
|
}
|
|
|
|
void landinggear::actuator_info(Parse::_actuator info)
|
|
{
|
|
ui->label_0_type->setText(QString::number(info.type,16).toUpper());
|
|
ui->label_0_id->setText(QString::number(info.id,16).toUpper());
|
|
ui->label_0_wheel->setText(QString::number(info.wheel));
|
|
ui->label_0_trans_left->setText(QString::number(info.left_trans));
|
|
ui->label_0_trans_right->setText(QString::number(info.right_trans));
|
|
ui->label_0_status->setText(QString::number(info.status));
|
|
ui->label_0_current->setText(QString::number(info.current,'f',1));
|
|
ui->label_0_temp->setText(QString::number(info.temp));
|
|
|
|
|
|
//qDebug() << info.left_brake << info.right_brake;
|
|
|
|
|
|
}
|
|
|
|
void landinggear::actuator_info_brake(Parse::_actuator info)
|
|
{
|
|
// ui->label_0_left_brake->setText((info.left_brake == 0x11)?("变体抱死"):("变体解锁"));
|
|
// ui->label_0_right_brake->setText((info.right_brake == 0x11)?("变体抱死"):("变体解锁"));
|
|
}
|
|
|
|
|
|
|
|
void landinggear::actuator1_info(Parse::_actuator1 info)
|
|
{
|
|
ui->label_1_type->setText(QString::number(info.type,16).toUpper());
|
|
ui->label_1_id->setText(QString::number(info.id,16).toUpper());
|
|
ui->label_1_ail_left->setText(QString::number(info.left_ail));
|
|
ui->label_1_ail_right->setText(QString::number(info.right_ail));
|
|
ui->label_1_rud_left->setText(QString::number(info.left_rud));
|
|
ui->label_1_rud_right->setText(QString::number(info.right_rud));
|
|
ui->label_1_status->setText(QString::number(info.status));
|
|
ui->label_1_current->setText(QString::number(info.current,'f',1));
|
|
ui->label_1_temp->setText(QString::number(info.temp));
|
|
}
|
|
|
|
void landinggear::actuator2_info(Parse::_actuator2 info)
|
|
{
|
|
ui->label_2_type->setText(QString::number(info.type,16).toUpper());
|
|
ui->label_2_id->setText(QString::number(info.id,16).toUpper());
|
|
ui->label_2_ele_left->setText(QString::number(info.left_ele));
|
|
ui->label_2_ele_right->setText(QString::number(info.right_ele));
|
|
ui->label_2_brake_left->setText(QString::number(info.left_brake));
|
|
ui->label_2_brake_right->setText(QString::number(info.right_brake));
|
|
ui->label_2_status->setText(QString::number(info.status));
|
|
ui->label_2_current->setText(QString::number(info.current,'f',1));
|
|
ui->label_2_temp->setText(QString::number(info.temp));
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|