#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(); cfg->getServoOffset(&dir_la,&dir_ra,&dir_le,&dir_re,&dir_ru, &max_la,&max_ra,&max_le,&max_re,&max_ru, &scale_la,&scale_ra,&scale_le,&scale_re,&scale_ru, &bias_la,&bias_ra,&bias_le,&bias_re,&bias_ru); ui->comboBox_Full->addItem("基准档",0x85); ui->comboBox_Full->addItem("1档",0x16); ui->comboBox_Full->addItem("2档",0x26); ui->comboBox_Full->addItem("3档",0x36); ui->comboBox_Full->addItem("4档",0x46); ui->comboBox_Full->addItem("5档",0x56); ui->comboBox_Full->addItem("6档",0x66); ui->comboBox_Full->addItem("7档",0x76); ui->comboBox_Full->addItem("8档",0x86); ui->comboBox_Full->addItem("9档",0x96); ui->comboBox_Full->setCurrentIndex(0); ui->comboBox_Half->addItem("基准档",0x75); ui->comboBox_Half->addItem("1档",0x1c); ui->comboBox_Half->addItem("2档",0x2c); ui->comboBox_Half->addItem("3档",0x3c); ui->comboBox_Half->addItem("4档",0x4c); ui->comboBox_Half->addItem("5档",0x5c); ui->comboBox_Half->addItem("6档",0x6c); ui->comboBox_Half->addItem("7档",0x7c); ui->comboBox_Half->addItem("8档",0x8c); ui->comboBox_Half->addItem("9档",0x9c); ui->comboBox_Half->setCurrentIndex(0); ui->comboBox_rate->addItem("10000",10000); ui->comboBox_rate->addItem("13700",13700); ui->comboBox_rate->addItem("15000",15000); ui->comboBox_rate->addItem("20000",20000); ui->comboBox_rate->addItem("25000",25000); ui->comboBox_rate->addItem("30000",30000); ui->comboBox_rate->addItem("35000",35000); ui->comboBox_rate->addItem("40000",40000); ui->comboBox_rate->addItem("46000",46000); ui->comboBox_rate->setEditable(true); ui->comboBox_rate->setCurrentIndex(-1); ui->comboBox_TestPoint->addItem("核心机主燃油泵",0x19); ui->comboBox_TestPoint->addItem("加力主燃油泵",0x29); ui->comboBox_TestPoint->addItem("加力点火燃油泵",0x49); ui->comboBox_TestPoint->addItem("尾喷口舵机",0x79); ui->comboBox_TestPoint->addItem("点火器",0x89); ui->comboBox_TestPoint->addItem("起动控制1",0xb9); ui->comboBox_TestPoint->addItem("起动控制2",0xd9); ui->comboBox_TestPoint->addItem("核心机点火油阀",0x1a); ui->comboBox_TestPoint->addItem("核心机优先油阀",0x2a); ui->comboBox_TestPoint->addItem("核心机清吹油阀",0x4a); ui->comboBox_TestPoint->addItem("核心机起动气阀",0x7a); ui->comboBox_TestPoint->addItem("核心机主油阀",0x8a); ui->comboBox_TestPoint->addItem("加力主油阀",0xba); ui->comboBox_TestPoint->addItem("加力清吹阀",0xda); ui->comboBox_TestPoint->addItem("加力点火快速阀",0xea); ui->comboBox_TestPoint->addItem("手动转速控制",0xd5); ui->comboBox_TestPoint->setCurrentIndex(-1); ui->comboBox_TestValue->show(); ui->comboBox_TestValue->setCurrentIndex(-1); //use_ext_ins参数名称 ui->comboBox_IMU->addItem("内置惯导",0); ui->comboBox_IMU->addItem("SBG",1); ui->comboBox_IMU->setCurrentIndex(0); ui->comboBox_ServoType->addItem("左副翼",0x01); ui->comboBox_ServoType->addItem("右副翼",0x02); ui->comboBox_ServoType->addItem("左升降",0x03); ui->comboBox_ServoType->addItem("右升降",0x04); ui->comboBox_ServoType->addItem("方向舵",0x05); ui->comboBox_ServoType->setCurrentIndex(0); /* ui->comboBox_sel_ch->addItem("关闭",0x00); ui->comboBox_sel_ch->addItem("左副翼",0x01); ui->comboBox_sel_ch->addItem("右副翼",0x02); ui->comboBox_sel_ch->addItem("左升降",0x03); ui->comboBox_sel_ch->addItem("右升降",0x04); ui->comboBox_sel_ch->addItem("方向舵",0x05); ui->comboBox_sel_ch->setCurrentIndex(0); */ //ui->pushButton_AirHeatOff->hide(); //ui->pushButton_AirHeatOn->hide(); //ui->pushButton_HeatOn3->hide(); //ui->pushButton_HeatOn4->hide(); m_ra = 0; m_la = 0; m_ru = 0; m_re = 0; m_le = 0; } 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(); this->show(); this->resize(m_parent->size()); } // } 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(dir_ru.toInt() * ((int16_t)t->servo13_raw)/32767.0 * max_ru.toDouble()/scale_ru.toDouble() - bias_ru.toDouble(),'f',2)); ui->label_ele_l_curr->setText(QString::number(dir_le.toInt() * ((int16_t)t->servo15_raw)/32767.0 * max_le.toDouble()/scale_le.toDouble() - bias_le.toDouble(),'f',2)); ui->label_ele_r_curr->setText(QString::number(dir_re.toInt() * ((int16_t)t->servo12_raw)/32767.0 * max_re.toDouble()/scale_re.toDouble() - bias_re.toDouble(),'f',2)); ui->label_ail_l_curr->setText(QString::number(dir_la.toInt() * ((int16_t)t->servo14_raw)/32767.0 * max_la.toDouble()/scale_la.toDouble() - bias_la.toDouble(),'f',2)); ui->label_ail_r_curr->setText(QString::number(dir_ra.toInt() * ((int16_t)t->servo11_raw)/32767.0 * max_ra.toDouble()/scale_ra.toDouble() - bias_ra.toDouble(),'f',2)); ui->label_rud_cmd->setText( QString::number(dir_ru.toInt() * ((int16_t)t->servo3_raw)/32767.0 * max_ru.toDouble()/scale_ru.toDouble() - bias_ru.toDouble(),'f',2));//ru ui->label_ele_l_cmd->setText(QString::number(dir_le.toInt() * ((int16_t)t->servo1_raw)/32767.0 * max_le.toDouble()/scale_le.toDouble() - bias_le.toDouble(),'f',2));//le ui->label_ele_r_cmd->setText(QString::number(dir_re.toInt() * ((int16_t)t->servo2_raw)/32767.0 * max_re.toDouble()/scale_re.toDouble() - bias_re.toDouble(),'f',2));//re ui->label_ail_l_cmd->setText(QString::number(dir_la.toInt() * ((int16_t)t->servo4_raw)/32767.0 * max_la.toDouble()/scale_la.toDouble() - bias_la.toDouble(),'f',2));//la ui->label_ail_r_cmd->setText(QString::number(dir_ra.toInt() * ((int16_t)t->servo5_raw)/32767.0 * max_ra.toDouble()/scale_ra.toDouble() - bias_ra.toDouble(),'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)); } float ServoSystem::param_getvalue(QVariant param,uint8_t type) { float value; union { uint8_t u8[8]; int8_t i8[8]; uint16_t u16[4]; int16_t i16[4]; uint32_t u32[2]; int32_t i32[2]; uint64_t u64; int64_t i64; float f[2]; double d; }src; switch (type) { case MAV_PARAM_TYPE_UINT8: { src.u8[0] = param.toUInt(); ((uint8_t *)&value)[0] = src.u8[0]; }break; case MAV_PARAM_TYPE_INT8: { src.i8[0] = param.toUInt(); ((int8_t *)&value)[0] = src.i8[0]; }break; case MAV_PARAM_TYPE_UINT16: { src.u16[0] = param.toUInt(); ((uint16_t *)&value)[0] = src.u16[0]; }break; case MAV_PARAM_TYPE_INT16: { src.i16[0] = param.toUInt(); ((int16_t *)&value)[0] = src.i16[0]; }break; case MAV_PARAM_TYPE_UINT32: { src.u32[0] = param.toUInt(); ((uint32_t *)&value)[0] = (uint32_t)src.u32[0]; }break; case MAV_PARAM_TYPE_INT32: { src.i32[0] = param.toUInt(); ((int32_t *)&value)[0] = (int32_t)src.i32[0]; }break; case MAV_PARAM_TYPE_UINT64: { src.u64 = param.toUInt(); ((uint64_t *)&value)[0] = (uint64_t )src.u64; }break; case MAV_PARAM_TYPE_INT64: { src.i64 = param.toUInt(); ((int64_t *)&value)[0] = (int64_t)src.i64; }break; case MAV_PARAM_TYPE_REAL32: { src.f[0] = param.toFloat(); ((float *)&value)[0] = (float)src.f[0]; }break; case MAV_PARAM_TYPE_REAL64: { src.d = param.toDouble(); ((double *)&value)[0]= (double)src.d; }break; default: { src.f[0] = param.toFloat(); ((float *)&value)[0] = (float)src.i32[0]; }break; } return value; } void ServoSystem::commandAccepted(bool flag,uint16_t command,uint8_t result) { bool isFundSender = false; QString string; //找到消息的发送者 QObjectList list = ui->frame->children(); // qDebug() << list; //qDebug() << CommandBox.findChildren(); if(command == m_command) { isFundSender = true; switch (result) { case MAV_RESULT_ACCEPTED: string.append(tr("%1,%2 accepted and executed").arg(command).arg(m_name)); break; case MAV_RESULT_TEMPORARILY_REJECTED: string.append(tr("%1,%2 rejected").arg(command).arg(m_name)); break; case MAV_RESULT_DENIED: string.append(tr("%1,%2 permanently denied").arg(command).arg(m_name)); break; case MAV_RESULT_UNSUPPORTED: string.append(tr("%1,%2 unsupported").arg(command).arg(m_name)); break; case MAV_RESULT_FAILED: string.append(tr("%1,%2 failed").arg(command).arg(m_name)); break; case MAV_RESULT_IN_PROGRESS: string.append(tr("%1,%2 being executed").arg(command).arg(m_name)); break; case 0xFE: string.append(tr("%1,%2 time out").arg(command).arg(m_name)); break; case 0xFF: string.append(tr("Please do not operate too fast, the last instruction has not been sent")); break; default: break; } ui->lineEdit_CommandName->clear(); m_name.clear(); m_param1 = 0; m_param2 = 0; m_param3 = 0; m_param4 = 0; m_param5 = 0; m_param6 = 0; m_param7 = 0; m_command = 0; m_confirm = 0; } if(string.size() > 0) { QTextToSpeech *tts = new QTextToSpeech(); tts->say(string); tts->deleteLater(); emit showMessage(string); } } void ServoSystem::on_comboBox_TestPoint_currentIndexChanged(int index) { switch (index) { case 0: case 1: case 2: case 3: case 15: ui->label_TestValue->show(); ui->label_TestValue->setText("转速"); ui->comboBox_TestValue->show(); ui->comboBox_TestValue->clear(); ui->comboBox_TestValue->addItem("10000",10000); if(index == 2) { ui->comboBox_TestValue->addItem("13700",13700); } ui->comboBox_TestValue->addItem("15000",15000); ui->comboBox_TestValue->addItem("20000",20000); ui->comboBox_TestValue->addItem("25000",25000); ui->comboBox_TestValue->addItem("30000",30000); ui->comboBox_TestValue->addItem("35000",35000); ui->comboBox_TestValue->addItem("40000",40000); if(index != 3) { ui->comboBox_TestValue->addItem("45000",45000); } ui->comboBox_TestValue->setCurrentIndex(0); break; case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: ui->label_TestValue->show(); ui->label_TestValue->setText("电平"); ui->comboBox_TestValue->show(); ui->comboBox_TestValue->clear(); ui->comboBox_TestValue->addItem("低电平",0); ui->comboBox_TestValue->addItem("高电平",1); ui->comboBox_TestValue->setEditable(true); ui->comboBox_TestValue->setCurrentIndex(1); break; case 4: ui->label_TestValue->hide(); ui->comboBox_TestValue->hide(); break; } } //二次确认 void ServoSystem::setSecondConfirm(QVariant value) { if(value.toBool() == true) { emit cmd_long(m_param1,m_param2,m_param3,m_param4,m_param5,m_param6,m_param7,m_command,m_confirm); } else { ui->lineEdit_CommandName->clear(); m_name.clear(); m_param1 = 0; m_param2 = 0; m_param3 = 0; m_param4 = 0; m_param5 = 0; m_param6 = 0; m_param7 = 0; m_command = 0; m_confirm = 0; } } void ServoSystem::on_pushButton_SendCommand_clicked() { if(cmdType == 0) { if(m_command == 0) { emit showMessage(tr("please set command first ,command :%1").arg(m_command)); return; } } if(cmdType == 0) { emit showMessage(tr("发送指令 ") + QString::number(m_command) + " " + m_name,5000); emit cmd_long(m_param1,m_param2,m_param3,m_param4,m_param5,m_param6,m_param7,m_command,m_confirm); } else if(cmdType == 1) { emit showMessage(tr("修改参数 ") + " " + m_id.toLatin1().data() + " " + QString::number(m_value),5000); emit WriteCmd(m_sysid,m_compid,m_id.toLatin1().data(),m_type,param_getvalue(m_value,m_type)); } } void ServoSystem::on_pushButton_Cancel_clicked() { ui->lineEdit_CommandName->clear(); m_name.clear(); m_param1 = 0; m_param2 = 0; m_param3 = 0; m_param4 = 0; m_param5 = 0; m_param6 = 0; m_param7 = 0; m_command = 0; m_confirm = 0; } void ServoSystem::on_commandClicked(QString name, float param1,float param2,float param3,float param4, float param5,float param6,float param7, uint16_t command,uint8_t confirmation) { m_name = name; m_param1 = param1; m_param2 = param2; m_param3 = param3; m_param4 = param4; m_param5 = param5; m_param6 = param6; m_param7 = param7; m_command = command; m_confirm = confirmation; ui->lineEdit_CommandName->setText(name); cmdType = 0; } void ServoSystem::on_paramClicked(uint8_t sysid, uint8_t compid , QString id, uint8_t type, float value) { m_sysid = sysid; m_compid = compid; m_id = id; m_type = type; m_value = value; ui->lineEdit_CommandName->setText(id + " " + QString::number(value)); cmdType = 1; } //测试指令 void ServoSystem::on_pushButton_SendTest_clicked() { //判断 两个 内容是否是空, float testPoint = 0; float testValue = 0; if(!ui->comboBox_TestValue->isHidden())//如果显示 { testPoint = ui->comboBox_TestPoint->currentData(Qt::UserRole).toFloat(); testValue = ui->comboBox_TestValue->currentData(Qt::UserRole).toFloat(); if((ui->comboBox_TestPoint->currentIndex() != -1)&&(ui->comboBox_TestValue->currentIndex() != -1)) { on_commandClicked(ui->comboBox_TestPoint->currentText() + " " + ui->comboBox_TestValue->currentText() , 103,testPoint,testValue,0,0,0,0,180,0); } else { QMessageBox *box = new QMessageBox(this); box->setWindowTitle(tr("警告")); box->setText(tr("请选择测试项和测试点")); box->show(); } } else { if(ui->comboBox_TestPoint->currentIndex() != -1) { testPoint = ui->comboBox_TestPoint->currentData(Qt::UserRole).toFloat(); on_commandClicked(ui->comboBox_TestPoint->currentText(), 103,testPoint,0,0,0,0,0,180,0); } else { QMessageBox *box = new QMessageBox(this); box->setWindowTitle(tr("警告")); box->setText(tr("请选择测试项和测试点")); box->show(); } } } //舵机指令 void ServoSystem::on_pushButton_Servo_Check_clicked() { on_commandClicked(ui->pushButton_Servo_Check->text(), 1,0,0,0,0,0,0,20004,0); } void ServoSystem::on_pushButton_Servo_Read_clicked() { on_commandClicked(ui->pushButton_Servo_Read->text(), 2,0,0,0,0,0,0,20004,0); } void ServoSystem::on_pushButton_Servo_Zero_clicked() { on_commandClicked(ui->pushButton_Servo_Zero->text(), 3,0,0,0,0,0,0,20004,0); } void ServoSystem::on_pushButton_Servo_Work_clicked() { on_commandClicked(ui->pushButton_Servo_Work->text(), 4,0,0,0,0,0,0,20004,0); } void ServoSystem::on_pushButton_coldrun_clicked() { on_commandClicked(ui->pushButton_coldrun->text(), 103,0x13,0,0,0,0,0,180,0); } void ServoSystem::on_pushButton_groundstartup_clicked() { on_commandClicked(ui->pushButton_groundstartup->text(), 103,0x15,0,0,0,0,0,180,0); } void ServoSystem::on_pushButton_Afterburner_off_clicked() { on_commandClicked(ui->pushButton_Afterburner_off->text(), 103,0xb5,20000,0,0,0,0,180,0); } void ServoSystem::on_pushButton_stop_clicked() { on_commandClicked(ui->pushButton_stop->text(), 103,0x43,0,0,0,0,0,180,0); } void ServoSystem::on_pushButton_EmergencyStop_clicked() { on_commandClicked(ui->pushButton_EmergencyStop->text(), 103,0x73,0,0,0,0,0,180,0); } void ServoSystem::on_pushButton_Afterburner_on_clicked() { //根据档位选择 float Level = ui->comboBox_Full->currentData(Qt::UserRole).toFloat(); on_commandClicked(ui->pushButton_Afterburner_on->text() + " " + ui->comboBox_Full->currentText(), 103,Level,46000,0,0,0,0,180,0); } void ServoSystem::on_pushButton_Afterburner_half_clicked() { float Level = ui->comboBox_Half->currentData(Qt::UserRole).toFloat(); on_commandClicked(ui->pushButton_Afterburner_half->text() + " " + ui->comboBox_Half->currentText(), 103,Level,46000,0,0,0,0,180,0); } void ServoSystem::on_pushButton_setRPM_clicked() { if(ui->comboBox_rate->currentIndex() != -1) { float rpm = ui->comboBox_rate->currentData(Qt::UserRole).toFloat(); on_commandClicked(ui->pushButton_setRPM->text() + " " + ui->comboBox_rate->currentText(), 103,0x45,rpm,0,0,0,0,180,0); } else { QMessageBox *box = new QMessageBox(this); box->setWindowTitle(tr("警告")); box->setText(tr("请设定给定转速")); box->show(); } } void ServoSystem::on_pushButton_IMU_clicked() { if((ui->comboBox_IMU->currentIndex() != -1)&&(ui->comboBox_sys->currentIndex() != -1)) { uint8_t sysid = ui->comboBox_sys->currentData(Qt::UserRole).toInt(); uint8_t compid = 1; QString id; uint8_t type = MAV_PARAM_TYPE_INT8; id.clear(); id.append("use_ext_ins"); //float value = param_getvalue(ui->comboBox_IMU->currentData(Qt::UserRole).toInt(),type); on_paramClicked(sysid,compid,id,type,ui->comboBox_IMU->currentData(Qt::UserRole).toDouble()); //emit showMessage(tr("修改参数 ") + " " + m_id.toLatin1().data() + " " + QString::number(ui->comboBox_IMU->currentData(Qt::UserRole).toInt()),5000); } else { QMessageBox *box = new QMessageBox(this); box->setWindowTitle(tr("警告")); box->setText(tr("请设定目标")); box->show(); } } void ServoSystem::on_pushButton_IAS_SEL_0_clicked() { if(ui->comboBox_sys->currentIndex() != -1) { uint8_t sysid = ui->comboBox_sys->currentData(Qt::UserRole).toInt(); uint8_t compid = 1; QString id; uint8_t type = MAV_PARAM_TYPE_UINT8; id.clear(); id.append("IAS_SEL"); //float value = param_getvalue(0,type); //emit showMessage(tr("修改参数 ") + " " + m_id.toLatin1().data() + " " + QString::number(0),5000); on_paramClicked(sysid,compid,id,type,0); } else { QMessageBox *box = new QMessageBox(this); box->setWindowTitle(tr("警告")); box->setText(tr("请设定目标")); box->show(); } } void ServoSystem::on_pushButton_IAS_SEL_1_clicked() { if(ui->comboBox_sys->currentIndex() != -1) { uint8_t sysid = ui->comboBox_sys->currentData(Qt::UserRole).toInt(); uint8_t compid = 1; QString id; uint8_t type = MAV_PARAM_TYPE_UINT8; id.clear(); id.append("IAS_SEL"); //float value = param_getvalue(1,type); //emit showMessage(tr("修改参数 ") + " " + m_id.toLatin1().data() + " " + QString::number(1),5000); on_paramClicked(sysid,compid,id,type,1); } else { QMessageBox *box = new QMessageBox(this); box->setWindowTitle(tr("警告")); box->setText(tr("请设定目标")); box->show(); } } void ServoSystem::on_pushButton_IAS_SEL_2_clicked() { if(ui->comboBox_sys->currentIndex() != -1) { uint8_t sysid = ui->comboBox_sys->currentData(Qt::UserRole).toInt(); uint8_t compid = 1; QString id; uint8_t type = MAV_PARAM_TYPE_UINT8; id.clear(); id.append("IAS_SEL"); //float value = param_getvalue(2,type); //emit showMessage(tr("修改参数 ") + " " + m_id.toLatin1().data() + " " + QString::number(2),5000); on_paramClicked(sysid,compid,id,type,2); } else { QMessageBox *box = new QMessageBox(this); box->setWindowTitle(tr("警告")); box->setText(tr("请设定目标")); box->show(); } } void ServoSystem::addVehicles(int sysid, int compid) { Q_UNUSED(compid) if(ui->comboBox_sys->findData(sysid) == -1) { ui->comboBox_sys->addItem(QString::number(sysid),sysid); } } void ServoSystem::on_pushButton_ServoSet_clicked() { if(ui->comboBox_ServoType->currentIndex() != -1) { switch(ui->comboBox_ServoType->currentData(Qt::UserRole).toInt()) { case 1: { m_la = ui->spinBox_Servo->value(); }break; case 2: { m_ra = ui->spinBox_Servo->value(); }break; case 3: { m_le = ui->spinBox_Servo->value(); }break; case 4: { m_re = ui->spinBox_Servo->value(); }break; case 5: { m_ru = ui->spinBox_Servo->value(); }break; } on_commandClicked(tr("设定舵机 %1 %2").arg(ui->comboBox_ServoType->currentText()).arg(ui->spinBox_Servo->value()), 106,m_ra,m_re,m_ru,m_la,m_le,0,180,0); //qDebug() << m_ra << m_re << m_ru << m_la << m_le; } else { QMessageBox *box = new QMessageBox(this); box->setWindowTitle(tr("警告")); box->setText(tr("请设定")); box->show(); } } void ServoSystem::on_pushButton_Zero_clicked() { m_ra = 0; m_la = 0; m_ru = 0; m_re = 0; m_le = 0; on_commandClicked(tr("设定舵机归零 %1").arg(ui->pushButton_Zero->text()), 106,m_ra,m_re,m_ru,m_la,m_le,0,180,0); } void ServoSystem::on_pushButton_setFuel_clicked() { double value = ui->doubleSpinBox_Fuel->value(); on_commandClicked(tr("%1 %2kg").arg(ui->pushButton_setFuel->text()).arg(QString::number(value)), value,0,0,0,0,0,0,20009,0); } /* void ServoSystem::on_pushButton_AngleZero_clicked()//动压归零 { on_commandClicked(tr("设定 %1").arg(ui->pushButton_AngleZero->text()), 0,0,1,0,0,0,0,20005,0); } void ServoSystem::on_pushButton_ZeroComplete_clicked() { on_commandClicked(tr("设定 %1").arg(ui->pushButton_ZeroComplete->text()), 0,0,0,0,0,0,0,20005,0); } */ void ServoSystem::on_pushButton_HeatOn1_clicked() { on_commandClicked(tr("设定 %1").arg(ui->pushButton_HeatOn1->text()), 1,0,0,0,0,0,0,20005,0); } void ServoSystem::on_pushButton_HeatOn2_clicked() { on_commandClicked(tr("设定 %1").arg(ui->pushButton_HeatOn2->text()), 0,1,0,0,0,0,0,20005,0); } //伺服指令 void ServoSystem::on_pushButton_AirHeatOn_clicked() { on_commandClicked(ui->pushButton_AirHeatOn->text(), 1,1,0,0,0,0,0,20005,0); } void ServoSystem::on_pushButton_HeatOff_clicked() { on_commandClicked(ui->pushButton_HeatOff->text(), 0,0,0,0,0,0,0,20005,0); } void ServoSystem::on_pushButton_ServoTest_clicked()//IDLE { on_commandClicked(tr("设定 %1").arg(ui->pushButton_ServoTest->text()), 0,0,0,0,0,0,0,20007,0); } void ServoSystem::on_pushButton_StabilizeTest_clicked() { on_commandClicked(tr("设定 %1").arg(ui->pushButton_StabilizeTest->text()), 1,0,0,0,0,0,0,20007,0); } void ServoSystem::on_pushButton_ManualTest_clicked() { on_commandClicked(tr("设定 %1").arg(ui->pushButton_ManualTest->text()), 2,0,0,0,0,0,0,20007,0); } void ServoSystem::on_pushButton_swep_clicked() { on_commandClicked(tr("设定 %1").arg(ui->pushButton_swep->text()), 3,0,0,0,0,0,0,20007,0); } void ServoSystem::on_pushButton_test_cmd_clicked() { uint8_t ch = 0; float A; float start; float stop; float K; //ch = ui->comboBox_sel_ch->currentData(Qt::UserRole).toInt(); /* 1 ail * 2 ele * 4 rud * */ ch |= ui->checkBox_ail->isChecked()?(1):(0); ch |= ui->checkBox_ele->isChecked()?(2):(0); ch |= ui->checkBox_rud->isChecked()?(4):(0); qDebug() << "ch" << ch; A = ui->doubleSpinBox_A_deg->value(); start = ui->doubleSpinBox__Start_frq_Hz->value(); stop = ui->doubleSpinBox_Stop_frq_Hz->value(); K = ui->doubleSpinBox_K_frq_Hz->value(); on_commandClicked(tr("设定 %1").arg(ui->pushButton_test_cmd->text()), ch,A,start,stop,K,0,0,20008,0); qDebug() << "Servo Test:" <pushButton_test_stop->text()), 0,0,0,0,0,0,0,20008,0); }