#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_direct != nullptr) delete slider_direct; if(slider_1x_ampl != nullptr) delete slider_1x_ampl; if(slider_2x_ampl != nullptr) delete slider_2x_ampl; if(slider_danger != nullptr) delete slider_danger; delete ui; } void Setpoint::Init(){ QVBoxLayout *layout_direct = new QVBoxLayout(ui->widget_direct); slider_direct = new RangeSlider; layout_direct->addWidget(slider_direct); QVBoxLayout *layout_1x_ampl = new QVBoxLayout(ui->widget_1x_ampl); slider_1x_ampl = new RangeSlider; layout_1x_ampl->addWidget(slider_1x_ampl); QVBoxLayout *layout_2x_ampl = new QVBoxLayout(ui->widget_2x_ampl); slider_2x_ampl = new RangeSlider; layout_2x_ampl->addWidget(slider_2x_ampl); 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); vib_alert_ptr = std::dynamic_pointer_cast(base_ptr); switch (car_type) { case kCardVibSingle:{ update(); }break; } QObject::connect(ui->lineEdit_direct_upper, &QLineEdit::editingFinished, [&]() { slider_direct->setUpperValue(ui->lineEdit_direct_upper->text().toFloat()); }); QObject::connect(slider_direct, &RangeSlider::rangeChanged, [&](float low,float high) { ui->lineEdit_direct_upper->setText(QString::number(high)); }); QObject::connect(slider_1x_ampl, &RangeSlider::rangeChanged, [&](float low, float high) { ui->lineEdit_1x_ampl_upper->setText(QString::number(high)); ui->lineEdit_1x_ampl_lower->setText(QString::number(low)); }); QObject::connect(ui->lineEdit_1x_ampl_upper, &QLineEdit::editingFinished, [&]() { slider_1x_ampl->setUpperValue(ui->lineEdit_1x_ampl_upper->text().toFloat()); }); QObject::connect(ui->lineEdit_1x_ampl_lower, &QLineEdit::editingFinished, [&]() { slider_1x_ampl->setLowerValue(ui->lineEdit_1x_ampl_lower->text().toFloat()); }); QObject::connect(slider_2x_ampl, &RangeSlider::rangeChanged, [&](float low, float high) { ui->lineEdit_2x_ampl_upper->setText(QString::number(high)); ui->lineEdit_2x_ampl_lower->setText(QString::number(low)); }); QObject::connect(ui->lineEdit_2x_ampl_upper, &QLineEdit::editingFinished, [&]() { slider_1x_ampl->setUpperValue(ui->lineEdit_2x_ampl_upper->text().toFloat()); }); QObject::connect(ui->lineEdit_2x_ampl_lower, &QLineEdit::editingFinished, [&]() { slider_1x_ampl->setLowerValue(ui->lineEdit_2x_ampl_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() { if (vib_alert_ptr == nullptr) { qCritical() << "[Setpoint::confirm] should not be here"; return; } vib_alert_ptr->alert_danger[current_index].direct_upper = ui->lineEdit_direct_upper->text().toFloat(); vib_alert_ptr->alert_danger[current_index].direct_enable = ui->checkBox_direct->checkState(); vib_alert_ptr->alert_danger[current_index].x1_ampl_upper = ui->lineEdit_1x_ampl_upper->text().toFloat(); vib_alert_ptr->alert_danger[current_index].x1_ampl_lower = ui->lineEdit_1x_ampl_lower->text().toFloat(); vib_alert_ptr->alert_danger[current_index].x1_ampl_enable = ui->checkBox_1x_ampl->checkState(); vib_alert_ptr->alert_danger[current_index].x2_ampl_upper = ui->lineEdit_2x_ampl_upper->text().toFloat(); vib_alert_ptr->alert_danger[current_index].x2_ampl_lower = ui->lineEdit_2x_ampl_lower->text().toFloat(); vib_alert_ptr->alert_danger[current_index].x2_ampl_enable = ui->checkBox_2x_ampl->checkState(); vib_alert_ptr->alert_danger[current_index].danger_param = ui->comboBox_danger->currentIndex(); vib_alert_ptr->alert_danger[current_index].danger_upper = ui->lineEdit_danger_upper->text().toFloat(); vib_alert_ptr->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){ vib_alert_ptr->alert_danger[current_index].direct_upper = ui->lineEdit_direct_upper->text().toFloat(); vib_alert_ptr->alert_danger[current_index].direct_enable = ui->checkBox_direct->checkState(); vib_alert_ptr->alert_danger[current_index].x1_ampl_upper = ui->lineEdit_1x_ampl_upper->text().toFloat(); vib_alert_ptr->alert_danger[current_index].x1_ampl_lower = ui->lineEdit_1x_ampl_lower->text().toFloat(); vib_alert_ptr->alert_danger[current_index].x1_ampl_enable = ui->checkBox_1x_ampl->checkState(); vib_alert_ptr->alert_danger[current_index].x2_ampl_upper = ui->lineEdit_2x_ampl_upper->text().toFloat(); vib_alert_ptr->alert_danger[current_index].x2_ampl_lower = ui->lineEdit_2x_ampl_lower->text().toFloat(); vib_alert_ptr->alert_danger[current_index].x2_ampl_enable = ui->checkBox_2x_ampl->checkState(); vib_alert_ptr->alert_danger[current_index].danger_param = ui->comboBox_danger->currentIndex(); vib_alert_ptr->alert_danger[current_index].danger_upper = ui->lineEdit_danger_upper->text().toFloat(); vib_alert_ptr->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_1x_ampl->setEnabled(false); ui->lineEdit_1x_ampl_lower->setEnabled(false); ui->lineEdit_1x_ampl_upper->setEnabled(false); } if(!variable_[chan]->x2_.checked){ ui->checkBox_2x_ampl->setEnabled(false); ui->lineEdit_2x_ampl_upper->setEnabled(false); ui->lineEdit_2x_ampl_lower->setEnabled(false); } if(setpoint_data->base_config_[chan].channel_type == kVibRadial){ if(variable_[chan]->direct_.full_scale_range == 0){ slider_direct->setRange(0,100); slider_danger->setRange(0,100); }else if(variable_[chan]->direct_.full_scale_range == 1){ slider_direct->setRange(0,150); slider_danger->setRange(0,150); }else if(variable_[chan]->direct_.full_scale_range == 2){ slider_direct->setRange(0,200); slider_danger->setRange(0,200); }else if(variable_[chan]->direct_.full_scale_range == 3){ slider_direct->setRange(0,400); slider_danger->setRange(0,400); }else if(variable_[chan]->direct_.full_scale_range == 4){ slider_direct->setRange(0,500); slider_danger->setRange(0,500); } ui->label_direct->setText("um"); ui->label_danger->setText("um"); } if(setpoint_data->base_config_[chan].channel_type == kVibAcc){ 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_direct->setRange(0,20); slider_danger->setRange(0,20); }else if(variable_[chan]->direct_.full_scale_range == 1){ slider_direct->setRange(0,50); slider_danger->setRange(0,50); }else if(variable_[chan]->direct_.full_scale_range == 2){ slider_direct->setRange(0,100); slider_danger->setRange(0,100); }else if(variable_[chan]->direct_.full_scale_range == 3){ slider_direct->setRange(0,200); slider_danger->setRange(0,200); }else if(variable_[chan]->direct_.full_scale_range == 4){ slider_direct->setRange(0,250); slider_danger->setRange(0,250); }else if(variable_[chan]->direct_.full_scale_range == 5){ slider_direct->setRange(0,400); slider_danger->setRange(0,400); } ui->label_direct->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_direct->setRange(0,20); slider_danger->setRange(0,20); }else if(variable_[chan]->direct_.full_scale_range == 1){ slider_direct->setRange(0,50); slider_danger->setRange(0,50); }else if(variable_[chan]->direct_.full_scale_range == 2){ slider_direct->setRange(0,100); slider_danger->setRange(0,100); }else if(variable_[chan]->direct_.full_scale_range == 3){ slider_direct->setRange(0,200); slider_danger->setRange(0,200); } ui->label_direct->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_direct->setRange(0,25); slider_danger->setRange(0,25); }else if(variable_[chan]->direct_.full_scale_range == 1){ slider_direct->setRange(0,50); slider_danger->setRange(0,50); }else if(variable_[chan]->direct_.full_scale_range == 2){ slider_direct->setRange(0,100); slider_danger->setRange(0,100); } ui->label_direct->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_direct->setRange(0,25); slider_danger->setRange(0,25); }else if(variable_[chan]->direct_.full_scale_range == 1){ slider_direct->setRange(0,50); slider_danger->setRange(0,50); } ui->label_direct->setText("mm/s rms"); ui->label_danger->setText("mm/s rms"); } } if(setpoint_data->base_config_[chan].channel_type == kVibVelocity){ 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_direct->setRange(0,10); slider_danger->setRange(0,10); }else if(variable_[chan]->direct_.full_scale_range == 1){ slider_direct->setRange(0,20); slider_danger->setRange(0,20); }else if(variable_[chan]->direct_.full_scale_range == 2){ slider_direct->setRange(0,50); slider_danger->setRange(0,50); } ui->label_direct->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_direct->setRange(0,10); slider_danger->setRange(0,10); }else if(variable_[chan]->direct_.full_scale_range == 1){ slider_direct->setRange(0,20); slider_danger->setRange(0,20); }else if(variable_[chan]->direct_.full_scale_range == 2){ slider_direct->setRange(0,50); slider_danger->setRange(0,50); } ui->label_direct->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_direct->setRange(0,100); slider_danger->setRange(0,100); }else if(variable_[chan]->direct_.full_scale_range == 1){ slider_direct->setRange(0,200); slider_danger->setRange(0,200); }else if(variable_[chan]->direct_.full_scale_range == 2){ slider_direct->setRange(0,500); slider_danger->setRange(0,500); } ui->label_direct->setText("um pp"); ui->label_danger->setText("um pp"); } } ui->lineEdit_direct_upper->setText(QString::number(setpoint_data->alert_danger[chan].direct_upper)); ui->checkBox_direct->setChecked(setpoint_data->alert_danger[chan].direct_enable); if(setpoint_data->alert_danger[chan].direct_upper > 0){ slider_direct->m_upper = setpoint_data->alert_danger[chan].direct_upper; } ui->lineEdit_1x_ampl_upper->setText(QString::number(setpoint_data->alert_danger[chan].x1_ampl_upper)); ui->lineEdit_1x_ampl_lower->setText(QString::number(setpoint_data->alert_danger[chan].x1_ampl_lower)); ui->checkBox_1x_ampl->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_1x_ampl->m_upper = setpoint_data->alert_danger[chan].x1_ampl_upper; slider_1x_ampl->m_lower = setpoint_data->alert_danger[chan].x1_ampl_lower; } ui->lineEdit_2x_ampl_upper->setText(QString::number(setpoint_data->alert_danger[chan].x2_ampl_upper)); ui->lineEdit_2x_ampl_lower->setText(QString::number(setpoint_data->alert_danger[chan].x2_ampl_lower)); ui->checkBox_2x_ampl->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_2x_ampl->m_upper = setpoint_data->alert_danger[chan].x2_ampl_upper; slider_2x_ampl->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; } }