void CarPI::_elm327PidChanged(int pid, QVector<int> data) { switch(pid) { case 0x04: { /* Obciążenie silnika */ if (data.size() == 1) { emit dialValueChanged(dialEngineLoad, data.at(0) * 100 / 255); } else { emit dialValueChanged(dialEngineLoad, 0); } break; } case 0x05: { /* Temperatura płynu chłodzącego */ if (data.size() == 1) { emit dialValueChanged(dialCoolantTemp, data.at(0) - 40); } break; } case 0x0B: { /* Ciśnienie absolutne w kolektorze dolotowym */ if (data.size() == 1) { /* OBD II podaje ciśnienie absolutne, jeżeli odejmiemy ciśnienie atmosferyczne uzyskamy nad/pod ciśnienie w kolektorze ssącym w kPa. * Kolejnym krokiem jest przeliczenie jednostki, używamy PSI */ emit dialValueChanged(dialBoost, (data.at(0) - _atmosphericPressure) * 0.145037738); } else { emit dialValueChanged(dialBoost, 0); } break; } case 0x0F: { if (data.size() == 1) { emit dialValueChanged(dialIntakeTemp, data.at(0) - 40); } break; } case 0x23: { /* Ciśnienie w listwie common-rail */ if (data.size() == 2) { emit dialValueChanged(dialFuelPressure, (((data.at(0) * 256) + data.at(1)) * 10) / 1000); } else { emit dialValueChanged(dialFuelPressure, 0); } break; } } }
QGraphicsItem *DialNode::guiItem() { DialWidget *GUI = new DialWidget(); if( GUI ) { GUI->setValue( mValOutputValue->variant().toReal() ); connect( this, SIGNAL(valueChanged(qreal)), GUI, SLOT(setValue(qreal)) ); connect( GUI, SIGNAL(valueChanged(qreal)), this, SLOT(dialValueChanged(qreal)) ); } return( GUI ); }
void CarPI::_elm327VoltageChanged(double voltage) { emit dialValueChanged(dialVoltage, voltage); }