177 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			177 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|  | #include "channel_1_2.h"
 | ||
|  | #include "ui_channel_1_2.h"
 | ||
|  | #include "data_config.h"
 | ||
|  | #include "vibrationdata.h"
 | ||
|  | #include "config_mgr.h"
 | ||
|  | #include <QMessageBox>
 | ||
|  | 
 | ||
|  | Channel_1_2::Channel_1_2(int slot_no_, int channel_,QWidget *parent) | ||
|  |     : QWidget(parent) | ||
|  |     , ui(new Ui::Channel_1_2) | ||
|  | { | ||
|  |     ui->setupUi(this); | ||
|  |     slot_no = slot_no_; | ||
|  |     channel = channel_; | ||
|  |     QString chan = QString("%1").arg(channel); | ||
|  |     QString slot = QString("%1").arg(slot_no); | ||
|  |     ui->label_channel->setText(chan); | ||
|  |     ui->label_slot->setText(slot); | ||
|  |     Init(); | ||
|  | } | ||
|  | 
 | ||
|  | Channel_1_2::~Channel_1_2() | ||
|  | { | ||
|  |     delete ui; | ||
|  | } | ||
|  | void Channel_1_2::Init() | ||
|  | { | ||
|  |     std::shared_ptr<CardBase> base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no); | ||
|  |     if (base_ptr == nullptr) { | ||
|  |         qCritical() << "[kVib12::Init] should not be here"; | ||
|  |         return; | ||
|  |     } | ||
|  |     std::shared_ptr<VibrationData> ptr = std::dynamic_pointer_cast<VibrationData>(base_ptr); | ||
|  |     if (ptr->base_config_[channel - 1].channel_type != kVib12) { | ||
|  |         qDebug() << "[kVib12::Init] channel type changes"; | ||
|  |         return; | ||
|  |     } | ||
|  |     std::shared_ptr<VariableBase> variable_base = ptr->GetChannelPtr(channel); | ||
|  |     if (variable_base == nullptr) { | ||
|  |         qDebug() << "[kVib12::Init] no channel ptr"; | ||
|  |         return; | ||
|  |     } | ||
|  |     std::shared_ptr<DefaultVariable> variable_ptr = std::dynamic_pointer_cast<DefaultVariable>(variable_base); | ||
|  | 
 | ||
|  |     // processed output
 | ||
|  |     // -general
 | ||
|  |     if(variable_ptr->general.output_used) | ||
|  |         ui->comboBox_output_used->setCurrentIndex(0); | ||
|  |     else | ||
|  |         ui->comboBox_output_used->setCurrentIndex(1); | ||
|  |     ui->comboBox_engineering_unit->setCurrentIndex(variable_ptr->general.engineering_unit); | ||
|  |     ui->comboBox_rectifier_funtion->setCurrentIndex(variable_ptr->general.rectifier_function); | ||
|  |     // -alarm
 | ||
|  |     ui->lineEdit_danger_high_level->setText(QString::number(variable_ptr->danger_high.level)); | ||
|  |     ui->lineEdit_danger_high_hysteresis->setText(QString::number(variable_ptr->danger_high.hysteresis)); | ||
|  |     ui->lineEdit_danger_high_delay->setText(QString::number(variable_ptr->danger_high.delay)); | ||
|  |     ui->checkBox_danger_high_enable->setChecked(variable_ptr->danger_high.enable); | ||
|  |     ui->checkBox_danger_high_latch->setChecked(variable_ptr->danger_high.latch); | ||
|  | 
 | ||
|  |     ui->lineEdit_alert_high_level->setText(QString::number(variable_ptr->alert_high.level)); | ||
|  |     ui->lineEdit_alert_high_hysteresis->setText(QString::number(variable_ptr->alert_high.hysteresis)); | ||
|  |     ui->lineEdit_alert_high_delay->setText(QString::number(variable_ptr->alert_high.delay)); | ||
|  |     ui->checkBox_alert_high_enable->setChecked(variable_ptr->alert_high.enable); | ||
|  |     ui->checkBox_alert_high_latch->setChecked(variable_ptr->alert_high.latch); | ||
|  | 
 | ||
|  |     ui->lineEdit_danger_low_level->setText(QString::number(variable_ptr->danger_low.level)); | ||
|  |     ui->lineEdit_danger_low_hysteresis->setText(QString::number(variable_ptr->danger_low.hysteresis)); | ||
|  |     ui->lineEdit_danger_low_delay->setText(QString::number(variable_ptr->danger_low.delay)); | ||
|  |     ui->checkBox_danger_low_enable->setChecked(variable_ptr->danger_low.enable); | ||
|  |     ui->checkBox_danger_low_latch->setChecked(variable_ptr->danger_low.latch); | ||
|  | 
 | ||
|  |     ui->lineEdit_alert_low_level->setText(QString::number(variable_ptr->alert_low.level)); | ||
|  |     ui->lineEdit_alert_low_hysteresis->setText(QString::number(variable_ptr->alert_low.hysteresis)); | ||
|  |     ui->lineEdit_alert_low_delay->setText(QString::number(variable_ptr->alert_low.delay)); | ||
|  |     ui->checkBox_alert_low_enable->setChecked(variable_ptr->alert_low.enable); | ||
|  |     ui->checkBox_alert_low_latch->setChecked(variable_ptr->alert_low.latch); | ||
|  | } | ||
|  | 
 | ||
|  | void Channel_1_2::on_pushButton_confirm_clicked() | ||
|  | { | ||
|  |     std::shared_ptr<CardBase> base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no); | ||
|  |     if (base_ptr == nullptr) { | ||
|  |         qCritical() << "[kVib12::Init] should not be here"; | ||
|  |         return; | ||
|  |     } | ||
|  |     if(ui->lineEdit_alert_high_level->text().toFloat() > ui->lineEdit_danger_high_level->text().toDouble()){ | ||
|  |         QMessageBox::warning(this, QStringLiteral("警告"), "危险 + 高 必须大于 警报 + 高"); | ||
|  |         return; | ||
|  |     } | ||
|  |     std::shared_ptr<VibrationData> ptr = std::dynamic_pointer_cast<VibrationData>(base_ptr); | ||
|  |     ptr->base_config_[channel - 1].channel_type = kVib12; | ||
|  |     std::shared_ptr<VariableBase> variable_base = ptr->GetChannelPtr(channel); | ||
|  |     std::shared_ptr<DefaultVariable> variable = std::dynamic_pointer_cast<DefaultVariable>(variable_base); | ||
|  | 
 | ||
|  |     if (variable_base == nullptr || variable_base->type_ != kVib12 || variable == nullptr) { | ||
|  |         if (variable_base == nullptr) { | ||
|  |             qDebug() << "no channel ptr"; | ||
|  |         } else { | ||
|  |             ptr->RemoveChannel(channel); | ||
|  |             qDebug() << "channel type change"; | ||
|  |         } | ||
|  |         std::shared_ptr<DefaultVariable> variable = std::make_shared<DefaultVariable>(); | ||
|  |         variable->id_ = channel; | ||
|  |         // processed output
 | ||
|  |         // -general
 | ||
|  |         if(ui->comboBox_output_used->currentIndex() == 0) | ||
|  |             variable->general.output_used = true; | ||
|  |         else | ||
|  |             variable->general.output_used = false; | ||
|  |         variable->general.engineering_unit = ui->comboBox_engineering_unit->currentIndex(); | ||
|  |         variable->general.rectifier_function = ui->comboBox_rectifier_funtion->currentIndex(); | ||
|  |         // -alarm
 | ||
|  |         variable->danger_high.level = ui->lineEdit_danger_high_level->text().toDouble(); | ||
|  |         variable->danger_high.hysteresis = ui->lineEdit_danger_high_hysteresis->text().toDouble(); | ||
|  |         variable->danger_high.delay = ui->lineEdit_danger_high_delay->text().toDouble(); | ||
|  |         variable->danger_high.enable = ui->checkBox_danger_high_enable->isChecked(); | ||
|  |         variable->danger_high.latch = ui->checkBox_danger_high_latch->isChecked(); | ||
|  |         variable->alert_high.level = ui->lineEdit_alert_high_level->text().toDouble(); | ||
|  |         variable->alert_high.hysteresis = ui->lineEdit_alert_high_hysteresis->text().toDouble(); | ||
|  |         variable->alert_high.delay = ui->lineEdit_alert_high_delay->text().toDouble(); | ||
|  |         variable->alert_high.enable = ui->checkBox_alert_high_enable->isChecked(); | ||
|  |         variable->alert_high.latch = ui->checkBox_alert_high_latch->isChecked(); | ||
|  |         variable->danger_low.level = ui->lineEdit_danger_low_level->text().toDouble(); | ||
|  |         variable->danger_low.hysteresis = ui->lineEdit_danger_low_hysteresis->text().toDouble(); | ||
|  |         variable->danger_low.delay = ui->lineEdit_danger_low_delay->text().toDouble(); | ||
|  |         variable->danger_low.enable = ui->checkBox_danger_low_enable->isChecked(); | ||
|  |         variable->danger_low.latch = ui->checkBox_danger_low_latch->isChecked(); | ||
|  |         variable->alert_low.level = ui->lineEdit_alert_low_level->text().toDouble(); | ||
|  |         variable->alert_low.hysteresis = ui->lineEdit_alert_low_hysteresis->text().toDouble(); | ||
|  |         variable->alert_low.delay = ui->lineEdit_alert_low_delay->text().toDouble(); | ||
|  |         variable->alert_low.enable = ui->checkBox_alert_low_enable->isChecked(); | ||
|  |         variable->alert_low.latch = ui->checkBox_alert_low_latch->isChecked(); | ||
|  |         ptr->variables_.push_back(variable); | ||
|  |         this->close(); | ||
|  |         return; | ||
|  |     } | ||
|  |     // processed output
 | ||
|  |     // -general
 | ||
|  |     if(ui->comboBox_output_used->currentIndex() == 0) | ||
|  |         variable->general.output_used = true; | ||
|  |     else | ||
|  |         variable->general.output_used = false; | ||
|  |     variable->general.engineering_unit = ui->comboBox_engineering_unit->currentIndex(); | ||
|  |     variable->general.rectifier_function = ui->comboBox_rectifier_funtion->currentIndex(); | ||
|  |     // -alarm
 | ||
|  |     variable->danger_high.level = ui->lineEdit_danger_high_level->text().toDouble(); | ||
|  |     variable->danger_high.hysteresis = ui->lineEdit_danger_high_hysteresis->text().toDouble(); | ||
|  |     variable->danger_high.delay = ui->lineEdit_danger_high_delay->text().toDouble(); | ||
|  |     variable->danger_high.enable = ui->checkBox_danger_high_enable->isChecked(); | ||
|  |     variable->danger_high.latch = ui->checkBox_danger_high_latch->isChecked(); | ||
|  |     variable->alert_high.level = ui->lineEdit_alert_high_level->text().toDouble(); | ||
|  |     variable->alert_high.hysteresis = ui->lineEdit_alert_high_hysteresis->text().toDouble(); | ||
|  |     variable->alert_high.delay = ui->lineEdit_alert_high_delay->text().toDouble(); | ||
|  |     variable->alert_high.enable = ui->checkBox_alert_high_enable->isChecked(); | ||
|  |     variable->alert_high.latch = ui->checkBox_alert_high_latch->isChecked(); | ||
|  |     variable->danger_low.level = ui->lineEdit_danger_low_level->text().toDouble(); | ||
|  |     variable->danger_low.hysteresis = ui->lineEdit_danger_low_hysteresis->text().toDouble(); | ||
|  |     variable->danger_low.delay = ui->lineEdit_danger_low_delay->text().toDouble(); | ||
|  |     variable->danger_low.enable = ui->checkBox_danger_low_enable->isChecked(); | ||
|  |     variable->danger_low.latch = ui->checkBox_danger_low_latch->isChecked(); | ||
|  |     variable->alert_low.level = ui->lineEdit_alert_low_level->text().toDouble(); | ||
|  |     variable->alert_low.hysteresis = ui->lineEdit_alert_low_hysteresis->text().toDouble(); | ||
|  |     variable->alert_low.delay = ui->lineEdit_alert_low_delay->text().toDouble(); | ||
|  |     variable->alert_low.enable = ui->checkBox_alert_low_enable->isChecked(); | ||
|  |     variable->alert_low.latch = ui->checkBox_alert_low_latch->isChecked(); | ||
|  |     this->close(); | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | void Channel_1_2::on_pushButton_cancel_clicked() | ||
|  | { | ||
|  |     this->close(); | ||
|  | 
 | ||
|  | } | ||
|  | 
 |