#include "dc_outputs.h" #include "ui_dc_outputs.h" #include #include "dc_output_channel.h" #include #include "config_mgr.h" #include "data_config.h" #include "vibrationdata.h" ChannelUsed ch_used; DC_Outputs::DC_Outputs(int slot_no_,int cardtype,QWidget *parent) : QWidget(parent), ui(new Ui::DC_Outputs) { ui->setupUi(this); ui->comboBox_ch_output->setView(new QListView()); slot_no = slot_no_; car_type = static_cast(cardtype); unit = ""; current_index = ui->comboBox_ch_output->currentIndex(); Init(); } DC_Outputs::~DC_Outputs() { delete ui; } void DC_Outputs::Init(){ std::shared_ptr base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no); if (base_ptr == nullptr) { qCritical() << "[DC_Outputs" "::Init] should not be here"; return; } vib_dc_output_ptr = std::dynamic_pointer_cast(base_ptr); QString unit_str = GetUnit(); if(vib_dc_output_ptr->dc_output[current_index][0].output_channel == 1){ ui->label_ch_1->setText("通道1"); ui->label_ch_1_min->setText(QString::number(vib_dc_output_ptr->dc_output[current_index][0].minmum)); ui->label_ch_1_max->setText(QString::number(vib_dc_output_ptr->dc_output[current_index][0].maxmum)); ch_used.used[0] = true; } if(vib_dc_output_ptr->dc_output[current_index][1].output_channel == 2){ ui->label_ch_2->setText("通道2"); ui->label_ch_2_min->setText(QString::number(vib_dc_output_ptr->dc_output[current_index][1].minmum)); ui->label_ch_2_max->setText(QString::number(vib_dc_output_ptr->dc_output[current_index][1].maxmum)); ch_used.used[1] = true; } if(vib_dc_output_ptr->dc_output[current_index][2].output_channel == 3){ ui->label_ch_3->setText("通道3"); ui->label_ch_3_min->setText(QString::number(vib_dc_output_ptr->dc_output[current_index][2].minmum)); ui->label_ch_3_max->setText(QString::number(vib_dc_output_ptr->dc_output[current_index][2].maxmum)); ch_used.used[2] = true; } if(vib_dc_output_ptr->dc_output[current_index][3].output_channel == 4){ ui->label_ch_4->setText("通道4"); ui->label_ch_4_min->setText(QString::number(vib_dc_output_ptr->dc_output[current_index][3].minmum)); ui->label_ch_4_max->setText(QString::number(vib_dc_output_ptr->dc_output[current_index][3].maxmum)); ch_used.used[3] = true; } } QString DC_Outputs::GetUnit(){ int unit_num = -1; QString unit_str = ""; std::shared_ptr variable_base = vib_dc_output_ptr->GetChannelPtr(current_index + 1); if (vib_dc_output_ptr->base_config_[current_index].channel_type == kVibRadial) { std::shared_ptr variable_ptr = std::dynamic_pointer_cast(variable_base); unit_num = variable_ptr->general.engineering_unit; } if (vib_dc_output_ptr->base_config_[current_index].channel_type == kVibAcc) { std::shared_ptr variable_ptr = std::dynamic_pointer_cast(variable_base); unit_num = variable_ptr->general.engineering_unit; } if (vib_dc_output_ptr->base_config_[current_index].channel_type == kVibVelocity) { std::shared_ptr variable_ptr = std::dynamic_pointer_cast(variable_base); unit_num = variable_ptr->general.engineering_unit; } if (vib_dc_output_ptr->base_config_[current_index].channel_type == kVibThrust) { std::shared_ptr variable_ptr = std::dynamic_pointer_cast(variable_base); unit_num = variable_ptr->general.engineering_unit; } if (vib_dc_output_ptr->base_config_[current_index].channel_type == kVibPressurePulsation) { std::shared_ptr variable_ptr = std::dynamic_pointer_cast(variable_base); unit_num = variable_ptr->general.engineering_unit; } switch (unit_num) { case kUnit1:{ unit_str = "g"; break; } case kUnit2:{ unit_str = "m/s**2"; break; } case kUnit3:{ unit_str = "mm/s"; break; } case kUnit4:{ unit_str = "inch/s"; break; } case kUnit5:{ unit_str = "um"; break; } case kUnit6:{ unit_str = "mm"; break; } case kUnit7:{ unit_str = "mils"; break; } case kUnit8:{ unit_str = "inch/s**2"; break; } case kUnit9:{ unit_str = "mbar"; break; } case kUnit10:{ unit_str = "bar"; break; } case kUnit11:{ unit_str = "psi"; break; } case kUnit12:{ unit_str = "pa"; break; } } return unit_str; } void DC_Outputs::on_comboBox_ch_output_activated(int index) { current_index = index; QString unit_str = GetUnit(); DC_Output_Channel *dc_output_channel = new DC_Output_Channel(unit_str); dc_output_channel->setWindowModality(Qt::ApplicationModal); connect(dc_output_channel,SIGNAL(output_channel_data_sg(int,float,float)),this,SLOT(output_channel_data(int,float,float))); dc_output_channel->show(); } void DC_Outputs::output_channel_data(int channel,float minmun,float maxmum){ qDebug() << channel << minmun << maxmum ; QString unit_str = GetUnit(); if(channel == 1){ ui->label_ch_1->setText("通道1"); ui->label_ch_1_min->setText(QString::number(minmun)); ui->label_ch_1_max->setText(QString::number(maxmum)); ch_used.used[0] = true; }else if(channel == 2){ ui->label_ch_2->setText("通道2"); ui->label_ch_2_min->setText(QString::number(minmun)); ui->label_ch_2_max->setText(QString::number(maxmum)); ch_used.used[1] = true; }else if(channel == 3){ ui->label_ch_3->setText("通道3"); ui->label_ch_3_min->setText(QString::number(minmun)); ui->label_ch_3_max->setText(QString::number(maxmum)); ch_used.used[2] = true; }else if(channel == 4){ ui->label_ch_4->setText("通道4"); ui->label_ch_4_min->setText(QString::number(minmun)); ui->label_ch_4_max->setText(QString::number(maxmum)); ch_used.used[3] = true; } } void DC_Outputs::on_pushButton_confirm_clicked() { if(ui->label_ch_1->text() != "未使用"){ vib_dc_output_ptr->dc_output[current_index][0].output_channel = 1; vib_dc_output_ptr->dc_output[current_index][0].minmum = ui->label_ch_1_min->text().toFloat(); vib_dc_output_ptr->dc_output[current_index][0].maxmum = ui->label_ch_1_max->text().toFloat(); } if(ui->label_ch_2->text() != "未使用"){ vib_dc_output_ptr->dc_output[current_index][1].output_channel = 2; vib_dc_output_ptr->dc_output[current_index][1].minmum = ui->label_ch_2_min->text().toFloat(); vib_dc_output_ptr->dc_output[current_index][1].maxmum = ui->label_ch_2_max->text().toFloat(); } if(ui->label_ch_3->text() != "未使用"){ vib_dc_output_ptr->dc_output[current_index][2].output_channel = 3; vib_dc_output_ptr->dc_output[current_index][2].minmum = ui->label_ch_3_min->text().toFloat(); vib_dc_output_ptr->dc_output[current_index][2].maxmum = ui->label_ch_3_max->text().toFloat(); } if(ui->label_ch_4->text() != "未使用"){ vib_dc_output_ptr->dc_output[current_index][3].output_channel = 4; vib_dc_output_ptr->dc_output[current_index][3].minmum = ui->label_ch_4_min->text().toFloat(); vib_dc_output_ptr->dc_output[current_index][3].maxmum = ui->label_ch_4_max->text().toFloat(); } this->close(); } void DC_Outputs::on_pushButton_cancel_clicked() { this->close(); } void DC_Outputs::on_comboBox_ch_output_currentIndexChanged(int index) { current_index = index; QString unit_str = GetUnit(); if(vib_dc_output_ptr->dc_output[current_index][0].output_channel == 1){ ui->label_ch_1->setText("通道1"); ui->label_ch_1_min->setText(QString::number(vib_dc_output_ptr->dc_output[current_index][0].minmum)); ui->label_ch_1_max->setText(QString::number(vib_dc_output_ptr->dc_output[current_index][0].maxmum)); ch_used.used[0] = true; } if(vib_dc_output_ptr->dc_output[current_index][1].output_channel == 2){ ui->label_ch_2->setText("通道2"); ui->label_ch_2_min->setText(QString::number(vib_dc_output_ptr->dc_output[current_index][1].minmum)); ui->label_ch_2_max->setText(QString::number(vib_dc_output_ptr->dc_output[current_index][1].maxmum)); ch_used.used[1] = true; } if(vib_dc_output_ptr->dc_output[current_index][2].output_channel == 3){ ui->label_ch_3->setText("通道3"); ui->label_ch_3_min->setText(QString::number(vib_dc_output_ptr->dc_output[current_index][2].minmum)); ui->label_ch_3_max->setText(QString::number(vib_dc_output_ptr->dc_output[current_index][2].maxmum)); ch_used.used[2] = true; } if(vib_dc_output_ptr->dc_output[current_index][3].output_channel == 4){ ui->label_ch_4->setText("通道4"); ui->label_ch_4_min->setText(QString::number(vib_dc_output_ptr->dc_output[current_index][3].minmum)); ui->label_ch_4_max->setText(QString::number(vib_dc_output_ptr->dc_output[current_index][3].maxmum)); ch_used.used[3] = true; } }