Files
gcs-nf/App/ToolsUI/ECU/ECU.cpp
T
2022-07-23 10:59:04 +08:00

589 lines
18 KiB
C++

#include "ECU.h"
#include "ui_ECU.h"
ECU::ECU(QWidget *parent) :
ToolsWidget(parent),
ui(new Ui::ECU)
{
ui->setupUi(this);
QFile file(":/qss/ECU.qss");
file.open(QFile::ReadOnly);
QTextStream filetext(&file);
QString stylesheet = filetext.readAll();
this->setStyleSheet(stylesheet);
file.close();
setWindowTitle(tr("ECU"));
//eadc
setColor(ui->labHeatMode,inital);
setColor(ui->labHeatStatus,inital);
setColor(ui->labPsi,inital);
setColor(ui->labPs,inital);
setColor(ui->labQci,inital);
setColor(ui->labQc,inital);
setColor(ui->labHp,inital);
setColor(ui->labHpr,inital);
setColor(ui->labTs,inital);
setColor(ui->labTt,inital);
setColor(ui->labMi,inital);
setColor(ui->labVi,inital);
setColor(ui->labVt,inital);
setColor(ui->labAdr,inital);
setColor(ui->labAoai1,inital);
setColor(ui->labAoai2,inital);
setColor(ui->labAoat1,inital);
setColor(ui->labAoat2,inital);
setColor(ui->labAosi1,inital);
setColor(ui->labAosi2,inital);
setColor(ui->labAost1,inital);
setColor(ui->labAost2,inital);
setColor(ui->labCoffpressK0,inital);
setColor(ui->labCoffpressK1,inital);
setColor(ui->labCoffpressK2,inital);
setColor(ui->labCoffpressK3,inital);
setColor(ui->labCoffAngleK0,inital);
setColor(ui->labCoffAngleK1,inital);
setColor(ui->labCoffAngleK2,inital);
setColor(ui->labCoffAngleK3,inital);
//故障字
setColor(ui->psFault,state::inital);
setColor(ui->qcFau,state::inital);
setColor(ui->tsFau,state::inital);
setColor(ui->aoa1Fau,state::inital);
setColor(ui->aoa2Fau,state::inital);
setColor(ui->aos1Fau,state::inital);
setColor(ui->aos2Fau,state::inital);
setColor(ui->heatFau,state::inital);
setColor(ui->exStorageFau,state::inital);
setColor(ui->aoaDiffFau,state::inital);
setColor(ui->aosDiffFau,state::inital);
setColor(ui->qcZeroFau,state::inital);
setColor(ui->overTempFau,state::inital);
setColor(ui->systemFau,state::inital);
//数据有效性
setColor(ui->psi,state::inital);
setColor(ui->ps,state::inital);
setColor(ui->qci,state::inital);
setColor(ui->qc,state::inital);
setColor(ui->hp,state::inital);
setColor(ui->hpr,state::inital);
setColor(ui->ts,state::inital);
setColor(ui->tt,state::inital);
setColor(ui->mi,state::inital);
setColor(ui->vi,state::inital);
setColor(ui->vt,state::inital);
setColor(ui->adr,state::inital);
setColor(ui->aoai1,state::inital);
setColor(ui->aoai2,state::inital);
setColor(ui->aoat1,state::inital);
setColor(ui->aoat2,state::inital);
setColor(ui->aosi1,state::inital);
setColor(ui->aosi2,state::inital);
setColor(ui->aost1,state::inital);
setColor(ui->aost2,state::inital);
//ecu
setColor(ui->label_rpm_c,inital);
setColor(ui->labRMP,inital);
setColor(ui->label_rpm_t,inital);
setColor(ui->labT1,inital);
setColor(ui->labT5,inital);
setColor(ui->labP2,inital);
setColor(ui->labServoCurrent,inital);
//setColor(ui->labOilLow,inital);
//setColor(ui->labP2High,inital);
setColor(ui->label_oilPressure,inital);
setColor(ui->labStates,inital);
//sspc
setColor(ui->labBusVoltage,inital);
setColor(ui->labBatteryVoltage,inital);
setColor(ui->labBatteryCurrent,inital);
setColor(ui->labMainVoltage,inital);
setColor(ui->labMainCurrent,inital);
setColor(ui->labCurrentCh1,inital);
setColor(ui->labCurrentCh2,inital);
setColor(ui->labCurrentCh3,inital);
setColor(ui->labCurrentCh4,inital);
setColor(ui->labCurrentCh5,inital);
setColor(ui->labCurrentCh6,inital);
setColor(ui->labCurrentCh7,inital);
setColor(ui->labCurrentCh8,inital);
setColor(ui->labCurrentCh9,inital);
setColor(ui->labCurrentCh10,inital);
setColor(ui->labCurrentCh11,inital);
setColor(ui->labCurrentCh12,inital);
setColor(ui->labCurrentCh13,inital);
//BAT
setColor(ui->label_BAT_CH1,inital);
setColor(ui->label_BAT_CH2,inital);
setColor(ui->label_BAT_CH3,inital);
setColor(ui->label_BAT_CH4,inital);
setColor(ui->label_BAT_CH5,inital);
setColor(ui->label_BAT_CH6,inital);
setColor(ui->label_BAT_CH7,inital);
setColor(ui->label_BAT_CH8,inital);
setColor(ui->label_BAT_CH9,inital);
setColor(ui->label_BAT_CH10,inital);
}
ECU::~ECU()
{
delete ui;
}
void ECU::recieveData(const int &id, const QByteArray &data)
{
//return;
if(id == 1)
{
Parse *parse = new Parse;
connect(this,&ECU::parseData,
parse,&Parse::parseData);
connect(parse,&Parse::EADC_Info,
this,&ECU::EADC_Info);
connect(parse,&Parse::ECU_Info,
this,&ECU::ECU_Info);
connect(parse,&Parse::SSPC_Info,
this,&ECU::SSPC_Info);
QThreadPool::globalInstance()->start(parse);
emit parseData(id,data);
}
}
void ECU::EADC_Info(Parse::_eadc info)
{
ui->labHeatMode->setText(info.heatmode);
ui->labHeatStatus->setText(info.heatstatus);
if((info.psi < 15000.0) || (info.psi > 110000.0))
setColor(ui->labPsi, state::failure);
else
setColor(ui->labPsi, state::success);
ui->labPsi->setText(QString::number(info.psi, 'f', 0) );
if((info.ps < 15000.0) || (info.ps > 110000.0))
setColor(ui->labPs, state::failure);
else
setColor(ui->labPs, state::success);
ui->labPs->setText(QString::number(info.ps, 'f', 0) );
if((info.qci < 0.0) || (info.qci > 104000.0))
setColor(ui->labQci, state::failure);
else
setColor(ui->labQci, state::success);
ui->labQci->setText(QString::number(info.qci, 'f', 0) );
if((info.qc < 0.0) || (info.qc > 104000.0))
setColor(ui->labQc, state::failure);
else
setColor(ui->labQc, state::success);
ui->labQc->setText(QString::number(info.qc, 'f', 0) );
if((info.hp < -600.0) || (info.hp > 13000.0))
setColor(ui->labHp, state::failure);
else
setColor(ui->labHp, state::success);
ui->labHp->setText(QString::number(info.hp, 'f', 1) );
if((info.hpr < -300.0) || (info.hpr > 300.0))
setColor(ui->labHpr, state::failure);
else
setColor(ui->labHpr, state::success);
ui->labHpr->setText(QString::number(info.hpr, 'f', 1) );
if((info.ts < -60.0) || (info.ts > 80.0))
setColor(ui->labTs, state::failure);
else
setColor(ui->labTs, state::success);
ui->labTs->setText(QString::number(info.ts, 'f', 1) );
if((info.tt < -60.0) || (info.tt > 350.0))
setColor(ui->labTt, state::failure);
else
setColor(ui->labTt, state::success);
ui->labTt->setText(QString::number(info.tt, 'f', 1) );
if(info.mi > 1.965)
setColor(ui->labMi, state::failure);
else
setColor(ui->labMi, state::success);
ui->labMi->setText(QString::number(info.mi, 'f', 3) );
if(info.vi > 1280.0)
setColor(ui->labVi, state::failure);
else
setColor(ui->labVi, state::success);
ui->labVi->setText(QString::number(info.vi, 'f', 1) );
if(info.vt > 2660.0)
setColor(ui->labVt, state::failure);
else
setColor(ui->labVt, state::success);
ui->labVt->setText(QString::number(info.vt, 'f', 1) );
if((info.adr < 0.182) || info.adr > 1.451)
setColor(ui->labAdr, state::failure);
else
setColor(ui->labAdr, state::success);
ui->labAdr->setText(QString::number(info.adr, 'f', 4) );
ui->labAoai1->setText(QString::number(info.aoai1, 'f', 1) );
ui->labAoai2->setText(QString::number(info.aoai2, 'f', 1) );
ui->labAoat1->setText(QString::number(info.aoat1, 'f', 1) );
ui->labAoat2->setText(QString::number(info.aoat2, 'f', 1) );
ui->labAosi1->setText(QString::number(info.aosi1, 'f', 1) );
ui->labAosi2->setText(QString::number(info.aosi2, 'f', 1) );
ui->labAost1->setText(QString::number(info.aost1, 'f', 1) );
ui->labAost2->setText(QString::number(info.aost2, 'f', 1) );
ui->labCoffpressK0->setText(QString::number(info.coffpress_k0, 'f', 1) );
ui->labCoffpressK1->setText(QString::number(info.coffpress_k1, 'f', 1) );
ui->labCoffpressK2->setText(QString::number(info.coffpress_k2, 'f', 1) );
ui->labCoffpressK3->setText(QString::number(info.coffpress_k3, 'f', 1) );
ui->labCoffAngleK0->setText(QString::number(info.coffangle_k0, 'f', 1) );
ui->labCoffAngleK1->setText(QString::number(info.coffangle_k1, 'f', 1) );
ui->labCoffAngleK2->setText(QString::number(info.coffangle_k2, 'f', 1) );
ui->labCoffAngleK3->setText(QString::number(info.coffangle_k3, 'f', 1) );
//故障字
setColor(ui->psFault,info.faultword.ps ? state::failure : state::success);
setColor(ui->qcFau,info.faultword.qc ? state::failure : state::success);
setColor(ui->tsFau,info.faultword.ts ? state::failure : state::success);
setColor(ui->aoa1Fau,info.faultword.aoa1 ? state::failure : state::success);
setColor(ui->aoa2Fau,info.faultword.aoa2 ? state::failure : state::success);
setColor(ui->aos1Fau,info.faultword.aos1 ? state::failure : state::success);
setColor(ui->aos2Fau,info.faultword.aos2 ? state::failure : state::success);
setColor(ui->heatFau,info.faultword.heat ? state::failure : state::success);
setColor(ui->exStorageFau,info.faultword.ex_storage ? state::failure : state::success);
setColor(ui->aoaDiffFau,info.faultword.aoa_diff ? state::failure : state::success);
setColor(ui->aosDiffFau,info.faultword.aos_diff ? state::failure : state::success);
setColor(ui->qcZeroFau,info.faultword.qc_zero ? state::failure : state::success);
setColor(ui->overTempFau,info.faultword.overtemp ? state::failure : state::success);
setColor(ui->systemFau,info.faultword.system ? state::failure : state::success);
//数据有效性
setColor(ui->psi,info.datavalid.psi ? state::failure : state::success);
setColor(ui->ps,info.datavalid.ps ? state::failure : state::success);
setColor(ui->qci,info.datavalid.qci ? state::failure : state::success);
setColor(ui->qc,info.datavalid.qc ? state::failure : state::success);
setColor(ui->hp,info.datavalid.hp ? state::failure : state::success);
setColor(ui->hpr,info.datavalid.hpr ? state::failure : state::success);
setColor(ui->ts,info.datavalid.ts ? state::failure : state::success);
setColor(ui->tt,info.datavalid.tt ? state::failure : state::success);
setColor(ui->mi,info.datavalid.mi ? state::failure : state::success);
setColor(ui->vi,info.datavalid.mi ? state::failure : state::success);
setColor(ui->vt,info.datavalid.vt ? state::failure : state::success);
setColor(ui->adr,info.datavalid.adr ? state::failure : state::success);
setColor(ui->aoai1,info.datavalid.aoai1 ? state::failure : state::success);
setColor(ui->aoai2,info.datavalid.aoai2 ? state::failure : state::success);
setColor(ui->aoat1,info.datavalid.aoat1 ? state::failure : state::success);
setColor(ui->aoat2,info.datavalid.aoat2 ? state::failure : state::success);
setColor(ui->aosi1,info.datavalid.aosi1 ? state::failure : state::success);
setColor(ui->aosi2,info.datavalid.aosi2 ? state::failure : state::success);
setColor(ui->aost1,info.datavalid.aost1 ? state::failure : state::success);
setColor(ui->aost2,info.datavalid.aost2 ? state::failure : state::success);
}
void ECU::ECU_Info(Parse::_ecu info)
{
ui->label_rpm_c->setText(QString::number(info.rpm_c, 'f', 0) );
if(info.rpm_c < 20000)
{
setColor(ui->label_rpm_c,state::failure);
}
else if(info.rpm_c < 21000)
{
setColor(ui->label_rpm_c,state::warning);
}
else
{
setColor(ui->label_rpm_c,state::success);
}
ui->labRMP->setText(QString::number(info.rpm, 'f', 0) );
if(info.rpm < 20000)
{
setColor(ui->labRMP,state::failure);
}
else if(info.rpm < 21000)
{
setColor(ui->labRMP,state::warning);
}
else
{
setColor(ui->labRMP,state::success);
}
ui->label_rpm_t->setText(QString::number(info.rpm_t, 'f', 0) );
if(info.rpm_t < 20000)
{
setColor(ui->label_rpm_t,state::failure);
}
else if(info.rpm_t < 21000)
{
setColor(ui->label_rpm_t,state::warning);
}
else
{
setColor(ui->label_rpm_t,state::success);
}
ui->labT1->setText(QString::number(info.t1, 'f', 0) );
//qDebug() << "t1" << info.t1;
if(info.p2 > 0.6)
setColor(ui->labP2, state::failure);
else
setColor(ui->labP2, state::success);
ui->labP2->setText(QString::number(info.p2, 'f', 2) );
ui->labServoCurrent->setText(QString::number(info.servo_current, 'f', 0) );
//ui->labOilLow->setText(info.oil_low);
//ui->label_oilPressure->setText(info.p2_high);
ui->labStates->setText(info.states);
}
void ECU::setECUTemp(qreal temp,qreal pressure)
{
if(temp > 850)
{
setColor(ui->labT5, state::failure);
}
else if(temp > 830)
{
setColor(ui->labT5, state::warning);
}
else
{
setColor(ui->labT5, state::success);
}
ui->labT5->setText(QString::number(temp, 'f', 0) );
if(pressure < 150)
{
setColor(ui->label_oilPressure, state::failure);
}
else if(pressure > 280)
{
setColor(ui->label_oilPressure, state::warning);
}
else
{
setColor(ui->label_oilPressure, state::success);
}
ui->label_oilPressure->setText(QString::number(pressure, 'f',0) );
}
void ECU::SSPC_Info(Parse::_sspc info)
{
ui->labBusVoltage->setText(QString::number(info.bus_voltage, 'f', 1) );
ui->labBatteryVoltage->setText(QString::number(info.battery_voltage, 'f', 1) );
ui->labBatteryCurrent->setText(QString::number(info.battery_current, 'f', 1) );
if(info.battery_current >= 50.0)
{
setColor(ui->labBatteryCurrent,failure);
}
else
{
setColor(ui->labBatteryCurrent,inital);
}
ui->labMainVoltage->setText(QString::number(info.main_voltage, 'f', 1) );
ui->labMainCurrent->setText(QString::number(info.main_current, 'f', 1) );
if(info.main_current >= 50.0)
{
setColor(ui->labMainCurrent,failure);
}
else
{
setColor(ui->labMainCurrent,inital);
}
ui->labCurrentCh1->setText(QString::number(info.current_ch1, 'f', 1) );
if(info.current_ch1 >= 32.0)
{
setColor(ui->labCurrentCh1,failure);
}
else
{
setColor(ui->labCurrentCh1,inital);
}
ui->labCurrentCh2->setText(QString::number(info.current_ch2, 'f', 1) );
if(info.current_ch2 >= 22.0)
{
setColor(ui->labCurrentCh2,failure);
}
else
{
setColor(ui->labCurrentCh2,inital);
}
ui->labCurrentCh3->setText(QString::number(info.current_ch3, 'f', 1) );
if(info.current_ch3 >= 10.0)
{
setColor(ui->labCurrentCh3,failure);
}
else
{
setColor(ui->labCurrentCh3,inital);
}
ui->labCurrentCh4->setText(QString::number(info.current_ch4, 'f', 1) );
if(info.current_ch4 >= 10.0)
{
setColor(ui->labCurrentCh4,failure);
}
else
{
setColor(ui->labCurrentCh4,inital);
}
ui->labCurrentCh5->setText(QString::number(info.current_ch5, 'f', 1) );
if(info.current_ch5 >= 2.0)
{
setColor(ui->labCurrentCh5,failure);
}
else
{
setColor(ui->labCurrentCh5,inital);
}
ui->labCurrentCh6->setText(QString::number(info.current_ch6, 'f', 1) );
if(info.current_ch6 >= 2.0)
{
setColor(ui->labCurrentCh6,failure);
}
else
{
setColor(ui->labCurrentCh6,inital);
}
ui->labCurrentCh7->setText(QString::number(info.current_ch7, 'f', 1) );
if(info.current_ch7 >= 2.0)
{
setColor(ui->labCurrentCh7,failure);
}
else
{
setColor(ui->labCurrentCh7,inital);
}
ui->labCurrentCh8->setText(QString::number(info.current_ch8, 'f', 1) );
if(info.current_ch8 >= 1.0)
{
setColor(ui->labCurrentCh8,failure);
}
else
{
setColor(ui->labCurrentCh8,inital);
}
ui->labCurrentCh9->setText(QString::number(info.current_ch9, 'f', 1) );
if(info.current_ch9 >= 1.0)
{
setColor(ui->labCurrentCh9,failure);
}
else
{
setColor(ui->labCurrentCh9,inital);
}
ui->labCurrentCh10->setText(QString::number(info.current_ch10, 'f', 1) );
if(info.current_ch10 >= 10.0)
{
setColor(ui->labCurrentCh10,failure);
}
else
{
setColor(ui->labCurrentCh10,inital);
}
ui->labCurrentCh11->setText(QString::number(info.current_ch11, 'f', 1) );
if(info.current_ch11 >= 6.0)
{
setColor(ui->labCurrentCh11,failure);
}
else
{
setColor(ui->labCurrentCh11,inital);
}
ui->labCurrentCh12->setText(QString::number(info.current_ch12, 'f', 1) );
if(info.current_ch12 >= 5.0)
{
setColor(ui->labCurrentCh12,failure);
}
else
{
setColor(ui->labCurrentCh12,inital);
}
ui->labCurrentCh13->setText(QString::number(info.current_ch13, 'f', 1) );
if(info.current_ch13 >= 1.0)
{
setColor(ui->labCurrentCh13,failure);
}
else
{
setColor(ui->labCurrentCh13,inital);
}
}
void ECU::setBat(quint16 value[10])
{
ui->label_BAT_CH1->setText(QString::number(value[0],'f',0));
ui->label_BAT_CH2->setText(QString::number(value[1],'f',0));
ui->label_BAT_CH3->setText(QString::number(value[2],'f',0));
ui->label_BAT_CH4->setText(QString::number(value[3],'f',0));
ui->label_BAT_CH5->setText(QString::number(value[4],'f',0));
ui->label_BAT_CH6->setText(QString::number(value[5],'f',0));
ui->label_BAT_CH7->setText(QString::number(value[6],'f',0));
ui->label_BAT_CH8->setText(QString::number(value[7],'f',0));
ui->label_BAT_CH9->setText(QString::number(value[8],'f',0));
ui->label_BAT_CH10->setText(QString::number(value[9],'f',0));
}