#include "high_speed_current.h" #include "ui_high_speed_current.h" #include "config_mgr.h" #include #include #include #include "copy_channel.h" HighSpeedCurrent::HighSpeedCurrent(int slot_no_,CardType cardtype,QWidget *parent) : QWidget(parent) , ui(new Ui::HighSpeedCurrent) { ui->setupUi(this); slot_no = slot_no_; card_type = cardtype; QString slot = QString("%1").arg(slot_no); ui->label_slot->setText(slot); auto *double_validator = new QDoubleValidator( std::numeric_limits::lowest(), std::numeric_limits::max(), 10, this); double_validator->setNotation(QDoubleValidator::StandardNotation); ui->lineEdit_fullScalePosition->setValidator(double_validator); ui->lineEdit_xfullScalePosition->setValidator(double_validator); ui->lineEdit_zeroScalePosition->setValidator(double_validator); ui->lineEdit_xzeroScalePosition->setValidator(double_validator); ui->lineEdit_danger_high_level->setValidator(double_validator); ui->lineEdit_danger_high_hysteresis->setValidator(double_validator); ui->lineEdit_danger_high_delay->setValidator(double_validator); ui->lineEdit_alert_high_level->setValidator(double_validator); ui->lineEdit_alert_high_hysteresis->setValidator(double_validator); ui->lineEdit_alert_high_delay->setValidator(double_validator); ui->lineEdit_fullScalePosition_2->setValidator(double_validator); ui->lineEdit_xfullScalePosition_2->setValidator(double_validator); ui->lineEdit_zeroScalePosition_2->setValidator(double_validator); ui->lineEdit_xzeroScalePosition_2->setValidator(double_validator); ui->lineEdit_danger_high_level_2->setValidator(double_validator); ui->lineEdit_danger_high_hysteresis_2->setValidator(double_validator); ui->lineEdit_danger_high_delay_2->setValidator(double_validator); ui->lineEdit_alert_high_level_2->setValidator(double_validator); ui->lineEdit_alert_high_hysteresis_2->setValidator(double_validator); ui->lineEdit_alert_high_delay_2->setValidator(double_validator); ui->lineEdit_fullScalePosition_3->setValidator(double_validator); ui->lineEdit_xfullScalePosition_3->setValidator(double_validator); ui->lineEdit_zeroScalePosition_3->setValidator(double_validator); ui->lineEdit_xzeroScalePosition_3->setValidator(double_validator); ui->lineEdit_danger_high_level_3->setValidator(double_validator); ui->lineEdit_danger_high_hysteresis_3->setValidator(double_validator); ui->lineEdit_danger_high_delay_3->setValidator(double_validator); ui->lineEdit_alert_high_level_3->setValidator(double_validator); ui->lineEdit_alert_high_hysteresis_3->setValidator(double_validator); ui->lineEdit_alert_high_delay_3->setValidator(double_validator); ui->lineEdit_fullScalePosition_4->setValidator(double_validator); ui->lineEdit_xfullScalePosition_4->setValidator(double_validator); ui->lineEdit_zeroScalePosition_4->setValidator(double_validator); ui->lineEdit_xzeroScalePosition_4->setValidator(double_validator); ui->lineEdit_danger_high_level_4->setValidator(double_validator); ui->lineEdit_danger_high_hysteresis_4->setValidator(double_validator); ui->lineEdit_danger_high_delay_4->setValidator(double_validator); ui->lineEdit_alert_high_level_4->setValidator(double_validator); ui->lineEdit_alert_high_hysteresis_4->setValidator(double_validator); ui->lineEdit_alert_high_delay_4->setValidator(double_validator); Init(); } HighSpeedCurrent::~HighSpeedCurrent() { delete ui; } void HighSpeedCurrent::UpdateData(std::shared_ptr ¤t_data){ current_data->card_type_ = kCardHighSpeedCurrent; current_data->slot_ = slot_no; current_data->version_ = 1; for (int i = 0; i < CHANNEL_COUNT_SPEED; i++){ if (i + 1 == 1) { current_data->variables_[i].active = ui->checkBox_chan_1->isChecked(); current_data->variables_[i].engineering_unit = ui->lineEdit_engineeringUnit->text(); current_data->variables_[i].fullScalePosition = ui->lineEdit_fullScalePosition->text().toFloat(); current_data->variables_[i].xfullScalePosition = ui->lineEdit_xfullScalePosition->text().toFloat(); current_data->variables_[i].zeroScalePosition = ui->lineEdit_zeroScalePosition->text().toFloat(); current_data->variables_[i].xzeroScalePosition = ui->lineEdit_xzeroScalePosition->text().toFloat(); current_data->variables_[i].rectifier_funtion = ui->comboBox_rectifier_funtion->currentIndex(); // -alarm current_data->danger_high[i].level = ui->lineEdit_danger_high_level->text().toDouble(); current_data->danger_high[i].hysteresis = ui->lineEdit_danger_high_hysteresis->text().toDouble(); current_data->danger_high[i].delay = ui->lineEdit_danger_high_delay->text().toDouble(); current_data->danger_high[i].enable = ui->checkBox_danger_high_enable->isChecked(); current_data->danger_high[i].latch = ui->checkBox_danger_high_latch->isChecked(); current_data->alert_high[i].level = ui->lineEdit_alert_high_level->text().toDouble(); current_data->alert_high[i].hysteresis = ui->lineEdit_alert_high_hysteresis->text().toDouble(); current_data->alert_high[i].delay = ui->lineEdit_alert_high_delay->text().toDouble(); current_data->alert_high[i].enable = ui->checkBox_alert_high_enable->isChecked(); current_data->alert_high[i].latch = ui->checkBox_alert_high_latch->isChecked(); }else if(i + 1 == 2){ current_data->variables_[i].active = ui->checkBox_chan_2->isChecked(); current_data->variables_[i].engineering_unit = ui->lineEdit_engineeringUnit_2->text(); current_data->variables_[i].fullScalePosition = ui->lineEdit_fullScalePosition_2->text().toFloat(); current_data->variables_[i].xfullScalePosition = ui->lineEdit_xfullScalePosition_2->text().toFloat(); current_data->variables_[i].zeroScalePosition = ui->lineEdit_zeroScalePosition_2->text().toFloat(); current_data->variables_[i].xzeroScalePosition = ui->lineEdit_xzeroScalePosition_2->text().toFloat(); current_data->variables_[i].rectifier_funtion = ui->comboBox_rectifier_funtion_2->currentIndex(); // -alarm current_data->danger_high[i].level = ui->lineEdit_danger_high_level_2->text().toDouble(); current_data->danger_high[i].hysteresis = ui->lineEdit_danger_high_hysteresis_2->text().toDouble(); current_data->danger_high[i].delay = ui->lineEdit_danger_high_delay_2->text().toDouble(); current_data->danger_high[i].enable = ui->checkBox_danger_high_enable_2->isChecked(); current_data->danger_high[i].latch = ui->checkBox_danger_high_latch_2->isChecked(); current_data->alert_high[i].level = ui->lineEdit_alert_high_level_2->text().toDouble(); current_data->alert_high[i].hysteresis = ui->lineEdit_alert_high_hysteresis_2->text().toDouble(); current_data->alert_high[i].delay = ui->lineEdit_alert_high_delay_2->text().toDouble(); current_data->alert_high[i].enable = ui->checkBox_alert_high_enable_2->isChecked(); current_data->alert_high[i].latch = ui->checkBox_alert_high_latch_2->isChecked(); }else if(i + 1 == 3){ current_data->variables_[i].active = ui->checkBox_chan_3->isChecked(); current_data->variables_[i].engineering_unit = ui->lineEdit_engineeringUnit_3->text(); current_data->variables_[i].fullScalePosition = ui->lineEdit_fullScalePosition_3->text().toFloat(); current_data->variables_[i].xfullScalePosition = ui->lineEdit_xfullScalePosition_3->text().toFloat(); current_data->variables_[i].zeroScalePosition = ui->lineEdit_zeroScalePosition_3->text().toFloat(); current_data->variables_[i].xzeroScalePosition = ui->lineEdit_xzeroScalePosition_3->text().toFloat(); current_data->variables_[i].rectifier_funtion = ui->comboBox_rectifier_funtion_3->currentIndex(); // -alarm current_data->danger_high[i].level = ui->lineEdit_danger_high_level_3->text().toDouble(); current_data->danger_high[i].hysteresis = ui->lineEdit_danger_high_hysteresis_3->text().toDouble(); current_data->danger_high[i].delay = ui->lineEdit_danger_high_delay_3->text().toDouble(); current_data->danger_high[i].enable = ui->checkBox_danger_high_enable_3->isChecked(); current_data->danger_high[i].latch = ui->checkBox_danger_high_latch_3->isChecked(); current_data->alert_high[i].level = ui->lineEdit_alert_high_level_3->text().toDouble(); current_data->alert_high[i].hysteresis = ui->lineEdit_alert_high_hysteresis_3->text().toDouble(); current_data->alert_high[i].delay = ui->lineEdit_alert_high_delay_3->text().toDouble(); current_data->alert_high[i].enable = ui->checkBox_alert_high_enable_3->isChecked(); current_data->alert_high[i].latch = ui->checkBox_alert_high_latch_3->isChecked(); }else if(i + 1 == 4){ current_data->variables_[i].active = ui->checkBox_chan_4->isChecked(); current_data->variables_[i].engineering_unit = ui->lineEdit_engineeringUnit_4->text(); current_data->variables_[i].fullScalePosition = ui->lineEdit_fullScalePosition_4->text().toFloat(); current_data->variables_[i].xfullScalePosition = ui->lineEdit_xfullScalePosition_4->text().toFloat(); current_data->variables_[i].zeroScalePosition = ui->lineEdit_zeroScalePosition_4->text().toFloat(); current_data->variables_[i].xzeroScalePosition = ui->lineEdit_xzeroScalePosition_4->text().toFloat(); current_data->variables_[i].rectifier_funtion = ui->comboBox_rectifier_funtion_4->currentIndex(); // -alarm current_data->danger_high[i].level = ui->lineEdit_danger_high_level_4->text().toDouble(); current_data->danger_high[i].hysteresis = ui->lineEdit_danger_high_hysteresis_4->text().toDouble(); current_data->danger_high[i].delay = ui->lineEdit_danger_high_delay_4->text().toDouble(); current_data->danger_high[i].enable = ui->checkBox_danger_high_enable_4->isChecked(); current_data->danger_high[i].latch = ui->checkBox_danger_high_latch_4->isChecked(); current_data->alert_high[i].level = ui->lineEdit_alert_high_level_4->text().toDouble(); current_data->alert_high[i].hysteresis = ui->lineEdit_alert_high_hysteresis_4->text().toDouble(); current_data->alert_high[i].delay = ui->lineEdit_alert_high_delay_4->text().toDouble(); current_data->alert_high[i].enable = ui->checkBox_alert_high_enable_4->isChecked(); current_data->alert_high[i].latch = ui->checkBox_alert_high_latch_4->isChecked(); } } } void HighSpeedCurrent::Init() { std::shared_ptr base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no); if (base_ptr == nullptr) { // do nothing or use template to init it. std::shared_ptr current_data = std::make_shared(); current_data->card_type_ = card_type; current_data->slot_ = slot_no; ConfigMgr::Instance()->AddCard(current_data); UpdateData(current_data); return; } std::shared_ptr current_data = std::dynamic_pointer_cast(base_ptr); for (int i = 0; i < CHANNEL_COUNT_SPEED; i++) { if (i + 1 == 1) { ui->checkBox_chan_1->setChecked(current_data->variables_[i].active); ui->lineEdit_engineeringUnit->setText(current_data->variables_[i].engineering_unit); ui->lineEdit_fullScalePosition->setText(QString::number(current_data->variables_[i].fullScalePosition)); ui->lineEdit_xfullScalePosition->setText(QString::number(current_data->variables_[i].xfullScalePosition)); ui->lineEdit_zeroScalePosition->setText(QString::number(current_data->variables_[i].zeroScalePosition)); ui->lineEdit_xzeroScalePosition->setText(QString::number(current_data->variables_[i].xzeroScalePosition)); ui->comboBox_rectifier_funtion->setCurrentIndex(current_data->variables_[i].rectifier_funtion); // -alarm ui->lineEdit_danger_high_level->setText(QString::number(current_data->danger_high[i].level)); ui->lineEdit_danger_high_hysteresis->setText(QString::number(current_data->danger_high[i].hysteresis)); ui->lineEdit_danger_high_delay->setText(QString::number(current_data->danger_high[i].delay)); ui->checkBox_danger_high_enable->setChecked(current_data->danger_high[i].enable); ui->checkBox_danger_high_latch->setChecked(current_data->danger_high[i].latch); ui->lineEdit_alert_high_level->setText(QString::number(current_data->alert_high[i].level)); ui->lineEdit_alert_high_hysteresis->setText(QString::number(current_data->alert_high[i].hysteresis)); ui->lineEdit_alert_high_delay->setText(QString::number(current_data->alert_high[i].delay)); ui->checkBox_alert_high_enable->setChecked(current_data->alert_high[i].enable); ui->checkBox_alert_high_latch->setChecked(current_data->alert_high[i].latch); ui->label_unit1->setText(current_data->variables_[i].engineering_unit); ui->label_unit2->setText(current_data->variables_[i].engineering_unit); }else if(i + 1 == 2){ ui->checkBox_chan_2->setChecked(current_data->variables_[i].active); ui->lineEdit_engineeringUnit_2->setText(current_data->variables_[i].engineering_unit); ui->lineEdit_fullScalePosition_2->setText(QString::number(current_data->variables_[i].fullScalePosition)); ui->lineEdit_xfullScalePosition_2->setText(QString::number(current_data->variables_[i].xfullScalePosition)); ui->lineEdit_zeroScalePosition_2->setText(QString::number(current_data->variables_[i].zeroScalePosition)); ui->lineEdit_xzeroScalePosition_2->setText(QString::number(current_data->variables_[i].xzeroScalePosition)); ui->comboBox_rectifier_funtion_2->setCurrentIndex(current_data->variables_[i].rectifier_funtion); // -alarm ui->lineEdit_danger_high_level_2->setText(QString::number(current_data->danger_high[i].level)); ui->lineEdit_danger_high_hysteresis_2->setText(QString::number(current_data->danger_high[i].hysteresis)); ui->lineEdit_danger_high_delay_2->setText(QString::number(current_data->danger_high[i].delay)); ui->checkBox_danger_high_enable_2->setChecked(current_data->danger_high[i].enable); ui->checkBox_danger_high_latch_2->setChecked(current_data->danger_high[i].latch); ui->lineEdit_alert_high_level_2->setText(QString::number(current_data->alert_high[i].level)); ui->lineEdit_alert_high_hysteresis_2->setText(QString::number(current_data->alert_high[i].hysteresis)); ui->lineEdit_alert_high_delay_2->setText(QString::number(current_data->alert_high[i].delay)); ui->checkBox_alert_high_enable_2->setChecked(current_data->alert_high[i].enable); ui->checkBox_alert_high_latch_2->setChecked(current_data->alert_high[i].latch); ui->label_unit1_2->setText(current_data->variables_[i].engineering_unit); ui->label_unit2_2->setText(current_data->variables_[i].engineering_unit); }else if(i + 1 == 3){ ui->checkBox_chan_3->setChecked(current_data->variables_[i].active); ui->lineEdit_engineeringUnit_3->setText(current_data->variables_[i].engineering_unit); ui->lineEdit_fullScalePosition_3->setText(QString::number(current_data->variables_[i].fullScalePosition)); ui->lineEdit_xfullScalePosition_3->setText(QString::number(current_data->variables_[i].xfullScalePosition)); ui->lineEdit_zeroScalePosition_3->setText(QString::number(current_data->variables_[i].zeroScalePosition)); ui->lineEdit_xzeroScalePosition_3->setText(QString::number(current_data->variables_[i].xzeroScalePosition)); ui->comboBox_rectifier_funtion_3->setCurrentIndex(current_data->variables_[i].rectifier_funtion); // -alarm ui->lineEdit_danger_high_level_3->setText(QString::number(current_data->danger_high[i].level)); ui->lineEdit_danger_high_hysteresis_3->setText(QString::number(current_data->danger_high[i].hysteresis)); ui->lineEdit_danger_high_delay_3->setText(QString::number(current_data->danger_high[i].delay)); ui->checkBox_danger_high_enable_3->setChecked(current_data->danger_high[i].enable); ui->checkBox_danger_high_latch_3->setChecked(current_data->danger_high[i].latch); ui->lineEdit_alert_high_level_3->setText(QString::number(current_data->alert_high[i].level)); ui->lineEdit_alert_high_hysteresis_3->setText(QString::number(current_data->alert_high[i].hysteresis)); ui->lineEdit_alert_high_delay_3->setText(QString::number(current_data->alert_high[i].delay)); ui->checkBox_alert_high_enable_3->setChecked(current_data->alert_high[i].enable); ui->checkBox_alert_high_latch_3->setChecked(current_data->alert_high[i].latch); ui->label_unit1_3->setText(current_data->variables_[i].engineering_unit); ui->label_unit2_3->setText(current_data->variables_[i].engineering_unit); }else if(i + 1 == 4){ ui->checkBox_chan_4->setChecked(current_data->variables_[i].active); ui->lineEdit_engineeringUnit_4->setText(current_data->variables_[i].engineering_unit); ui->lineEdit_fullScalePosition_4->setText(QString::number(current_data->variables_[i].fullScalePosition)); ui->lineEdit_xfullScalePosition_4->setText(QString::number(current_data->variables_[i].xfullScalePosition)); ui->lineEdit_zeroScalePosition_4->setText(QString::number(current_data->variables_[i].zeroScalePosition)); ui->lineEdit_xzeroScalePosition_4->setText(QString::number(current_data->variables_[i].xzeroScalePosition)); ui->comboBox_rectifier_funtion_4->setCurrentIndex(current_data->variables_[i].rectifier_funtion); // -alarm ui->lineEdit_danger_high_level_4->setText(QString::number(current_data->danger_high[i].level)); ui->lineEdit_danger_high_hysteresis_4->setText(QString::number(current_data->danger_high[i].hysteresis)); ui->lineEdit_danger_high_delay_4->setText(QString::number(current_data->danger_high[i].delay)); ui->checkBox_danger_high_enable_4->setChecked(current_data->danger_high[i].enable); ui->checkBox_danger_high_latch_4->setChecked(current_data->danger_high[i].latch); ui->lineEdit_alert_high_level_4->setText(QString::number(current_data->alert_high[i].level)); ui->lineEdit_alert_high_hysteresis_4->setText(QString::number(current_data->alert_high[i].hysteresis)); ui->lineEdit_alert_high_delay_4->setText(QString::number(current_data->alert_high[i].delay)); ui->checkBox_alert_high_enable_4->setChecked(current_data->alert_high[i].enable); ui->checkBox_alert_high_latch_4->setChecked(current_data->alert_high[i].latch); ui->label_unit1_4->setText(current_data->variables_[i].engineering_unit); ui->label_unit2_4->setText(current_data->variables_[i].engineering_unit); } } ui->comboBox_relative_number->setCurrentIndex(base_ptr->relative_number); ui->comboBox_group->setCurrentIndex(base_ptr->group - 1); } void HighSpeedCurrent::on_lineEdit_engineeringUnit_editingFinished() { QString str = ui->lineEdit_engineeringUnit->text(); ui->label_unit1->setText(str); ui->label_unit2->setText(str); } void HighSpeedCurrent::on_lineEdit_engineeringUnit_2_editingFinished() { QString str = ui->lineEdit_engineeringUnit_2->text(); ui->label_unit1_2->setText(str); ui->label_unit2_2->setText(str); } void HighSpeedCurrent::on_lineEdit_engineeringUnit_3_editingFinished() { QString str = ui->lineEdit_engineeringUnit_3->text(); ui->label_unit1_3->setText(str); ui->label_unit2_3->setText(str); } void HighSpeedCurrent::on_lineEdit_engineeringUnit_4_editingFinished() { QString str = ui->lineEdit_engineeringUnit_4->text(); ui->label_unit1_4->setText(str); ui->label_unit2_4->setText(str); } void HighSpeedCurrent::on_pushButton_confirm_clicked() { if(ui->lineEdit_fullScalePosition->text() == "" || ui->lineEdit_xfullScalePosition->text() == "" || ui->lineEdit_zeroScalePosition->text() == "" || ui->lineEdit_xzeroScalePosition->text() == ""){ QMessageBox::information(this, QStringLiteral("提示"), "请填写测量上下限数据!"); return; } std::shared_ptr base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no); if (base_ptr == nullptr) { qCritical() << " should not be here"; return; } for (int var = 1; var < SLOT_NUM; var ++) { if(ui->comboBox_relative_number->currentIndex() != 0){ std::shared_ptr slot_base_ptr = ConfigMgr::Instance()->GetSlotPtr(var); if(slot_base_ptr == nullptr || slot_base_ptr->card_type_ != kCardHighSpeedCurrent) continue; if(var == slot_no) continue; qDebug() << "relative_number" << var << slot_base_ptr->relative_number; if(slot_base_ptr->relative_number == ui->comboBox_relative_number->currentIndex() && slot_base_ptr->card_type_ != kCardHighSpeedCurrent){ QMessageBox::information(this, QStringLiteral("提示"), "板卡相对编号重复!"); return; } } } base_ptr->relative_number = ui->comboBox_relative_number->currentIndex(); base_ptr->group = ui->comboBox_group->currentIndex() + 1; std::shared_ptr current_data = std::dynamic_pointer_cast(base_ptr); UpdateData(current_data); this->close(); } void HighSpeedCurrent::on_pushButton_cancel_clicked() { this->close(); } void HighSpeedCurrent::copy_end_slot(){ Init(); } void HighSpeedCurrent::on_pushButton_copy_channel_clicked() { CopyChannel *copy_channel = new CopyChannel(slot_no); connect(copy_channel,SIGNAL(copy_end_sg()),this,SLOT(copy_end_slot())); copy_channel->setWindowModality(Qt::ApplicationModal); copy_channel->show(); }