add temp code

This commit is contained in:
zhangsheng 2025-07-28 22:41:24 +08:00
parent b1a776bfda
commit 87549b312f
6 changed files with 160 additions and 1237 deletions

View File

@ -28,7 +28,6 @@ SOURCES += \
rangeslider.cpp \
relaysetting.cpp \
seismic_monitor.cpp \
setpoint.cpp \
setpoint_tachometer.cpp \
singlerelay.cpp \
singlerelay_data.cpp \
@ -62,7 +61,6 @@ HEADERS += \
rangeslider.h \
relaysetting.h \
seismic_monitor.h \
setpoint.h \
setpoint_tachometer.h \
singlerelay.h \
singlerelay_data.h \
@ -89,7 +87,6 @@ FORMS += \
radial_vibration.ui \
relaysetting.ui \
seismic_monitor.ui \
setpoint.ui \
setpoint_tachometer.ui \
singlerelay.ui \
tachometer.ui \

View File

@ -535,35 +535,54 @@ void ConfigMgr::Load(QString filename) {
variable->filter_[k].checked = filter_ele["checked"].toBool();
}
variable->id_ = j + 1;
QJsonObject direct = tmp_variable["direct"].toObject();
variable->direct_.full_scale_range = direct["full_scale_range"].toInt();
variable->direct_.clamp_value = direct["clamp_value"].toDouble();
variable->direct_.custom = direct["custom"].toDouble();
QJsonObject x1 = tmp_variable["x1"].toObject();
variable->x1_.checked = x1["checked"].toBool();
variable->x1_.full_scale_range = x1["full_scale_range"].toInt();
variable->x1_.clamp_value = x1["clamp_value"].toDouble();
variable->x1_.custom = x1["custom"].toDouble();
variable->x1_.phase_lag = x1["phase_lag"].toInt();
QJsonObject x2 = tmp_variable["x2"].toObject();
variable->x2_.checked = x2["checked"].toBool();
variable->x2_.full_scale_range = x2["full_scale_range"].toInt();
variable->x2_.clamp_value = x2["clamp_value"].toDouble();
variable->x2_.custom = x2["custom"].toDouble();
variable->x2_.phase_lag = x2["phase_lag"].toInt();
QJsonObject recorder_out = tmp_variable["recorder_out"].toObject();
variable->recorder_out_.recorder_output = recorder_out["recorder_output"].toInt();
variable->recorder_out_.two_ma_clamp = recorder_out["two_ma_clamp"].toBool();
variable->recorder_out_.trip_multiply = recorder_out["trip_multiply"].toDouble();
variable->recorder_out_.comparision = recorder_out["comparision"].toInt();
variable->recorder_out_.percentage = recorder_out["percentage"].toInt();
QJsonObject delay = tmp_variable["delay"].toObject();
variable->delay_.alert = delay["alert"].toInt();
variable->delay_.danger = delay["danger"].toDouble();
variable->delay_.active_100ms = delay["active_100ms"].toBool();
QJsonObject latching = tmp_variable["latching"].toObject();
variable->alert_latching_ = latching["alert"].toBool();
variable->danger_latching_ = latching["danger"].toBool();
QJsonObject measurement, gap;
measurement = tmp_variable["measurement"].toObject();
gap = tmp_variable["gap"].toObject();
variable->general.output_used = measurement["output_used"].toBool();
variable->general.engineering_unit = measurement["engieneering_unit"].toString();
variable->general.rectifier_function = measurement["rectifier_function"].toString();
variable->danger_high.level = measurement["danger_high_level"].toDouble();
variable->danger_high.hysteresis = measurement["danger_high_hysteresis"].toDouble();
variable->danger_high.delay = measurement["danger_high_delay"].toInt();
variable->danger_high.enable = measurement["danger_high_enable"].toBool();
variable->danger_high.latch = measurement["danger_high_latch"].toBool();
variable->alert_high.level = measurement["alert_high_level"].toDouble();
variable->alert_high.hysteresis = measurement["alert_high_hysteresis"].toDouble();
variable->alert_high.delay = measurement["alert_high_delay"].toInt();
variable->alert_high.enable = measurement["alert_high_enable"].toBool();
variable->alert_high.latch = measurement["alert_high_latch"].toBool();
variable->danger_low.level = measurement["danger_low_level"].toDouble();
variable->danger_low.hysteresis = measurement["danger_low_hysteresis"].toDouble();
variable->danger_low.delay = measurement["danger_low_delay"].toInt();
variable->danger_low.enable = measurement["danger_low_enable"].toBool();
variable->danger_low.latch = measurement["danger_low_latch"].toBool();
variable->alert_low.level = measurement["alert_low_level"].toDouble();
variable->alert_low.hysteresis = measurement["alert_low_hysteresis"].toDouble();
variable->alert_low.delay = measurement["alert_low_delay"].toInt();
variable->alert_low.enable = measurement["alert_low_enable"].toBool();
variable->alert_low.latch = measurement["alert_low_latch"].toBool();
variable->gap_danger_high.level = gap["danger_high_level"].toDouble();
variable->gap_danger_high.hysteresis = gap["danger_high_hysteresis"].toDouble();
variable->gap_danger_high.delay = gap["danger_high_delay"].toInt();
variable->gap_danger_high.enable = gap["danger_high_enable"].toBool();
variable->gap_danger_high.latch = gap["danger_high_latch"].toBool();
variable->gap_alert_high.level = gap["alert_high_level"].toDouble();
variable->gap_alert_high.hysteresis = gap["alert_high_hysteresis"].toDouble();
variable->gap_alert_high.delay = gap["alert_high_delay"].toInt();
variable->gap_alert_high.enable = gap["alert_high_enable"].toBool();
variable->gap_alert_high.latch = gap["alert_high_latch"].toBool();
variable->gap_danger_low.level = gap["danger_low_level"].toDouble();
variable->gap_danger_low.hysteresis = gap["danger_low_hysteresis"].toDouble();
variable->gap_danger_low.delay = gap["danger_low_delay"].toInt();
variable->gap_danger_low.enable = gap["danger_low_enable"].toBool();
variable->gap_danger_low.latch = gap["danger_low_latch"].toBool();
variable->gap_alert_low.level = gap["alert_low_level"].toDouble();
variable->gap_alert_low.hysteresis = gap["alert_low_hysteresis"].toDouble();
variable->gap_alert_low.delay = gap["alert_low_delay"].toInt();
variable->gap_alert_low.enable = gap["alert_low_enable"].toBool();
variable->gap_alert_low.latch = gap["alert_low_latch"].toBool();
vib_data->variables_.push_back(variable);
break;
}
@ -578,26 +597,28 @@ void ConfigMgr::Load(QString filename) {
variable->filter_[k].checked = filter_ele["checked"].toBool();
}
variable->id_ = j + 1;
QJsonObject direct = tmp_variable["direct"].toObject();
variable->direct_.full_scale_range = direct["full_scale_range"].toInt();
variable->direct_.clamp_value = direct["clamp_value"].toDouble();
variable->direct_.custom = direct["custom"].toDouble();
QJsonObject gap = tmp_variable["gap"].toObject();
variable->gap_range.full_scale_range = direct["full_scale_range"].toInt();
variable->gap_range.custom = direct["custom"].toDouble();
QJsonObject recorder_out = tmp_variable["recorder_out"].toObject();
variable->recorder_out_.recorder_output = recorder_out["recorder_output"].toInt();
variable->recorder_out_.two_ma_clamp = recorder_out["two_ma_clamp"].toBool();
QJsonObject delay = tmp_variable["delay"].toObject();
variable->delay_.alert = delay["alert"].toInt();
variable->delay_.danger = delay["danger"].toDouble();
variable->delay_.active_100ms = delay["active_100ms"].toBool();
QJsonObject latching = tmp_variable["latching"].toObject();
variable->alert_latching_ = latching["alert"].toBool();
variable->danger_latching_ = latching["danger"].toBool();
variable->timed_ok_ = latching["timed_ok"].toBool();
QJsonObject gap;
gap = tmp_variable["gap"].toObject();
variable->gap_danger_high.level = gap["danger_high_level"].toDouble();
variable->gap_danger_high.hysteresis = gap["danger_high_hysteresis"].toDouble();
variable->gap_danger_high.delay = gap["danger_high_delay"].toInt();
variable->gap_danger_high.enable = gap["danger_high_enable"].toBool();
variable->gap_danger_high.latch = gap["danger_high_latch"].toBool();
variable->gap_alert_high.level = gap["alert_high_level"].toDouble();
variable->gap_alert_high.hysteresis = gap["alert_high_hysteresis"].toDouble();
variable->gap_alert_high.delay = gap["alert_high_delay"].toInt();
variable->gap_alert_high.enable = gap["alert_high_enable"].toBool();
variable->gap_alert_high.latch = gap["alert_high_latch"].toBool();
variable->gap_danger_low.level = gap["danger_low_level"].toDouble();
variable->gap_danger_low.hysteresis = gap["danger_low_hysteresis"].toDouble();
variable->gap_danger_low.delay = gap["danger_low_delay"].toInt();
variable->gap_danger_low.enable = gap["danger_low_enable"].toBool();
variable->gap_danger_low.latch = gap["danger_low_latch"].toBool();
variable->gap_alert_low.level = gap["alert_low_level"].toDouble();
variable->gap_alert_low.hysteresis = gap["alert_low_hysteresis"].toDouble();
variable->gap_alert_low.delay = gap["alert_low_delay"].toInt();
variable->gap_alert_low.enable = gap["alert_low_enable"].toBool();
variable->gap_alert_low.latch = gap["alert_low_latch"].toBool();
variable->zero_position.value = tmp_variable["zero_position"].toDouble();
variable->zero_position.negation = tmp_variable["negation"].toBool();
vib_data->variables_.push_back(variable);
@ -625,10 +646,59 @@ void ConfigMgr::Load(QString filename) {
variable->measuring_max = scaling["measuring_max"].toInt();
variable->scale_min = scaling["scale_min"].toInt();
variable->scale_max = scaling["scale_max"].toInt();
QJsonArray freband_output_array = tmp_variable["freband_output"].toArray();
for (int k = 0; k < freband_output_array.size(); ++k) {
QJsonObject freband_output = freband_output_array[k].toObject();
FrequencybandOutput output;
output.enable = freband_output["enable"].toBool();
output.start = freband_output["start"].toInt();
output.end = freband_output["end"].toInt();
variable->freband_output[k] = output;
}
vib_data->variables_.push_back(variable);
break;
}
case kVibVelocity:{
std::shared_ptr<AccVelVariable> variable = std::make_shared<AccVelVariable>();
// filter
QJsonArray filter_array = tmp_variable["filter"].toArray();
for (int k = 0; k < filter_array.size(); k++) {
QJsonObject filter_ele = filter_array[k].toObject();
variable->filter_[k].low = filter_ele["low"].toInt();
variable->filter_[k].high = filter_ele["high"].toInt();
variable->filter_[k].checked = filter_ele["checked"].toBool();
}
variable->id_ = j + 1;
QJsonObject processed_output, general, alarm;
processed_output = tmp_variable["processed_output"].toObject();
general = processed_output["general"].toObject();
alarm = processed_output["alarm"].toObject();
variable->general.output_used = general["output_used"].toBool();
variable->general.engineering_unit = general["engieneering_unit"].toString();
variable->general.rectifier_function = general["rectifier_function"].toString();
variable->danger_high.level = alarm["danger_high_level"].toDouble();
variable->danger_high.hysteresis = alarm["danger_high_hysteresis"].toDouble();
variable->danger_high.delay = alarm["danger_high_delay"].toInt();
variable->danger_high.enable = alarm["danger_high_enable"].toBool();
variable->danger_high.latch = alarm["danger_high_latch"].toBool();
variable->alert_high.level = alarm["alert_high_level"].toDouble();
variable->alert_high.hysteresis = alarm["alert_high_hysteresis"].toDouble();
variable->alert_high.delay = alarm["alert_high_delay"].toInt();
variable->alert_high.enable = alarm["alert_high_enable"].toBool();
variable->alert_high.latch = alarm["alert_high_latch"].toBool();
variable->danger_low.level = alarm["danger_low_level"].toDouble();
variable->danger_low.hysteresis = alarm["danger_low_hysteresis"].toDouble();
variable->danger_low.delay = alarm["danger_low_delay"].toInt();
variable->danger_low.enable = alarm["danger_low_enable"].toBool();
variable->danger_low.latch = alarm["danger_low_latch"].toBool();
variable->alert_low.level = alarm["alert_low_level"].toDouble();
variable->alert_low.hysteresis = alarm["alert_low_hysteresis"].toDouble();
variable->alert_low.delay = alarm["alert_low_delay"].toInt();
variable->alert_low.enable = alarm["alert_low_enable"].toBool();
variable->alert_low.latch = alarm["alert_low_latch"].toBool();
vib_data->variables_.push_back(variable);
break;
}
case kVibVelocity:
case kVibAcc: {
std::shared_ptr<AccVelVariable> variable = std::make_shared<AccVelVariable>();
// filter
@ -640,39 +710,43 @@ void ConfigMgr::Load(QString filename) {
variable->filter_[k].checked = filter_ele["checked"].toBool();
}
variable->id_ = j + 1;
QJsonObject direct = tmp_variable["direct"].toObject();
variable->direct_.full_scale_range = direct["full_scale_range"].toInt();
variable->direct_.clamp_value = direct["clamp_value"].toDouble();
variable->direct_.custom = direct["custom"].toDouble();
QJsonObject x1 = tmp_variable["x1"].toObject();
variable->x1_.checked = x1["checked"].toBool();
variable->x1_.full_scale_range = x1["full_scale_range"].toInt();
variable->x1_.clamp_value = x1["clamp_value"].toDouble();
variable->x1_.custom = x1["custom"].toDouble();
variable->x1_.phase_lag = x1["phase_lag"].toInt();
QJsonObject x2 = tmp_variable["x2"].toObject();
variable->x2_.checked = x2["checked"].toBool();
variable->x2_.full_scale_range = x2["full_scale_range"].toInt();
variable->x2_.clamp_value = x2["clamp_value"].toDouble();
variable->x2_.custom = x2["custom"].toDouble();
variable->x2_.phase_lag = x2["phase_lag"].toInt();
QJsonObject rms_integrate = tmp_variable["rms_integrate"].toObject();
variable->rms_active_ = rms_integrate["rms_active"].toBool();
variable->integrate_active_ = rms_integrate["integrate_active"].toBool();
QJsonObject recorder_out = tmp_variable["recorder_out"].toObject();
variable->recorder_out_.recorder_output = recorder_out["recorder_output"].toInt();
variable->recorder_out_.two_ma_clamp = recorder_out["two_ma_clamp"].toBool();
variable->recorder_out_.trip_multiply = recorder_out["trip_multiply"].toDouble();
variable->recorder_out_.comparision = recorder_out["comparision"].toInt();
variable->recorder_out_.percentage = recorder_out["percentage"].toInt();
QJsonObject delay = tmp_variable["delay"].toObject();
variable->delay_.alert = delay["alert"].toInt();
variable->delay_.danger = delay["danger"].toDouble();
variable->delay_.active_100ms = delay["active_100ms"].toBool();
QJsonObject latching = tmp_variable["latching"].toObject();
variable->alert_latching_ = latching["alert"].toBool();
variable->danger_latching_ = latching["danger"].toBool();
variable->timed_ok_ = latching["timed_ok"].toBool();
QJsonObject processed_output, general, alarm;
processed_output = tmp_variable["processed_output"].toObject();
general = processed_output["general"].toObject();
alarm = processed_output["alarm"].toObject();
variable->general.output_used = general["output_used"].toBool();
variable->general.engineering_unit = general["engieneering_unit"].toString();
variable->general.rectifier_function = general["rectifier_function"].toString();
variable->danger_high.level = alarm["danger_high_level"].toDouble();
variable->danger_high.hysteresis = alarm["danger_high_hysteresis"].toDouble();
variable->danger_high.delay = alarm["danger_high_delay"].toInt();
variable->danger_high.enable = alarm["danger_high_enable"].toBool();
variable->danger_high.latch = alarm["danger_high_latch"].toBool();
variable->alert_high.level = alarm["alert_high_level"].toDouble();
variable->alert_high.hysteresis = alarm["alert_high_hysteresis"].toDouble();
variable->alert_high.delay = alarm["alert_high_delay"].toInt();
variable->alert_high.enable = alarm["alert_high_enable"].toBool();
variable->alert_high.latch = alarm["alert_high_latch"].toBool();
variable->danger_low.level = alarm["danger_low_level"].toDouble();
variable->danger_low.hysteresis = alarm["danger_low_hysteresis"].toDouble();
variable->danger_low.delay = alarm["danger_low_delay"].toInt();
variable->danger_low.enable = alarm["danger_low_enable"].toBool();
variable->danger_low.latch = alarm["danger_low_latch"].toBool();
variable->alert_low.level = alarm["alert_low_level"].toDouble();
variable->alert_low.hysteresis = alarm["alert_low_hysteresis"].toDouble();
variable->alert_low.delay = alarm["alert_low_delay"].toInt();
variable->alert_low.enable = alarm["alert_low_enable"].toBool();
variable->alert_low.latch = alarm["alert_low_latch"].toBool();
QJsonArray freband_output_array = tmp_variable["freband_output"].toArray();
for (int k = 0; k < freband_output_array.size(); ++k) {
QJsonObject freband_output = freband_output_array[k].toObject();
FrequencybandOutput output;
output.enable = freband_output["enable"].toBool();
output.start = freband_output["start"].toInt();
output.end = freband_output["end"].toInt();
variable->freband_output[k] = output;
}
vib_data->variables_.push_back(variable);
break;
}

View File

@ -10,7 +10,6 @@
#include "singlerelay.h"
#include "tachometer.h"
#include "seismic_monitor.h"
#include "setpoint.h"
#include <QMessageBox>
#include <QFileDialog>
#include <stdio.h>
@ -476,9 +475,9 @@ void MainWindow::OnButtonGroup(QAbstractButton *slot_btn) {
case kCardVibSingle:{
QString object_name = slot_btn->objectName();
int button_id = object_name.right(object_name.length() - 15).toInt();
Setpoint *setpoint = new Setpoint(button_id,ConfigMgr::Instance()->card_type_[button_id - 1]);
setpoint->setWindowModality(Qt::ApplicationModal);
setpoint->show();
// Setpoint *setpoint = new Setpoint(button_id,ConfigMgr::Instance()->card_type_[button_id - 1]);
// setpoint->setWindowModality(Qt::ApplicationModal);
// setpoint->show();
break;
}
case kCardSpeedSingle:{

View File

@ -1,482 +0,0 @@
#include "setpoint.h"
#include "ui_setpoint.h"
#include "config_mgr.h"
#include <QDebug>
#include "displacement_ds.h"
#include "acceleration_ds.h"
#include "velocity_ds.h"
#include <QListView>
#include <QMessageBox>
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>(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<int>::of(&QComboBox::currentIndexChanged),
this, &Setpoint::onComboBoxIndexChanged);
current_index = ui->comboBox_chan->currentIndex();
}
Setpoint::~Setpoint()
{
if(slider_1st != nullptr)
delete slider_1st;
if(slider_2nd != nullptr)
delete slider_2nd;
if(slider_3rd != nullptr)
delete slider_3rd;
if(slider_danger != nullptr)
delete slider_danger;
delete ui;
}
void Setpoint::Init(){
QVBoxLayout *layout_direct = new QVBoxLayout(ui->widget_direct);
slider_1st = new RangeSlider;
layout_direct->addWidget(slider_1st);
QVBoxLayout *layout_1x_ampl = new QVBoxLayout(ui->widget_1x_ampl);
slider_2nd = new RangeSlider;
layout_1x_ampl->addWidget(slider_2nd);
QVBoxLayout *layout_2x_ampl = new QVBoxLayout(ui->widget_2x_ampl);
slider_3rd = new RangeSlider;
layout_2x_ampl->addWidget(slider_3rd);
QVBoxLayout *layout_danger = new QVBoxLayout(ui->widget_danger);
slider_danger = new RangeSlider(1);
layout_danger->addWidget(slider_danger);
std::shared_ptr<CardBase> base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no);
switch (car_type) {
case kCardVibSingle:{
update();
}break;
}
QObject::connect(ui->lineEdit_1st_upper, &QLineEdit::editingFinished, [&]() {
slider_1st->setUpperValue(ui->lineEdit_1st_upper->text().toFloat());
});
QObject::connect(slider_1st, &RangeSlider::rangeChanged, [&](float low,float high) {
ui->lineEdit_1st_upper->setText(QString::number(high));
});
QObject::connect(slider_2nd, &RangeSlider::rangeChanged, [&](float low, float high) {
ui->lineEdit_2nd_upper->setText(QString::number(high));
ui->lineEdit_2nd_lower->setText(QString::number(low));
});
QObject::connect(ui->lineEdit_2nd_upper, &QLineEdit::editingFinished, [&]() {
slider_2nd->setUpperValue(ui->lineEdit_2nd_upper->text().toFloat());
});
QObject::connect(ui->lineEdit_2nd_lower, &QLineEdit::editingFinished, [&]() {
slider_2nd->setLowerValue(ui->lineEdit_2nd_lower->text().toFloat());
});
QObject::connect(slider_3rd, &RangeSlider::rangeChanged, [&](float low, float high) {
ui->lineEdit_3rd_upper->setText(QString::number(high));
ui->lineEdit_3rd_lower->setText(QString::number(low));
});
QObject::connect(ui->lineEdit_3rd_upper, &QLineEdit::editingFinished, [&]() {
slider_2nd->setUpperValue(ui->lineEdit_3rd_upper->text().toFloat());
});
QObject::connect(ui->lineEdit_3rd_lower, &QLineEdit::editingFinished, [&]() {
slider_2nd->setLowerValue(ui->lineEdit_3rd_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()
{
std::shared_ptr<CardBase> base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no);
std::shared_ptr<VibrationData> setpoint_data = std::dynamic_pointer_cast<VibrationData>(base_ptr);
if(setpoint_data->base_config_[current_index].channel_type == kVibPressurePulsation){
setpoint_data->alert_danger_press[current_index].low_upper = ui->lineEdit_1st_upper->text().toFloat();
setpoint_data->alert_danger_press[current_index].low_enable = ui->checkBox_1st->checkState();
setpoint_data->alert_danger_press[current_index].mid1_upper = ui->lineEdit_2nd_upper->text().toFloat();
setpoint_data->alert_danger_press[current_index].mid1_enable = ui->checkBox_2nd->checkState();
setpoint_data->alert_danger_press[current_index].mid2_upper = ui->lineEdit_3rd_upper->text().toFloat();
setpoint_data->alert_danger_press[current_index].mid2_enable = ui->checkBox_3rd->checkState();
setpoint_data->alert_danger_press[current_index].danger_param = ui->comboBox_danger->currentIndex();
setpoint_data->alert_danger_press[current_index].danger_upper = ui->lineEdit_danger_upper->text().toFloat();
setpoint_data->alert_danger_press[current_index].danger_enable = ui->checkBox_danger->checkState();
}else{
setpoint_data->alert_danger[current_index].direct_upper = ui->lineEdit_1st_upper->text().toFloat();
setpoint_data->alert_danger[current_index].direct_enable = ui->checkBox_1st->checkState();
setpoint_data->alert_danger[current_index].x1_ampl_upper = ui->lineEdit_2nd_upper->text().toFloat();
setpoint_data->alert_danger[current_index].x1_ampl_lower = ui->lineEdit_2nd_lower->text().toFloat();
setpoint_data->alert_danger[current_index].x1_ampl_enable = ui->checkBox_2nd->checkState();
setpoint_data->alert_danger[current_index].x2_ampl_upper = ui->lineEdit_3rd_upper->text().toFloat();
setpoint_data->alert_danger[current_index].x2_ampl_lower = ui->lineEdit_3rd_lower->text().toFloat();
setpoint_data->alert_danger[current_index].x2_ampl_enable = ui->checkBox_3rd->checkState();
setpoint_data->alert_danger[current_index].danger_param = ui->comboBox_danger->currentIndex();
setpoint_data->alert_danger[current_index].danger_upper = ui->lineEdit_danger_upper->text().toFloat();
setpoint_data->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){
std::shared_ptr<CardBase> base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no);
std::shared_ptr<VibrationData> setpoint_data = std::dynamic_pointer_cast<VibrationData>(base_ptr);
if(setpoint_data->base_config_[current_index].channel_type == kVibPressurePulsation){
setpoint_data->alert_danger_press[current_index].low_upper = ui->lineEdit_1st_upper->text().toFloat();
setpoint_data->alert_danger_press[current_index].low_enable = ui->checkBox_1st->checkState();
setpoint_data->alert_danger_press[current_index].mid1_upper = ui->lineEdit_2nd_upper->text().toFloat();
setpoint_data->alert_danger_press[current_index].mid1_enable = ui->checkBox_2nd->checkState();
setpoint_data->alert_danger_press[current_index].mid2_upper = ui->lineEdit_3rd_upper->text().toFloat();
setpoint_data->alert_danger_press[current_index].mid2_enable = ui->checkBox_3rd->checkState();
setpoint_data->alert_danger_press[current_index].danger_param = ui->comboBox_danger->currentIndex();
setpoint_data->alert_danger_press[current_index].danger_upper = ui->lineEdit_danger_upper->text().toFloat();
setpoint_data->alert_danger_press[current_index].danger_enable = ui->checkBox_danger->checkState();
}else{
setpoint_data->alert_danger[current_index].direct_upper = ui->lineEdit_1st_upper->text().toFloat();
setpoint_data->alert_danger[current_index].direct_enable = ui->checkBox_1st->checkState();
setpoint_data->alert_danger[current_index].x1_ampl_upper = ui->lineEdit_2nd_upper->text().toFloat();
setpoint_data->alert_danger[current_index].x1_ampl_lower = ui->lineEdit_2nd_lower->text().toFloat();
setpoint_data->alert_danger[current_index].x1_ampl_enable = ui->checkBox_2nd->checkState();
setpoint_data->alert_danger[current_index].x2_ampl_upper = ui->lineEdit_3rd_upper->text().toFloat();
setpoint_data->alert_danger[current_index].x2_ampl_lower = ui->lineEdit_3rd_lower->text().toFloat();
setpoint_data->alert_danger[current_index].x2_ampl_enable = ui->checkBox_3rd->checkState();
setpoint_data->alert_danger[current_index].danger_param = ui->comboBox_danger->currentIndex();
setpoint_data->alert_danger[current_index].danger_upper = ui->lineEdit_danger_upper->text().toFloat();
setpoint_data->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<CardBase> base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no);
std::shared_ptr<VibrationData> setpoint_data = std::dynamic_pointer_cast<VibrationData>(base_ptr);
std::vector<std::shared_ptr<VariableBase>> variable_ = setpoint_data->variables_;
if(variable_.size() <= 0 )
{
QMessageBox::information(this, QStringLiteral("提示"), "请先配置完通道参数!");
return;
}
if(!variable_[chan]->x1_.checked){
ui->checkBox_1st->setEnabled(false);
ui->lineEdit_2nd_lower->setEnabled(false);
ui->lineEdit_2nd_upper->setEnabled(false);
}
if(!variable_[chan]->x2_.checked){
ui->checkBox_2nd->setEnabled(false);
ui->lineEdit_3rd_upper->setEnabled(false);
ui->lineEdit_3rd_lower->setEnabled(false);
}
if(setpoint_data->base_config_[chan].channel_type == kVibRadial){
EnableNormal();
ShowSlider();
if(variable_[chan]->direct_.full_scale_range == 0){
slider_1st->setRange(0,100);
slider_danger->setRange(0,100);
}else if(variable_[chan]->direct_.full_scale_range == 1){
slider_1st->setRange(0,150);
slider_danger->setRange(0,150);
}else if(variable_[chan]->direct_.full_scale_range == 2){
slider_1st->setRange(0,200);
slider_danger->setRange(0,200);
}else if(variable_[chan]->direct_.full_scale_range == 3){
slider_1st->setRange(0,400);
slider_danger->setRange(0,400);
}else if(variable_[chan]->direct_.full_scale_range == 4){
slider_1st->setRange(0,500);
slider_danger->setRange(0,500);
}
ui->label_unit_1st->setText("um");
ui->label_danger->setText("um");
}
if(setpoint_data->base_config_[chan].channel_type == kVibThrust){
EnableNormal();
ui->label_2nd->hide();
ui->label_unit_2nd->hide();
ui->lineEdit_2nd_upper->hide();
ui->widget_1x_ampl->hide();
ui->lineEdit_2nd_lower->hide();
ui->checkBox_2nd->hide();
ui->label_3rd->hide();
ui->label_unit_3rd->hide();
ui->lineEdit_3rd_upper->hide();
ui->widget_2x_ampl->hide();
ui->lineEdit_3rd_lower->hide();
ui->checkBox_3rd->hide();
ui->label_unit_1st->setText("mil");
ui->label_danger->setText("mil");
if(variable_[chan]->direct_.full_scale_range == 0){
slider_1st->setRange(-25,25);
slider_danger->setRange(-25,25);
}else if(variable_[chan]->direct_.full_scale_range == 1){
slider_1st->setRange(-30,30);
slider_danger->setRange(-30,30);
}else if(variable_[chan]->direct_.full_scale_range == 2){
slider_1st->setRange(-40,40);
slider_danger->setRange(-40,40);
}else if(variable_[chan]->direct_.full_scale_range == 3){
ui->label_unit_1st->setText("mm");
ui->label_danger->setText("mm");
slider_1st->setRange(-0.5,0.5);
slider_danger->setRange(-0.5,0.5);
}else if(variable_[chan]->direct_.full_scale_range == 4){
ui->label_unit_1st->setText("mm");
ui->label_danger->setText("mm");
slider_1st->setRange(-1,1);
slider_danger->setRange(-1,1);
}
}
if(setpoint_data->base_config_[chan].channel_type == kVibAcc){
EnableNormal();
ShowSlider();
std::shared_ptr<VariableBase> base_channel_ptr = setpoint_data->GetChannelPtr(chan + 1);
std::shared_ptr<AccVelVariable> av_ptr = std::dynamic_pointer_cast<AccVelVariable>(base_channel_ptr);
if(variable_[chan]->direct_.full_scale_range == 0){
slider_1st->setRange(0,20);
slider_danger->setRange(0,20);
}else if(variable_[chan]->direct_.full_scale_range == 1){
slider_1st->setRange(0,50);
slider_danger->setRange(0,50);
}else if(variable_[chan]->direct_.full_scale_range == 2){
slider_1st->setRange(0,100);
slider_danger->setRange(0,100);
}else if(variable_[chan]->direct_.full_scale_range == 3){
slider_1st->setRange(0,200);
slider_danger->setRange(0,200);
}else if(variable_[chan]->direct_.full_scale_range == 4){
slider_1st->setRange(0,250);
slider_danger->setRange(0,250);
}else if(variable_[chan]->direct_.full_scale_range == 5){
slider_1st->setRange(0,400);
slider_danger->setRange(0,400);
}
ui->label_unit_1st->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_1st->setRange(0,20);
slider_danger->setRange(0,20);
}else if(variable_[chan]->direct_.full_scale_range == 1){
slider_1st->setRange(0,50);
slider_danger->setRange(0,50);
}else if(variable_[chan]->direct_.full_scale_range == 2){
slider_1st->setRange(0,100);
slider_danger->setRange(0,100);
}else if(variable_[chan]->direct_.full_scale_range == 3){
slider_1st->setRange(0,200);
slider_danger->setRange(0,200);
}
ui->label_unit_1st->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_1st->setRange(0,25);
slider_danger->setRange(0,25);
}else if(variable_[chan]->direct_.full_scale_range == 1){
slider_1st->setRange(0,50);
slider_danger->setRange(0,50);
}else if(variable_[chan]->direct_.full_scale_range == 2){
slider_1st->setRange(0,100);
slider_danger->setRange(0,100);
}
ui->label_unit_1st->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_1st->setRange(0,25);
slider_danger->setRange(0,25);
}else if(variable_[chan]->direct_.full_scale_range == 1){
slider_1st->setRange(0,50);
slider_danger->setRange(0,50);
}
ui->label_unit_1st->setText("mm/s rms");
ui->label_danger->setText("mm/s rms");
}
}
if(setpoint_data->base_config_[chan].channel_type == kVibVelocity){
EnableNormal();
ShowSlider();
std::shared_ptr<VariableBase> base_channel_ptr = setpoint_data->GetChannelPtr(chan + 1);
std::shared_ptr<AccVelVariable> av_ptr = std::dynamic_pointer_cast<AccVelVariable>(base_channel_ptr);
if(variable_[chan]->direct_.full_scale_range == 0){
slider_1st->setRange(0,10);
slider_danger->setRange(0,10);
}else if(variable_[chan]->direct_.full_scale_range == 1){
slider_1st->setRange(0,20);
slider_danger->setRange(0,20);
}else if(variable_[chan]->direct_.full_scale_range == 2){
slider_1st->setRange(0,50);
slider_danger->setRange(0,50);
}
ui->label_unit_1st->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_1st->setRange(0,10);
slider_danger->setRange(0,10);
}else if(variable_[chan]->direct_.full_scale_range == 1){
slider_1st->setRange(0,20);
slider_danger->setRange(0,20);
}else if(variable_[chan]->direct_.full_scale_range == 2){
slider_1st->setRange(0,50);
slider_danger->setRange(0,50);
}
ui->label_unit_1st->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_1st->setRange(0,100);
slider_danger->setRange(0,100);
}else if(variable_[chan]->direct_.full_scale_range == 1){
slider_1st->setRange(0,200);
slider_danger->setRange(0,200);
}else if(variable_[chan]->direct_.full_scale_range == 2){
slider_1st->setRange(0,500);
slider_danger->setRange(0,500);
}
ui->label_unit_1st->setText("um pp");
ui->label_danger->setText("um pp");
}
}
if(setpoint_data->base_config_[chan].channel_type == kVibPressurePulsation){
ShowSlider();
ui->label_1st->setText("低频段");
ui->label_2nd->setText("中1频段");
ui->label_3rd->setText("中2频段");
ui->comboBox_danger->clear();
ui->comboBox_danger->addItem("全频段");
ui->checkBox_1st->setEnabled(true);
ui->checkBox_2nd->setEnabled(true);
ui->checkBox_3rd->setEnabled(true);
ui->lineEdit_2nd_lower->hide();
ui->lineEdit_2nd_upper->setEnabled(true);
ui->lineEdit_3rd_lower->hide();
ui->lineEdit_3rd_upper->setEnabled(true);
ui->label_unit_1st->setText("kPa");
ui->label_unit_2nd->setText("kPa");
ui->label_unit_3rd->setText("kPa");
ui->label_danger->setText("kPa");
slider_1st->setRange(0,10);
slider_2nd->setRange(0,10);
slider_3rd->setRange(0,10);
slider_danger->setRange(0,40);
ui->lineEdit_1st_upper->setText(QString::number(setpoint_data->alert_danger_press[chan].low_upper));
ui->checkBox_1st->setChecked(setpoint_data->alert_danger_press[chan].low_enable);
if(setpoint_data->alert_danger_press[chan].low_upper > 0){
slider_1st->m_upper = setpoint_data->alert_danger_press[chan].low_upper;
slider_1st->m_lower = 0;
}
ui->lineEdit_2nd_upper->setText(QString::number(setpoint_data->alert_danger_press[chan].mid1_upper));
ui->checkBox_2nd->setChecked(setpoint_data->alert_danger_press[chan].mid1_enable);
if(setpoint_data->alert_danger_press[chan].mid1_upper > 0){
slider_2nd->m_upper = setpoint_data->alert_danger_press[chan].mid1_upper;
slider_2nd->m_lower = 0;
}
ui->lineEdit_3rd_upper->setText(QString::number(setpoint_data->alert_danger_press[chan].mid2_upper));
ui->checkBox_3rd->setChecked(setpoint_data->alert_danger_press[chan].mid2_enable);
if(setpoint_data->alert_danger_press[chan].mid2_upper > 0){
slider_3rd->m_upper = setpoint_data->alert_danger_press[chan].mid2_upper;
slider_3rd->m_lower = 0;
}
ui->lineEdit_danger_upper->setText(QString::number(setpoint_data->alert_danger_press[chan].danger_upper));
ui->checkBox_danger->setChecked(setpoint_data->alert_danger_press[chan].danger_enable);
if(setpoint_data->alert_danger_press[chan].danger_upper > 0){
slider_danger->m_upper = setpoint_data->alert_danger_press[chan].danger_upper;
slider_danger->m_lower = 0;
}
}else{
ui->lineEdit_1st_upper->setText(QString::number(setpoint_data->alert_danger[chan].direct_upper));
ui->checkBox_1st->setChecked(setpoint_data->alert_danger[chan].direct_enable);
if(setpoint_data->alert_danger[chan].direct_upper > 0){
slider_1st->m_upper = setpoint_data->alert_danger[chan].direct_upper;
slider_1st->m_lower = 0;
}
ui->lineEdit_2nd_upper->setText(QString::number(setpoint_data->alert_danger[chan].x1_ampl_upper));
ui->lineEdit_2nd_lower->setText(QString::number(setpoint_data->alert_danger[chan].x1_ampl_lower));
ui->checkBox_2nd->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_2nd->m_upper = setpoint_data->alert_danger[chan].x1_ampl_upper;
slider_2nd->m_lower = setpoint_data->alert_danger[chan].x1_ampl_lower;
}
ui->lineEdit_3rd_upper->setText(QString::number(setpoint_data->alert_danger[chan].x2_ampl_upper));
ui->lineEdit_3rd_lower->setText(QString::number(setpoint_data->alert_danger[chan].x2_ampl_lower));
ui->checkBox_3rd->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_3rd->m_upper = setpoint_data->alert_danger[chan].x2_ampl_upper;
slider_3rd->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;
}
}
}
void Setpoint::EnableNormal(){
ui->label_1st->setText("直接值");
ui->label_2nd->setText("1倍频幅值");
ui->label_3rd->setText("2倍频幅值");
ui->comboBox_danger->clear();
QStringList items = {"直接值", "1倍频幅值", "2倍频幅值"};
ui->comboBox_danger->addItems(items);
ui->checkBox_2nd->setChecked(false);
ui->checkBox_3rd->setChecked(false);
ui->label_unit_2nd->setText("- -");
ui->label_unit_3rd->setText("- -");
}
void Setpoint::ShowSlider(){
ui->label_2nd->show();
ui->label_unit_2nd->show();
ui->lineEdit_2nd_upper->show();
ui->widget_1x_ampl->show();
ui->lineEdit_2nd_lower->show();
ui->checkBox_1st->show();
ui->label_3rd->show();
ui->label_unit_3rd->show();
ui->lineEdit_3rd_upper->show();
ui->widget_2x_ampl->show();
ui->lineEdit_3rd_lower->show();
ui->checkBox_2nd->show();
}

View File

@ -1,45 +0,0 @@
#ifndef SETPOINT_H
#define SETPOINT_H
#include <QWidget>
#include "data_config.h"
#include "rangeslider.h"
#include "vibrationdata.h"
namespace Ui {
class Setpoint;
}
class Setpoint : public QWidget
{
Q_OBJECT
public:
explicit Setpoint(int slot_no_,int cardtype,QWidget *parent = nullptr);
~Setpoint();
int slot_no;
CardType car_type;
private slots:
void on_pushButton_confirm_clicked();
void on_pushButton_cancel_clicked();
void on_pushButton_set_default_clicked();
void onComboBoxIndexChanged(int index);
private:
Ui::Setpoint *ui;
RangeSlider *slider_1st;
RangeSlider *slider_2nd;
RangeSlider *slider_3rd;
RangeSlider *slider_danger;
int current_index;
void Init();
void update();
void EnbalePressurePulsation();
void EnableNormal();
void ShowSlider();
};
#endif // SETPOINT_H

View File

@ -1,620 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Setpoint</class>
<widget class="QWidget" name="Setpoint">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>734</width>
<height>528</height>
</rect>
</property>
<property name="windowTitle">
<string>触发配置</string>
</property>
<widget class="QGroupBox" name="groupBox_2">
<property name="geometry">
<rect>
<x>540</x>
<y>10</y>
<width>161</width>
<height>451</height>
</rect>
</property>
<property name="title">
<string>危险 / 警报 2</string>
</property>
<widget class="QComboBox" name="comboBox_danger">
<property name="geometry">
<rect>
<x>20</x>
<y>30</y>
<width>69</width>
<height>22</height>
</rect>
</property>
<item>
<property name="text">
<string>直接值</string>
</property>
</item>
<item>
<property name="text">
<string>1倍频幅值</string>
</property>
</item>
<item>
<property name="text">
<string>2倍频幅值</string>
</property>
</item>
</widget>
<widget class="QLabel" name="label_danger">
<property name="geometry">
<rect>
<x>30</x>
<y>60</y>
<width>50</width>
<height>20</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>- -</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QCheckBox" name="checkBox_danger">
<property name="geometry">
<rect>
<x>30</x>
<y>415</y>
<width>47</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>启用</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_danger_upper">
<property name="geometry">
<rect>
<x>30</x>
<y>90</y>
<width>50</width>
<height>20</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
</widget>
<widget class="QWidget" name="widget_danger" native="true">
<property name="geometry">
<rect>
<x>10</x>
<y>116</y>
<width>100</width>
<height>260</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>260</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>260</height>
</size>
</property>
</widget>
</widget>
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>20</x>
<y>480</y>
<width>666</width>
<height>37</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_20">
<property name="text">
<string>槽位号</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_slot">
<property name="text">
<string>slot</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBox_chan">
<item>
<property name="text">
<string>通道 1</string>
</property>
</item>
<item>
<property name="text">
<string>通道 2</string>
</property>
</item>
<item>
<property name="text">
<string>通道 3</string>
</property>
</item>
<item>
<property name="text">
<string>通道 4</string>
</property>
</item>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_confirm">
<property name="minimumSize">
<size>
<width>100</width>
<height>35</height>
</size>
</property>
<property name="text">
<string>确定</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_set_default">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>35</height>
</size>
</property>
<property name="text">
<string>设置为默认值</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_cancel">
<property name="minimumSize">
<size>
<width>100</width>
<height>35</height>
</size>
</property>
<property name="text">
<string>取消</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_print">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>35</height>
</size>
</property>
<property name="text">
<string>打印</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_help">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>35</height>
</size>
</property>
<property name="text">
<string>帮助</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QGroupBox" name="groupBox">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>521</width>
<height>451</height>
</rect>
</property>
<property name="title">
<string>告警 / 警报 1</string>
</property>
<widget class="QWidget" name="widget_1x_ampl" native="true">
<property name="geometry">
<rect>
<x>100</x>
<y>110</y>
<width>100</width>
<height>260</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>260</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>260</height>
</size>
</property>
</widget>
<widget class="QLabel" name="label_2nd">
<property name="geometry">
<rect>
<x>121</x>
<y>41</y>
<width>54</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>1倍频幅值</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_2nd_upper">
<property name="geometry">
<rect>
<x>121</x>
<y>77</y>
<width>50</width>
<height>20</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
</widget>
<widget class="QLabel" name="label_unit_2nd">
<property name="geometry">
<rect>
<x>130</x>
<y>59</y>
<width>50</width>
<height>16</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>- -</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_2nd_lower">
<property name="geometry">
<rect>
<x>120</x>
<y>380</y>
<width>50</width>
<height>20</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
</widget>
<widget class="QCheckBox" name="checkBox_2nd">
<property name="geometry">
<rect>
<x>121</x>
<y>420</y>
<width>47</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>启用</string>
</property>
</widget>
<widget class="QCheckBox" name="checkBox_3rd">
<property name="geometry">
<rect>
<x>221</x>
<y>420</y>
<width>47</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>启用</string>
</property>
</widget>
<widget class="QLabel" name="label_3rd">
<property name="geometry">
<rect>
<x>221</x>
<y>41</y>
<width>54</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>2倍频幅值</string>
</property>
</widget>
<widget class="QLabel" name="label_unit_3rd">
<property name="geometry">
<rect>
<x>230</x>
<y>59</y>
<width>50</width>
<height>16</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>- -</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_3rd_upper">
<property name="geometry">
<rect>
<x>221</x>
<y>77</y>
<width>50</width>
<height>20</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
</widget>
<widget class="QWidget" name="widget_2x_ampl" native="true">
<property name="geometry">
<rect>
<x>200</x>
<y>110</y>
<width>100</width>
<height>260</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>260</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>260</height>
</size>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_3rd_lower">
<property name="geometry">
<rect>
<x>220</x>
<y>380</y>
<width>50</width>
<height>20</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_1st_upper">
<property name="geometry">
<rect>
<x>30</x>
<y>80</y>
<width>50</width>
<height>20</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QWidget" name="widget_direct" native="true">
<property name="geometry">
<rect>
<x>10</x>
<y>107</y>
<width>100</width>
<height>260</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>260</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>260</height>
</size>
</property>
</widget>
<widget class="QLabel" name="label_1st">
<property name="geometry">
<rect>
<x>40</x>
<y>40</y>
<width>36</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>直接值</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="label_unit_1st">
<property name="geometry">
<rect>
<x>25</x>
<y>60</y>
<width>50</width>
<height>20</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>- -</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QCheckBox" name="checkBox_1st">
<property name="geometry">
<rect>
<x>30</x>
<y>420</y>
<width>65</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>启用</string>
</property>
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>