完成动力系统界面的更改
This commit is contained in:
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user