#include "setpoint.h" #include "ui_setpoint.h" #include "config_mgr.h" #include #include "displacement_ds.h" #include "acceleration_ds.h" #include "velocity_ds.h" #include #include Setpoint::Setpoint(int slot_no_,int cardtype,QWidget *parent) : QWidget(parent), ui(new Ui::Setpoint) { ui->setupUi(this); slot_no = slot_no_; car_type = static_cast(cardtype); ui->label_slot->setText(QString::number(slot_no)); ui->comboBox_chan->setView(new QListView()); ui->comboBox_danger->setView(new QListView()); Init(); connect(ui->comboBox_chan, QOverload::of(&QComboBox::currentIndexChanged), this, &Setpoint::onComboBoxIndexChanged); current_index = ui->comboBox_chan->currentIndex(); } Setpoint::~Setpoint() { if(slider_1st != nullptr) delete slider_1st; if(slider_2nd != nullptr) delete slider_2nd; if(slider_3rd != nullptr) delete slider_3rd; if(slider_danger != nullptr) delete slider_danger; delete ui; } void Setpoint::Init(){ QVBoxLayout *layout_direct = new QVBoxLayout(ui->widget_direct); slider_1st = new RangeSlider; layout_direct->addWidget(slider_1st); QVBoxLayout *layout_1x_ampl = new QVBoxLayout(ui->widget_1x_ampl); slider_2nd = new RangeSlider; layout_1x_ampl->addWidget(slider_2nd); QVBoxLayout *layout_2x_ampl = new QVBoxLayout(ui->widget_2x_ampl); slider_3rd = new RangeSlider; layout_2x_ampl->addWidget(slider_3rd); QVBoxLayout *layout_danger = new QVBoxLayout(ui->widget_danger); slider_danger = new RangeSlider(1); layout_danger->addWidget(slider_danger); std::shared_ptr base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no); switch (car_type) { case kCardVibSingle:{ update(); }break; } QObject::connect(ui->lineEdit_1st_upper, &QLineEdit::editingFinished, [&]() { slider_1st->setUpperValue(ui->lineEdit_1st_upper->text().toFloat()); }); QObject::connect(slider_1st, &RangeSlider::rangeChanged, [&](float low,float high) { ui->lineEdit_1st_upper->setText(QString::number(high)); }); QObject::connect(slider_2nd, &RangeSlider::rangeChanged, [&](float low, float high) { ui->lineEdit_2nd_upper->setText(QString::number(high)); ui->lineEdit_2nd_lower->setText(QString::number(low)); }); QObject::connect(ui->lineEdit_2nd_upper, &QLineEdit::editingFinished, [&]() { slider_2nd->setUpperValue(ui->lineEdit_2nd_upper->text().toFloat()); }); QObject::connect(ui->lineEdit_2nd_lower, &QLineEdit::editingFinished, [&]() { slider_2nd->setLowerValue(ui->lineEdit_2nd_lower->text().toFloat()); }); QObject::connect(slider_3rd, &RangeSlider::rangeChanged, [&](float low, float high) { ui->lineEdit_3rd_upper->setText(QString::number(high)); ui->lineEdit_3rd_lower->setText(QString::number(low)); }); QObject::connect(ui->lineEdit_3rd_upper, &QLineEdit::editingFinished, [&]() { slider_2nd->setUpperValue(ui->lineEdit_3rd_upper->text().toFloat()); }); QObject::connect(ui->lineEdit_3rd_lower, &QLineEdit::editingFinished, [&]() { slider_2nd->setLowerValue(ui->lineEdit_3rd_lower->text().toFloat()); }); QObject::connect(slider_danger, &RangeSlider::rangeChanged, [&](float low,float high) { ui->lineEdit_danger_upper->setText(QString::number(high)); }); QObject::connect(ui->lineEdit_danger_upper, &QLineEdit::editingFinished, [&]() { slider_danger->setUpperValue(ui->lineEdit_danger_upper->text().toFloat()); }); } void Setpoint::on_pushButton_confirm_clicked() { std::shared_ptr base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no); std::shared_ptr setpoint_data = std::dynamic_pointer_cast(base_ptr); if(setpoint_data->base_config_[current_index].channel_type == kVibPressurePulsation){ setpoint_data->alert_danger_press[current_index].low_upper = ui->lineEdit_1st_upper->text().toFloat(); setpoint_data->alert_danger_press[current_index].low_enable = ui->checkBox_1st->checkState(); setpoint_data->alert_danger_press[current_index].mid1_upper = ui->lineEdit_2nd_upper->text().toFloat(); setpoint_data->alert_danger_press[current_index].mid1_enable = ui->checkBox_2nd->checkState(); setpoint_data->alert_danger_press[current_index].mid2_upper = ui->lineEdit_3rd_upper->text().toFloat(); setpoint_data->alert_danger_press[current_index].mid2_enable = ui->checkBox_3rd->checkState(); setpoint_data->alert_danger_press[current_index].danger_param = ui->comboBox_danger->currentIndex(); setpoint_data->alert_danger_press[current_index].danger_upper = ui->lineEdit_danger_upper->text().toFloat(); setpoint_data->alert_danger_press[current_index].danger_enable = ui->checkBox_danger->checkState(); }else{ setpoint_data->alert_danger[current_index].direct_upper = ui->lineEdit_1st_upper->text().toFloat(); setpoint_data->alert_danger[current_index].direct_enable = ui->checkBox_1st->checkState(); setpoint_data->alert_danger[current_index].x1_ampl_upper = ui->lineEdit_2nd_upper->text().toFloat(); setpoint_data->alert_danger[current_index].x1_ampl_lower = ui->lineEdit_2nd_lower->text().toFloat(); setpoint_data->alert_danger[current_index].x1_ampl_enable = ui->checkBox_2nd->checkState(); setpoint_data->alert_danger[current_index].x2_ampl_upper = ui->lineEdit_3rd_upper->text().toFloat(); setpoint_data->alert_danger[current_index].x2_ampl_lower = ui->lineEdit_3rd_lower->text().toFloat(); setpoint_data->alert_danger[current_index].x2_ampl_enable = ui->checkBox_3rd->checkState(); setpoint_data->alert_danger[current_index].danger_param = ui->comboBox_danger->currentIndex(); setpoint_data->alert_danger[current_index].danger_upper = ui->lineEdit_danger_upper->text().toFloat(); setpoint_data->alert_danger[current_index].danger_enable = ui->checkBox_danger->checkState(); } this->close(); } void Setpoint::on_pushButton_cancel_clicked() { this->close(); } void Setpoint::on_pushButton_set_default_clicked() { } void Setpoint::onComboBoxIndexChanged(int index){ std::shared_ptr base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no); std::shared_ptr setpoint_data = std::dynamic_pointer_cast(base_ptr); if(setpoint_data->base_config_[current_index].channel_type == kVibPressurePulsation){ setpoint_data->alert_danger_press[current_index].low_upper = ui->lineEdit_1st_upper->text().toFloat(); setpoint_data->alert_danger_press[current_index].low_enable = ui->checkBox_1st->checkState(); setpoint_data->alert_danger_press[current_index].mid1_upper = ui->lineEdit_2nd_upper->text().toFloat(); setpoint_data->alert_danger_press[current_index].mid1_enable = ui->checkBox_2nd->checkState(); setpoint_data->alert_danger_press[current_index].mid2_upper = ui->lineEdit_3rd_upper->text().toFloat(); setpoint_data->alert_danger_press[current_index].mid2_enable = ui->checkBox_3rd->checkState(); setpoint_data->alert_danger_press[current_index].danger_param = ui->comboBox_danger->currentIndex(); setpoint_data->alert_danger_press[current_index].danger_upper = ui->lineEdit_danger_upper->text().toFloat(); setpoint_data->alert_danger_press[current_index].danger_enable = ui->checkBox_danger->checkState(); }else{ setpoint_data->alert_danger[current_index].direct_upper = ui->lineEdit_1st_upper->text().toFloat(); setpoint_data->alert_danger[current_index].direct_enable = ui->checkBox_1st->checkState(); setpoint_data->alert_danger[current_index].x1_ampl_upper = ui->lineEdit_2nd_upper->text().toFloat(); setpoint_data->alert_danger[current_index].x1_ampl_lower = ui->lineEdit_2nd_lower->text().toFloat(); setpoint_data->alert_danger[current_index].x1_ampl_enable = ui->checkBox_2nd->checkState(); setpoint_data->alert_danger[current_index].x2_ampl_upper = ui->lineEdit_3rd_upper->text().toFloat(); setpoint_data->alert_danger[current_index].x2_ampl_lower = ui->lineEdit_3rd_lower->text().toFloat(); setpoint_data->alert_danger[current_index].x2_ampl_enable = ui->checkBox_3rd->checkState(); setpoint_data->alert_danger[current_index].danger_param = ui->comboBox_danger->currentIndex(); setpoint_data->alert_danger[current_index].danger_upper = ui->lineEdit_danger_upper->text().toFloat(); setpoint_data->alert_danger[current_index].danger_enable = ui->checkBox_danger->checkState(); } current_index = index; update(); } void Setpoint::update() { int chan = ui->comboBox_chan->currentIndex(); std::shared_ptr base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no); std::shared_ptr setpoint_data = std::dynamic_pointer_cast(base_ptr); std::vector> variable_ = setpoint_data->variables_; if(variable_.size() <= 0 ) { QMessageBox::information(this, QStringLiteral("提示"), "请先配置完通道参数!"); return; } if(!variable_[chan]->x1_.checked){ ui->checkBox_1st->setEnabled(false); ui->lineEdit_2nd_lower->setEnabled(false); ui->lineEdit_2nd_upper->setEnabled(false); } if(!variable_[chan]->x2_.checked){ ui->checkBox_2nd->setEnabled(false); ui->lineEdit_3rd_upper->setEnabled(false); ui->lineEdit_3rd_lower->setEnabled(false); } if(setpoint_data->base_config_[chan].channel_type == kVibRadial){ EnableNormal(); ShowSlider(); if(variable_[chan]->direct_.full_scale_range == 0){ slider_1st->setRange(0,100); slider_danger->setRange(0,100); }else if(variable_[chan]->direct_.full_scale_range == 1){ slider_1st->setRange(0,150); slider_danger->setRange(0,150); }else if(variable_[chan]->direct_.full_scale_range == 2){ slider_1st->setRange(0,200); slider_danger->setRange(0,200); }else if(variable_[chan]->direct_.full_scale_range == 3){ slider_1st->setRange(0,400); slider_danger->setRange(0,400); }else if(variable_[chan]->direct_.full_scale_range == 4){ slider_1st->setRange(0,500); slider_danger->setRange(0,500); } ui->label_unit_1st->setText("um"); ui->label_danger->setText("um"); } if(setpoint_data->base_config_[chan].channel_type == kVibThrust){ EnableNormal(); ui->label_2nd->hide(); ui->label_unit_2nd->hide(); ui->lineEdit_2nd_upper->hide(); ui->widget_1x_ampl->hide(); ui->lineEdit_2nd_lower->hide(); ui->checkBox_2nd->hide(); ui->label_3rd->hide(); ui->label_unit_3rd->hide(); ui->lineEdit_3rd_upper->hide(); ui->widget_2x_ampl->hide(); ui->lineEdit_3rd_lower->hide(); ui->checkBox_3rd->hide(); ui->label_unit_1st->setText("mil"); ui->label_danger->setText("mil"); if(variable_[chan]->direct_.full_scale_range == 0){ slider_1st->setRange(-25,25); slider_danger->setRange(-25,25); }else if(variable_[chan]->direct_.full_scale_range == 1){ slider_1st->setRange(-30,30); slider_danger->setRange(-30,30); }else if(variable_[chan]->direct_.full_scale_range == 2){ slider_1st->setRange(-40,40); slider_danger->setRange(-40,40); }else if(variable_[chan]->direct_.full_scale_range == 3){ ui->label_unit_1st->setText("mm"); ui->label_danger->setText("mm"); slider_1st->setRange(-0.5,0.5); slider_danger->setRange(-0.5,0.5); }else if(variable_[chan]->direct_.full_scale_range == 4){ ui->label_unit_1st->setText("mm"); ui->label_danger->setText("mm"); slider_1st->setRange(-1,1); slider_danger->setRange(-1,1); } } if(setpoint_data->base_config_[chan].channel_type == kVibAcc){ EnableNormal(); ShowSlider(); std::shared_ptr base_channel_ptr = setpoint_data->GetChannelPtr(chan + 1); std::shared_ptr av_ptr = std::dynamic_pointer_cast(base_channel_ptr); if(variable_[chan]->direct_.full_scale_range == 0){ slider_1st->setRange(0,20); slider_danger->setRange(0,20); }else if(variable_[chan]->direct_.full_scale_range == 1){ slider_1st->setRange(0,50); slider_danger->setRange(0,50); }else if(variable_[chan]->direct_.full_scale_range == 2){ slider_1st->setRange(0,100); slider_danger->setRange(0,100); }else if(variable_[chan]->direct_.full_scale_range == 3){ slider_1st->setRange(0,200); slider_danger->setRange(0,200); }else if(variable_[chan]->direct_.full_scale_range == 4){ slider_1st->setRange(0,250); slider_danger->setRange(0,250); }else if(variable_[chan]->direct_.full_scale_range == 5){ slider_1st->setRange(0,400); slider_danger->setRange(0,400); } ui->label_unit_1st->setText("m/s^2 pk"); ui->label_danger->setText("m/s^2 pk"); if(av_ptr->rms_active_){ if(variable_[chan]->direct_.full_scale_range == 0){ slider_1st->setRange(0,20); slider_danger->setRange(0,20); }else if(variable_[chan]->direct_.full_scale_range == 1){ slider_1st->setRange(0,50); slider_danger->setRange(0,50); }else if(variable_[chan]->direct_.full_scale_range == 2){ slider_1st->setRange(0,100); slider_danger->setRange(0,100); }else if(variable_[chan]->direct_.full_scale_range == 3){ slider_1st->setRange(0,200); slider_danger->setRange(0,200); } ui->label_unit_1st->setText("m/s^2 rms"); ui->label_danger->setText("m/s^2 rms"); } if(av_ptr->integrate_active_){ if(variable_[chan]->direct_.full_scale_range == 0){ slider_1st->setRange(0,25); slider_danger->setRange(0,25); }else if(variable_[chan]->direct_.full_scale_range == 1){ slider_1st->setRange(0,50); slider_danger->setRange(0,50); }else if(variable_[chan]->direct_.full_scale_range == 2){ slider_1st->setRange(0,100); slider_danger->setRange(0,100); } ui->label_unit_1st->setText("mm/s pk"); ui->label_danger->setText("mm/s pk"); } if(av_ptr->rms_active_ && av_ptr->integrate_active_){ if(variable_[chan]->direct_.full_scale_range == 0){ slider_1st->setRange(0,25); slider_danger->setRange(0,25); }else if(variable_[chan]->direct_.full_scale_range == 1){ slider_1st->setRange(0,50); slider_danger->setRange(0,50); } ui->label_unit_1st->setText("mm/s rms"); ui->label_danger->setText("mm/s rms"); } } if(setpoint_data->base_config_[chan].channel_type == kVibVelocity){ EnableNormal(); ShowSlider(); std::shared_ptr base_channel_ptr = setpoint_data->GetChannelPtr(chan + 1); std::shared_ptr av_ptr = std::dynamic_pointer_cast(base_channel_ptr); if(variable_[chan]->direct_.full_scale_range == 0){ slider_1st->setRange(0,10); slider_danger->setRange(0,10); }else if(variable_[chan]->direct_.full_scale_range == 1){ slider_1st->setRange(0,20); slider_danger->setRange(0,20); }else if(variable_[chan]->direct_.full_scale_range == 2){ slider_1st->setRange(0,50); slider_danger->setRange(0,50); } ui->label_unit_1st->setText("mm/s pk"); ui->label_danger->setText("mm/s pk"); if(av_ptr->rms_active_){ if(variable_[chan]->direct_.full_scale_range == 0){ slider_1st->setRange(0,10); slider_danger->setRange(0,10); }else if(variable_[chan]->direct_.full_scale_range == 1){ slider_1st->setRange(0,20); slider_danger->setRange(0,20); }else if(variable_[chan]->direct_.full_scale_range == 2){ slider_1st->setRange(0,50); slider_danger->setRange(0,50); } ui->label_unit_1st->setText("mm/s rms"); ui->label_danger->setText("mm/s rms"); } if(av_ptr->integrate_active_){ if(variable_[chan]->direct_.full_scale_range == 0){ slider_1st->setRange(0,100); slider_danger->setRange(0,100); }else if(variable_[chan]->direct_.full_scale_range == 1){ slider_1st->setRange(0,200); slider_danger->setRange(0,200); }else if(variable_[chan]->direct_.full_scale_range == 2){ slider_1st->setRange(0,500); slider_danger->setRange(0,500); } ui->label_unit_1st->setText("um pp"); ui->label_danger->setText("um pp"); } } if(setpoint_data->base_config_[chan].channel_type == kVibPressurePulsation){ ShowSlider(); ui->label_1st->setText("低频段"); ui->label_2nd->setText("中1频段"); ui->label_3rd->setText("中2频段"); ui->comboBox_danger->clear(); ui->comboBox_danger->addItem("全频段"); ui->checkBox_1st->setEnabled(true); ui->checkBox_2nd->setEnabled(true); ui->checkBox_3rd->setEnabled(true); ui->lineEdit_2nd_lower->hide(); ui->lineEdit_2nd_upper->setEnabled(true); ui->lineEdit_3rd_lower->hide(); ui->lineEdit_3rd_upper->setEnabled(true); ui->label_unit_1st->setText("kPa"); ui->label_unit_2nd->setText("kPa"); ui->label_unit_3rd->setText("kPa"); ui->label_danger->setText("kPa"); slider_1st->setRange(0,10); slider_2nd->setRange(0,10); slider_3rd->setRange(0,10); slider_danger->setRange(0,40); ui->lineEdit_1st_upper->setText(QString::number(setpoint_data->alert_danger_press[chan].low_upper)); ui->checkBox_1st->setChecked(setpoint_data->alert_danger_press[chan].low_enable); if(setpoint_data->alert_danger_press[chan].low_upper > 0){ slider_1st->m_upper = setpoint_data->alert_danger_press[chan].low_upper; slider_1st->m_lower = 0; } ui->lineEdit_2nd_upper->setText(QString::number(setpoint_data->alert_danger_press[chan].mid1_upper)); ui->checkBox_2nd->setChecked(setpoint_data->alert_danger_press[chan].mid1_enable); if(setpoint_data->alert_danger_press[chan].mid1_upper > 0){ slider_2nd->m_upper = setpoint_data->alert_danger_press[chan].mid1_upper; slider_2nd->m_lower = 0; } ui->lineEdit_3rd_upper->setText(QString::number(setpoint_data->alert_danger_press[chan].mid2_upper)); ui->checkBox_3rd->setChecked(setpoint_data->alert_danger_press[chan].mid2_enable); if(setpoint_data->alert_danger_press[chan].mid2_upper > 0){ slider_3rd->m_upper = setpoint_data->alert_danger_press[chan].mid2_upper; slider_3rd->m_lower = 0; } ui->lineEdit_danger_upper->setText(QString::number(setpoint_data->alert_danger_press[chan].danger_upper)); ui->checkBox_danger->setChecked(setpoint_data->alert_danger_press[chan].danger_enable); if(setpoint_data->alert_danger_press[chan].danger_upper > 0){ slider_danger->m_upper = setpoint_data->alert_danger_press[chan].danger_upper; slider_danger->m_lower = 0; } }else{ ui->lineEdit_1st_upper->setText(QString::number(setpoint_data->alert_danger[chan].direct_upper)); ui->checkBox_1st->setChecked(setpoint_data->alert_danger[chan].direct_enable); if(setpoint_data->alert_danger[chan].direct_upper > 0){ slider_1st->m_upper = setpoint_data->alert_danger[chan].direct_upper; slider_1st->m_lower = 0; } ui->lineEdit_2nd_upper->setText(QString::number(setpoint_data->alert_danger[chan].x1_ampl_upper)); ui->lineEdit_2nd_lower->setText(QString::number(setpoint_data->alert_danger[chan].x1_ampl_lower)); ui->checkBox_2nd->setChecked(setpoint_data->alert_danger[chan].x1_ampl_enable); if(setpoint_data->alert_danger[chan].x1_ampl_upper > 0 && setpoint_data->alert_danger[chan].x1_ampl_lower > 0){ slider_2nd->m_upper = setpoint_data->alert_danger[chan].x1_ampl_upper; slider_2nd->m_lower = setpoint_data->alert_danger[chan].x1_ampl_lower; } ui->lineEdit_3rd_upper->setText(QString::number(setpoint_data->alert_danger[chan].x2_ampl_upper)); ui->lineEdit_3rd_lower->setText(QString::number(setpoint_data->alert_danger[chan].x2_ampl_lower)); ui->checkBox_3rd->setChecked(setpoint_data->alert_danger[chan].x2_ampl_enable); if(setpoint_data->alert_danger[chan].x2_ampl_upper > 0 && setpoint_data->alert_danger[chan].x2_ampl_lower > 0){ slider_3rd->m_upper = setpoint_data->alert_danger[chan].x2_ampl_upper; slider_3rd->m_lower = setpoint_data->alert_danger[chan].x2_ampl_lower; } ui->lineEdit_danger_upper->setText(QString::number(setpoint_data->alert_danger[chan].danger_upper)); ui->checkBox_danger->setChecked(setpoint_data->alert_danger[chan].danger_enable); if(setpoint_data->alert_danger[chan].danger_upper > 0){ slider_danger->m_upper = setpoint_data->alert_danger[chan].danger_upper; slider_danger->m_lower = 0; } } } void Setpoint::EnableNormal(){ ui->label_1st->setText("直接值"); ui->label_2nd->setText("1倍频幅值"); ui->label_3rd->setText("2倍频幅值"); ui->comboBox_danger->clear(); QStringList items = {"直接值", "1倍频幅值", "2倍频幅值"}; ui->comboBox_danger->addItems(items); ui->checkBox_2nd->setChecked(false); ui->checkBox_3rd->setChecked(false); ui->label_unit_2nd->setText("- -"); ui->label_unit_3rd->setText("- -"); } void Setpoint::ShowSlider(){ ui->label_2nd->show(); ui->label_unit_2nd->show(); ui->lineEdit_2nd_upper->show(); ui->widget_1x_ampl->show(); ui->lineEdit_2nd_lower->show(); ui->checkBox_1st->show(); ui->label_3rd->show(); ui->label_unit_3rd->show(); ui->lineEdit_3rd_upper->show(); ui->widget_2x_ampl->show(); ui->lineEdit_3rd_lower->show(); ui->checkBox_2nd->show(); }