242 lines
9.4 KiB
C++
242 lines
9.4 KiB
C++
#include "dc_outputs.h"
|
|
#include "ui_dc_outputs.h"
|
|
#include <QListView>
|
|
#include "dc_output_channel.h"
|
|
#include <QDebug>
|
|
#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>(cardtype);
|
|
unit = "";
|
|
current_index = ui->comboBox_ch_output->currentIndex();
|
|
Init();
|
|
}
|
|
|
|
DC_Outputs::~DC_Outputs()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void DC_Outputs::Init(){
|
|
std::shared_ptr<CardBase> 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<VibrationData>(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<VariableBase> 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<RadialVariable> variable_ptr = std::dynamic_pointer_cast<RadialVariable>(variable_base);
|
|
unit_num = variable_ptr->general.engineering_unit;
|
|
}
|
|
if (vib_dc_output_ptr->base_config_[current_index].channel_type == kVibAcc) {
|
|
std::shared_ptr<AccVelVariable> variable_ptr = std::dynamic_pointer_cast<AccVelVariable>(variable_base);
|
|
unit_num = variable_ptr->general.engineering_unit;
|
|
}
|
|
if (vib_dc_output_ptr->base_config_[current_index].channel_type == kVibVelocity) {
|
|
std::shared_ptr<AccVelVariable> variable_ptr = std::dynamic_pointer_cast<AccVelVariable>(variable_base);
|
|
unit_num = variable_ptr->general.engineering_unit;
|
|
}
|
|
if (vib_dc_output_ptr->base_config_[current_index].channel_type == kVibThrust) {
|
|
std::shared_ptr<ThrustVariable> variable_ptr = std::dynamic_pointer_cast<ThrustVariable>(variable_base);
|
|
unit_num = variable_ptr->general.engineering_unit;
|
|
}
|
|
if (vib_dc_output_ptr->base_config_[current_index].channel_type == kVibPressurePulsation) {
|
|
std::shared_ptr<PressurePulsationVariable> variable_ptr = std::dynamic_pointer_cast<PressurePulsationVariable>(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;
|
|
}
|
|
}
|
|
|