#include "ServoSystem.h" #include "ui_ServoSystem.h" ServoSystem::ServoSystem(QWidget *parent) : QWidget(parent), ui(new Ui::ServoSystem) { ui->setupUi(this); m_parent = parent; setWindowTitle(tr("ServoSyste")); //load qss QFile file(":/qss/ServoSystem.qss"); file.open(QFile::ReadOnly); QTextStream filetext(&file); QString stylesheet = filetext.readAll(); this->setStyleSheet(stylesheet); file.close(); //======== setColor(ui->checkBox_onBoard,state::success); setColor(ui->checkBox_28v,state::success); setColor(ui->checkBox_56v,state::success); setColor(ui->checkBox_AirSpeed,state::success); setColor(ui->checkBox_500W,state::failure); //setColor(ui->label_LE_SBIT,state::failure); setCheckState(6,state::failure); setCheckState(7,state::failure); setCheckState(8,state::failure); setCheckState(9,state::failure); setCheckState(10,state::failure); setCheckState(11,state::failure); Config *cfg = new Config(); QVariant la; QVariant ra; QVariant le; QVariant re; QVariant ru; cfg->getServoOffset(&la,&ra,&le,&re,&ru); m_la = la.toFloat(); m_ra = ra.toFloat(); m_le = le.toFloat(); m_re = re.toFloat(); m_ru = ru.toFloat(); } ServoSystem::~ServoSystem() { delete ui; } void ServoSystem::closeEvent(QCloseEvent *event) { setFloat(); event->ignore(); } void ServoSystem::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 ServoSystem::setFloat(void) { if(this->parent()) { this->setParent(nullptr); this->show(); } else { this->setParent(m_parent); this->move(0,0); this->hide(); } // } void ServoSystem::setColor(QWidget *w,state s) { w->setProperty("state",s); w->style()->unpolish(w); w->style()->polish(w); } void ServoSystem::setValue(QLabel *w,QString s) { w->setText(s); } void ServoSystem::setBUMState(mavlink_bmustate_t *t) { ui->label_temp_28->setText(QString::number((int16_t)t->BAT1_low_temp_degC)+ "/" + QString::number((int16_t)t->BAT1_hi_temp_degC)); ui->label_temp_56->setText(QString::number((int16_t)t->BAT2_low_temp_degC)+ "/" + QString::number((int16_t)t->BAT2_hi_temp_degC)); ui->label_onBoard_28V_Voltage->setText(QString::number(t->BAT1_group_voltage_mv * 0.001,'f',1)); ui->label_onBoard_28V_Current->setText(QString::number((float)((int16_t)t->BAT1_group_current_dA) *0.1f,'f',1)); ui->label_onBoard_56V_Voltage->setText(QString::number(t->BAT2_group_voltage_mv * 0.001,'f',1)); ui->label_onBoard_56V_Current->setText(QString::number((float)((int16_t)t->BAT2_group_current_dA) *0.1f,'f',1)); ui->label_28V_percent->setText(QString::number((float)(t->BAT1_remain_perc *0.1f),'f',1)); ui->label_56V_percent->setText(QString::number((float)(t->BAT2_remain_perc *0.1f),'f',1)); } void ServoSystem::setCheckState(uint32_t pos,QVariant value) { switch (pos) { case 1: setColor(ui->checkBox_onBoard,(value.toBool())?(state::success):(state::failure)); break; case 2: setColor(ui->checkBox_28v,(value.toBool())?(state::success):(state::failure)); break; case 3: setColor(ui->checkBox_56v,(value.toBool())?(state::success):(state::failure)); break; case 4: setColor(ui->checkBox_AirSpeed,(value.toBool())?(state::success):(state::failure)); break; case 5: setColor(ui->checkBox_500W,(value.toBool())?(state::success):(state::failure)); break; case 6: setColor(ui->checkBox_5525D,(value.toBool())?(state::success):(state::failure)); break; case 7: setColor(ui->checkBox_5803A,(value.toBool())?(state::success):(state::failure)); break; case 8: setColor(ui->checkBox_5607A,(value.toBool())?(state::success):(state::failure)); break; case 9: setColor(ui->checkBox_4525D,(value.toBool())?(state::success):(state::failure)); break; case 10: setColor(ui->checkBox_atteck,(value.toBool())?(state::success):(state::failure)); break; case 11: setColor(ui->checkBox_slide,(value.toBool())?(state::success):(state::failure)); break; } //qDebug() << pos << value; } void ServoSystem::setServoState(mavlink_servo_output_raw_t *t) { /* statusui->setServo(1,QString::number( ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo14_raw)/32767.0 * 35.0 - m_la,'f',2), QString::number( ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo4_raw) /32767.0 * 35.0 - m_la,'f',2)); statusui->setServo(2,QString::number(-((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo11_raw)/32767.0 * 35.0 - m_ra,'f',2), QString::number(-((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo5_raw) /32767.0 * 35.0 - m_ra,'f',2)); statusui->setServo(3,QString::number(-((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo15_raw)/32767.0 * 25.0 - m_le,'f',2), QString::number(-((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo1_raw) /32767.0 * 25.0 - m_le,'f',2)); statusui->setServo(4,QString::number( ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo12_raw)/32767.0 * 25.0 - m_re,'f',2), QString::number( ((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo2_raw) /32767.0 * 25.0 - m_re,'f',2)); statusui->setServo(5,QString::number(-((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo13_raw)/32767.0 * 25.0 - m_ru,'f',2), QString::number(-((int16_t)dlink->mavlinknode->vehicle.servo_output_raw.servo3_raw) /32767.0 * 25.0 - m_ru,'f',2)); */ ui->label_rud_curr->setText( QString::number(-((int16_t)t->servo13_raw)/32767.0 * 25.0 - m_ru,'f',2)); ui->label_ele_l_curr->setText(QString::number(-((int16_t)t->servo15_raw)/32767.0 * 25.0 - m_le,'f',2)); ui->label_ele_r_curr->setText(QString::number( ((int16_t)t->servo12_raw)/32767.0 * 25.0 - m_re,'f',2)); ui->label_ail_l_curr->setText(QString::number( ((int16_t)t->servo14_raw)/32767.0 * 35.0 / 1.12 - m_la,'f',2)); ui->label_ail_r_curr->setText(QString::number(-((int16_t)t->servo11_raw)/32767.0 * 35.0 / 1.117 - m_ra,'f',2)); ui->label_rud_cmd->setText( QString::number(-((int16_t)t->servo3_raw)/32767.0 * 25.0 - m_ru,'f',2));//ru ui->label_ele_l_cmd->setText(QString::number(-((int16_t)t->servo1_raw)/32767.0 * 25.0 - m_le,'f',2));//le ui->label_ele_r_cmd->setText(QString::number( ((int16_t)t->servo2_raw)/32767.0 * 25.0 - m_re,'f',2));//re ui->label_ail_l_cmd->setText(QString::number( ((int16_t)t->servo4_raw)/32767.0 * 35.0 / 1.12 - m_la,'f',2));//la ui->label_ail_r_cmd->setText(QString::number(-((int16_t)t->servo5_raw)/32767.0 * 35.0 / 1.117 - m_ra,'f',2));//ra /* sbus = feedback (ra) sbus = feedback (re) sbus = feedback (ru) sbus = feedback (la) 15 sbus = feedback (le) health = 0 ra000 re000 ru000 la000 le000 GBIT zero SBIT */ uint16_t health = t->servo16_raw; //qDebug() << health; setColor(ui->label_LE_SBIT,((health&0x0004) > 0)?(state::success):(state::failure)); setColor(ui->label_LE_ZERO,((health&0x0002) > 0)?(state::success):(state::failure)); setColor(ui->label_LE_GBIT,((health&0x0001) > 0)?(state::success):(state::failure)); setColor(ui->label_LA_SBIT,((health&0x0020) > 0)?(state::success):(state::failure)); setColor(ui->label_LA_ZERO,((health&0x0010) > 0)?(state::success):(state::failure)); setColor(ui->label_LA_GBIT,((health&0x0008) > 0)?(state::success):(state::failure)); setColor(ui->label_RU_SBIT,((health&0x0100) > 0)?(state::success):(state::failure)); setColor(ui->label_RU_ZERO,((health&0x0080) > 0)?(state::success):(state::failure)); setColor(ui->label_RU_GBIT,((health&0x0040) > 0)?(state::success):(state::failure)); setColor(ui->label_RE_SBIT,((health&0x0800) > 0)?(state::success):(state::failure)); setColor(ui->label_RE_ZERO,((health&0x0400) > 0)?(state::success):(state::failure)); setColor(ui->label_RE_GBIT,((health&0x0200) > 0)?(state::success):(state::failure)); setColor(ui->label_RA_SBIT,((health&0x4000) > 0)?(state::success):(state::failure)); setColor(ui->label_RA_ZERO,((health&0x2000) > 0)?(state::success):(state::failure)); setColor(ui->label_RA_GBIT,((health&0x1000) > 0)?(state::success):(state::failure)); }