#include "PowerSystem.h" #include "ui_PowerSystem.h" PowerSystem::PowerSystem(QWidget *parent) : QWidget(parent), ui(new Ui::PowerSystem) { ui->setupUi(this); m_parent = parent; setWindowTitle(tr("PowerSyste")); //load qss QFile file(":/qss/PowerSystem.qss"); file.open(QFile::ReadOnly); QTextStream filetext(&file); QString stylesheet = filetext.readAll(); this->setStyleSheet(stylesheet); file.close(); //设置label /* setColor(ui->label_RS,state::success); setColor(ui->label_NMS,state::success); setColor(ui->label_ITP,state::success); setColor(ui->label_CR,state::success); setColor(ui->label_ITT,state::success); setColor(ui->label_RPM_mea,state::success); setColor(ui->label_RM,state::success); setColor(ui->label_ATP,state::success); setColor(ui->label_T5,state::success); setColor(ui->label_TRPM,state::success); */ //设置灯 setColor(ui->checkBox_1,state::success); setColor(ui->checkBox_2,state::success); setColor(ui->checkBox_3,state::success); setColor(ui->checkBox_4,state::success); setColor(ui->checkBox_5,state::success); setColor(ui->checkBox_6,state::success); setColor(ui->checkBox_7,state::success); setColor(ui->checkBox_8,state::success); setColor(ui->checkBox_9,state::success); setColor(ui->checkBox_10,state::success); setColor(ui->checkBox_11,state::success); setColor(ui->checkBox_12,state::success); setColor(ui->checkBox_13,state::success); setColor(ui->checkBox_14,state::success); setColor(ui->checkBox_15,state::success); setColor(ui->checkBox_16,state::success); setColor(ui->checkBox_17,state::success); setColor(ui->checkBox_18,state::success); setColor(ui->checkBox_19,state::success); setColor(ui->checkBox_20,state::success); setColor(ui->checkBox_21,state::success); cmdList.insert(0x13,"冷运转"); cmdList.insert(0x43,"停车"); cmdList.insert(0x73,"紧急停车"); cmdList.insert(0x15,"地面起动"); cmdList.insert(0x25,"空中起动"); cmdList.insert(0x45,"给定转速"); cmdList.insert(0x75,"开半加力(基准档)"); cmdList.insert(0x1c,"开半加力(1档)"); cmdList.insert(0x2c,"开半加力(2档)"); cmdList.insert(0x3c,"开半加力(3档)"); cmdList.insert(0x4c,"开半加力(4档)"); cmdList.insert(0x5c,"开半加力(5档)"); cmdList.insert(0x6c,"开半加力(6档)"); cmdList.insert(0x7c,"开半加力(7档)"); cmdList.insert(0x8c,"开半加力(8档)"); cmdList.insert(0x9c,"开半加力(9档)"); cmdList.insert(0x85,"开全加力(基准档)"); cmdList.insert(0x16,"开全加力(1档)"); cmdList.insert(0x26,"开全加力(2档)"); cmdList.insert(0x36,"开全加力(3档)"); cmdList.insert(0x46,"开全加力(4档)"); cmdList.insert(0x56,"开全加力(5档)"); cmdList.insert(0x66,"开全加力(6档)"); cmdList.insert(0x76,"开全加力(7档)"); cmdList.insert(0x86,"开全加力(8档)"); cmdList.insert(0x96,"开全加力(9档)"); cmdList.insert(0xb5,"关加力"); cmdList.insert(0xd5,"手动转速控制"); cmdList.insert(0x19,"核心机主燃油泵"); cmdList.insert(0x29,"加力主燃油泵"); cmdList.insert(0x49,"加力点火燃油泵"); cmdList.insert(0x79,"尾喷口舵机"); cmdList.insert(0x89,"点火器"); cmdList.insert(0xb9,"起动控制1"); cmdList.insert(0xd9,"起动控制2"); cmdList.insert(0x1a,"核心机点火油阀"); cmdList.insert(0x2a,"核心机优先油阀"); cmdList.insert(0x4a,"核心机轻吹油阀"); cmdList.insert(0x7a,"核心机起动气阀"); cmdList.insert(0x8a,"核心机主油阀"); cmdList.insert(0xba,"加力主油阀"); cmdList.insert(0xda,"加力轻吹阀"); cmdList.insert(0xea,"加力点火快速阀"); ScopeRPM = new Chart(ui->frame_RPM); ScopeTemp = new Chart(ui->frame_Temp); ScopeAlt = new Chart(ui->frame_Alt); ScopeMa = new Chart(ui->frame_Ma); /* ScopeRPM->chart()->axisX()->hide(); ScopeTemp->chart()->axisX()->hide(); ScopeAlt->chart()->axisX()->hide(); ScopeMa->chart()->axisX()->hide(); */ ScopeRPM->chart()->legend()->setAlignment(Qt::AlignRight); ScopeTemp->chart()->legend()->setAlignment(Qt::AlignRight); ScopeAlt->chart()->legend()->setAlignment(Qt::AlignRight); ScopeMa->chart()->legend()->setAlignment(Qt::AlignRight); ScopeRPM->setOperation(false); ScopeTemp->setOperation(false); ScopeAlt->setOperation(false); ScopeMa->setOperation(false); ScopeRPM->setRenderHint(QPainter::Antialiasing); ScopeTemp->setRenderHint(QPainter::Antialiasing); ScopeAlt->setRenderHint(QPainter::Antialiasing); ScopeMa->setRenderHint(QPainter::Antialiasing); } PowerSystem::~PowerSystem() { delete ui; } void PowerSystem::resizeEvent(QResizeEvent *event) { ScopeRPM->setGeometry(0,0,ui->frame_RPM->width(),ui->frame_RPM->height()); 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()); } void PowerSystem::mousePressEvent(QMouseEvent *event) { if(event->button() == Qt::RightButton) { qDebug() << event; } } void PowerSystem::closeEvent(QCloseEvent *event) { setFloat(); event->ignore(); } void PowerSystem::contextMenuEvent(QContextMenuEvent *event) { /* QMenu *menu = new QMenu(this); QAction *pAction = new QAction("float",this); connect(pAction,SIGNAL(triggered(bool)), this,SLOT(setFloat())); menu->addAction(pAction); menu->move(cursor().pos()); menu->show(); */ } void PowerSystem::setFloat(void) { if(this->parent()) { this->setParent(nullptr); QScreen *screen=QGuiApplication::primaryScreen ();; this->move((screen->availableGeometry().width()-this->width())/2,(screen->availableGeometry().height()-this->height())/2); this->show(); } else { this->setParent(m_parent); this->move(0,0); this->hide(); //qDebug() << m_parent->children(); } } void PowerSystem::setColor(QWidget *w,state s) { w->setProperty("state",s); w->style()->unpolish(w); w->style()->polish(w); } void PowerSystem::setValue(QLabel *w,QString s) { w->setText(s); } void PowerSystem::setTurbineState(mavlink_turbinestate_t *t) { QString runState; switch (t->SysState & 0x000F) { case 0x00: runState = "静止"; break; case 0x01: runState = "地面检查"; break; case 0x02: runState = "冷运转"; break; case 0x03: runState = "(预留)"; break; case 0x04: runState = "停车"; break; case 0x05: runState = "地起"; break; case 0x06: runState = "空起(预留)"; break; case 0x07: runState = "手动"; break; case 0x08: runState = "安全"; break; case 0x09: runState = "稳态"; break; case 0x0a: runState = "减速"; break; case 0x0b: runState = "加速"; break; case 0x0c: runState = "关加力"; break; case 0x0d: runState = "加力点火"; break; case 0x0e: runState = "半加力"; break; case 0x0f: runState = "全加力"; break; } setValue(ui->label_RS,runState); float cr = 0; if(t->P1t != 0) { cr = ((float)t->P5t * 1.0f)/t->P1t; setValue(ui->label_CR,QString::number(cr,'f',3)); } else { cr = 0; setValue(ui->label_CR,QString::number(0)); } if(t->SysState & 0x0010) { setValue(ui->label_RM,"正式运行"); } else { setValue(ui->label_RM,"地面调试"); } if((t->SysState & 0x0020) > 0) { setValue(ui->label_NMS,"N2传感器"); } else{ setValue(ui->label_NMS,"N1传感器"); } setValue(ui->label_P5t,QString::number(t->P5t,'f',1)); setValue(ui->label_RPM_mea,QString::number(t->RPM_mea,'f',0)); 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)); setValue(ui->label_RPM_des_ap,QString::number(t->RPM_des_ap,'f',0)); setValue(ui->label_stage_ap,(t->stage_ap == 1)?(tr("正常档位")):(tr("加速档"))); setValue(ui->label_temp_ap,QString::number(t->temp_ap + 200 - 273.15,'f',1)); setValue(ui->label_tas_ap,QString::number(t->tas_ap*10.0,'f',1)); setValue(ui->label_asl_ap,QString::number(t->asl_ap*100.0,'f',1)); setValue(ui->label_KabMain,QString::number(t->KabMain*30.0,'f',1)); setValue(ui->label_KabFire,QString::number(t->KabFire*30.0,'f',1)); setValue(ui->label_KDj,QString::number(t->KDj*30.0,'f',1)); setValue(ui->label_T1t,QString::number(t->T1t + 200 - 273.15,'f',1)); setValue(ui->label_P1t,QString::number(t->P1t,'f',1)); //setValue(ui->label_CR,QString::number(((float)t->P5t)/t->P1t,'f',1)); setValue(ui->label_DJS,QString::number(t->DJS / 4.0,'f',1)); setValue(ui->label_Vcc,QString::number(t->Vcc / 5.0,'f',1)); setValue(ui->label_P3t,QString::number(t->P3t,'f',0)); setValue(ui->label_rP51_Def,QString::number(t->Tbak * 0.01,'f',2)); setValue(ui->label_Wf_Def,QString::number(t->RPM_bak,'f',0)); //setValue() //setValue(ui->label_Tbak,QString::number(t->Tbak,'f',1)); //setValue(ui->label_RPM_bak,QString::number(t->RPM_bak,'f',1)); //setValue(ui->label_IOState,QString::number(t->IOState,'f',1)); //setValue(ui->label_SysState,QString::number(t->SysState,'f',1)); //setValue(ui->label_Fault,QString::number(t->Fault,'f',1)); //setValue(ui->label_rev,QString::number(t->rev,'f',1)); setValue(ui->label_CFuelMode,QString::number(t->CFuelMode,'f',1)); setValue(ui->label_Cmd,cmdList.value(t->Cmd)); setColor(ui->checkBox_1,((t->SysState & 0x0100) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_2,((t->SysState & 0x0200) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_3,((t->SysState & 0x0400) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_4,((t->SysState & 0x0800) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_5,((t->SysState & 0x1000) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_6,((t->SysState & 0x2000) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_7,((t->SysState & 0x4000) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_8,((t->Fault & 0x0001) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_9,((t->Fault & 0x0002) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_10,((t->Fault & 0x0004) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_11,((t->Fault & 0x0008) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_12,((t->Fault & 0x0010) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_13,((t->Fault & 0x0020) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_14,((t->Fault & 0x0040) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_15,((t->Fault & 0x0080) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_16,((t->Fault & 0x0100) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_17,((t->Fault & 0x0200) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_18,((t->Fault & 0x0400) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_19,((t->Fault & 0x0800) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_20,((t->Fault & 0x1000) > 0)?(state::failure):(state::success)); setColor(ui->checkBox_21,((t->Fault & 0x2000) > 0)?(state::failure):(state::success)); ScopeRPM->setSerieData(tr("物理"),t->RPM_mea); ScopeRPM->setSerieData(tr("期望"),t->RPM_des); ScopeTemp->setSerieData(tr("压比"),cr); //从新做一个函数 ScopeAlt->setSerieData(tr("Wf测"),t->P3t); } void PowerSystem::setCCMState(mavlink_ccmstate_t *t) { ui->label_STEMP1->setText(QString::number(t->temp[0] * 0.1,'f',1)); ui->label_STEMP2->setText(QString::number(t->temp[1] * 0.1,'f',1)); } void PowerSystem::setFuel(QVariant press, QVariant value) { setValue(ui->label_fuelpress,press.toString()); setValue(ui->label_fuelvalue,value.toString()); } void PowerSystem::setMa(QVariant Ma) { ScopeMa->setSerieData(tr("马赫"),Ma); } void PowerSystem::setAlt(QVariant Alt) { //ScopeAlt->setSerieData(tr("海拔"),Alt); }