完成动力系统界面的更改

This commit is contained in:
2022-08-15 18:35:06 +08:00
parent 5299a4b865
commit 0592338ad7
2 changed files with 108 additions and 2 deletions
+92
View File
@@ -142,6 +142,21 @@ PowerSystem::PowerSystem(QWidget *parent) :
ScopeTemp->setGeometry(0,0,ui->frame_Temp->width(),ui->frame_Temp->height());
ScopeAlt->setGeometry(0,0,ui->frame_Alt->width(),ui->frame_Alt->height());
ScopeMa->setGeometry(0,0,ui->frame_Ma->width(),ui->frame_Ma->height());
//设置开车时间
time2 = QTime(0, 0);
connect(&timer2, &QTimer::timeout,
this, [this]()
{
time2.addSecs(1);
});
time = QTime(0, 0);
connect(&timer, &QTimer::timeout,
this, [this]()
{
time.addSecs(1);
ui->label_13->setText(time.toString("hh:mm:ss") );
} );
}
PowerSystem::~PowerSystem()
@@ -289,6 +304,83 @@ void PowerSystem::setTurbineState(mavlink_turbinestate_t *t)
setValue(ui->label_P5t,QString::number(t->P5t,'f',1));
setValue(ui->label_RPM_mea,QString::number(t->RPM_mea,'f',0));
TimeRPM timeRPM;
timeRPM.time = QDateTime::currentDateTime();
timeRPM.rpm = t->RPM_mea;
if(!timer2.isActive() )
{
timer2.start(1000);
}
if(time2.second() >= 3)
{
if(timer2.isActive() )
{
timer2.stop();
}
int lastPreNum;
if(t->RPM_mea < 10000 && isTiming == true) //如果当前转速小于10000,并且当前正在计时
{
for(int i = rpmList.size() - 1; i >= 0; --i)
{
if( (rpmList[i].time.secsTo(timeRPM.time) ) < 3) //对比3秒之内的转速
{
isTiming = false; //如果3秒内的转速都小于10000转,停止计时
if(rpmList[i].rpm >= 10000)
{
isTiming = true;
break;
}
}
else
{
lastPreNum = i;
break;
}
if(!isTiming)
{
timer.stop(); //停止计时
time = QTime(0, 0);
}
}
}
else if(t->RPM_mea >= 10000 && isTiming == false) //如果当前转速大于10000转,并且当前没有计时
{
for(int i = rpmList.size() - 1; i >= 0; --i)
{
if( (rpmList[i].time.secsTo(timeRPM.time) ) < 3) //对比3秒之内的转速
{
isTiming = true; //如果3秒内的转速都大于等于10000,开始计时
if(rpmList[i].rpm < 10000)
{
isTiming = false;
}
}
else
{
lastPreNum = i;
break;
}
}
if(isTiming) //启动计时
{
timer.start(1000);
}
}
for(int i = 0; i < lastPreNum; ++i) //3秒之外的转速删掉
{
rpmList.removeFirst();
}
}
rpmList.push_back(timeRPM); //把当前的数据添加到列表中
setValue(ui->label_T5,QString::number(t->T5 * 0.1 - 273.15,'f',1));
setValue(ui->label_Kfuel,QString::number(t->Kfuel,'f',1));
setValue(ui->label_RPM_des,QString::number(t->RPM_des,'f',0));
+16 -2
View File
@@ -1,4 +1,4 @@
#ifndef POWERSYSTEM_H
#ifndef POWERSYSTEM_H
#define POWERSYSTEM_H
#include <QWidget>
@@ -14,6 +14,9 @@
#include "QDebug"
#include "QScreen"
#include <QtGlobal>
#include <QTime>
#include <QDateTime>
#include <QTimer>
#include "Scope.h"
@@ -24,6 +27,12 @@ namespace Ui {
class PowerSystem;
}
struct TimeRPM
{
QDateTime time;
uint16_t rpm;
};
class PowerSystem : public QWidget
{
Q_OBJECT
@@ -72,7 +81,12 @@ public slots:
private:
QTimer timer2;//刚开始接收数据的那3秒
QTime time2;
bool isTiming = false;
QTimer timer;
QTime time;
QList<TimeRPM> rpmList;
QHash<int,QString> cmdList;
QWidget *m_parent;