diff --git a/cardbase.h b/cardbase.h index 02dd128..00d6e46 100644 --- a/cardbase.h +++ b/cardbase.h @@ -14,6 +14,7 @@ class CardBase { int version_; int slot_; // 从1~15 CardType card_type_; + int relative_number; }; class VariableBase { diff --git a/config_mgr.cpp b/config_mgr.cpp index 536a988..c6069d1 100644 --- a/config_mgr.cpp +++ b/config_mgr.cpp @@ -48,14 +48,15 @@ void ConfigMgr::Save(QString & file_path) { card_type_[i] != kCardRelaySingleNOK && card_type_[i] != kCardRelayTMRBackup) { QJsonObject dc_output; + std::shared_ptr base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot); + if (base_ptr == nullptr) { + continue; + } for (int cid = 0; cid < CHANNEL_COUNT; ++cid) { QJsonObject channel_item; if (card_type_[i] == kCardVibSingle || card_type_[i] == kCardVibTMRPrimary) { - std::shared_ptr base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot); - if (base_ptr == nullptr) { - continue; - } + std::shared_ptr ptr = std::dynamic_pointer_cast(base_ptr); if( ptr->base_config_[cid].channel_type == -1){ continue; @@ -566,6 +567,7 @@ void ConfigMgr::Save(QString & file_path) { slot_item["dc_output"] = dc_output; } slot_item["version"] = 1; + slot_item["relative_number"] = base_ptr->relative_number; }else{ for(int ch = 0;ch < RELAY_COUNT;++ch){ QJsonObject channel_item; @@ -661,6 +663,7 @@ void ConfigMgr::Load(QString filename) { vib_data->version_ = temp_obj["version"].toInt(); vib_data->card_type_ = static_cast(card_type_[i]); vib_data->slot_ = slot; + vib_data->relative_number = temp_obj["relative_number"].toInt(); // dc_output QJsonObject dc_output_obj = temp_obj["dc_output"].toObject(); if(!dc_output_obj.isEmpty()){ @@ -1036,6 +1039,7 @@ void ConfigMgr::Load(QString filename) { speed_data->slot_ = slot; speed_data->card_type_ = static_cast(card_type_[i]); speed_data->version_ = temp_obj["version"].toInt(); + speed_data->relative_number = temp_obj["relative_number"].toInt(); for (int j = 0; j < CHANNEL_COUNT_SPEED; ++j) { channel = temp_obj[QString::number(j + 1)].toObject(); speed_data->variables_[j].active = channel["active"].toBool(); @@ -1054,8 +1058,8 @@ void ConfigMgr::Load(QString filename) { speed_data->variables_[j].default_speed = channel["default_speed"].toInt(); speed_data->variables_[j].automatic_threshold = channel["automatic_threshold"].toBool(); speed_data->variables_[j].point_name = channel["point_name"].toString(); - if(channel.contains("alarmn")){ - QJsonObject alarm = channel["alarm"].toObject(); + if(channel.contains("alarm")){ + QJsonObject alarm = channel["alarm"].toObject(); speed_data->danger_high[j].level = alarm["danger_high_level"].toDouble(); speed_data->danger_high[j].hysteresis = alarm["danger_high_hysteresis"].toDouble(); speed_data->danger_high[j].delay = alarm["danger_high_delay"].toInt(); diff --git a/copy_channel.cpp b/copy_channel.cpp index e9b74ec..d44431a 100644 --- a/copy_channel.cpp +++ b/copy_channel.cpp @@ -3,6 +3,7 @@ #include "data_config.h" #include "config_mgr.h" #include "vibrationdata.h" +#include "tachometer_data.h" #include CopyChannel::CopyChannel(int slot_no_,QWidget *parent) : @@ -96,44 +97,59 @@ void CopyChannel::on_pushButton_confirm_clicked() qDebug() << "base_ptr"; return; } - - std::shared_ptr vib_data = std::dynamic_pointer_cast(base_ptr); - for (int i = 0; i < 4; i++) { - if(i != var && check_ch[i]->isChecked()){ - QString point_name = vib_data->base_config_[i].point_name; - vib_data->base_config_[i] = vib_data->base_config_[var]; - vib_data->base_config_[i].point_name = point_name; - vib_data->dc_output[i] = vib_data->dc_output[var]; - auto variable_base_old = vib_data->GetChannelPtr(var + 1); - if(vib_data->base_config_[var].channel_type == kVibRadial){ - std::shared_ptr variable = std::dynamic_pointer_cast(variable_base_old); - std::shared_ptr variable_new = std::make_shared(); - *variable_new = *variable; - variable_new->id_ = i + 1; - vib_data->RemoveChannel(i + 1); - vib_data->InsertChannelPtr(variable_new); - }else if(vib_data->base_config_[var].channel_type == kVibAcc || - vib_data->base_config_[var].channel_type == kVibVelocity){ - std::shared_ptr variable = std::dynamic_pointer_cast(variable_base_old); - std::shared_ptr variable_new = std::make_shared(); - *variable_new = *variable; - variable_new->id_ = i + 1; - vib_data->RemoveChannel(i + 1); - vib_data->InsertChannelPtr(variable_new); - }else if(vib_data->base_config_[var].channel_type == kVibThrust){ - std::shared_ptr variable = std::dynamic_pointer_cast(variable_base_old); - std::shared_ptr variable_new = std::make_shared(); - *variable_new = *variable; - variable_new->id_ = i + 1; - vib_data->RemoveChannel(i + 1); - vib_data->InsertChannelPtr(variable_new); - }else if(vib_data->base_config_[var].channel_type == kVibPressurePulsation){ - std::shared_ptr variable = std::dynamic_pointer_cast(variable_base_old); - std::shared_ptr variable_new = std::make_shared(); - *variable_new = *variable; - variable_new->id_ = i + 1; - vib_data->RemoveChannel(i + 1); - vib_data->InsertChannelPtr(variable_new); + if(base_ptr->card_type_ == kCardVibSingle){ + std::shared_ptr vib_data = std::dynamic_pointer_cast(base_ptr); + for (int i = 0; i < 4; i++) { + if(i != var && check_ch[i]->isChecked()){ + QString point_name = vib_data->base_config_[i].point_name; + vib_data->base_config_[i] = vib_data->base_config_[var]; + vib_data->base_config_[i].point_name = point_name; + vib_data->dc_output[i] = vib_data->dc_output[var]; + auto variable_base_old = vib_data->GetChannelPtr(var + 1); + if(vib_data->base_config_[var].channel_type == kVibRadial){ + std::shared_ptr variable = std::dynamic_pointer_cast(variable_base_old); + std::shared_ptr variable_new = std::make_shared(); + *variable_new = *variable; + variable_new->id_ = i + 1; + vib_data->RemoveChannel(i + 1); + vib_data->InsertChannelPtr(variable_new); + }else if(vib_data->base_config_[var].channel_type == kVibAcc || + vib_data->base_config_[var].channel_type == kVibVelocity){ + std::shared_ptr variable = std::dynamic_pointer_cast(variable_base_old); + std::shared_ptr variable_new = std::make_shared(); + *variable_new = *variable; + variable_new->id_ = i + 1; + vib_data->RemoveChannel(i + 1); + vib_data->InsertChannelPtr(variable_new); + }else if(vib_data->base_config_[var].channel_type == kVibThrust){ + std::shared_ptr variable = std::dynamic_pointer_cast(variable_base_old); + std::shared_ptr variable_new = std::make_shared(); + *variable_new = *variable; + variable_new->id_ = i + 1; + vib_data->RemoveChannel(i + 1); + vib_data->InsertChannelPtr(variable_new); + }else if(vib_data->base_config_[var].channel_type == kVibPressurePulsation){ + std::shared_ptr variable = std::dynamic_pointer_cast(variable_base_old); + std::shared_ptr variable_new = std::make_shared(); + *variable_new = *variable; + variable_new->id_ = i + 1; + vib_data->RemoveChannel(i + 1); + vib_data->InsertChannelPtr(variable_new); + } + } + } + }else if(base_ptr->card_type_ == kCardSpeedSingle){ + std::shared_ptr tachometer_data = std::dynamic_pointer_cast(base_ptr); + for (int i = 0; i < 4; i++) { + if(i != var && check_ch[i]->isChecked()){ + QString point_name = tachometer_data->variables_[i].point_name; + int id = tachometer_data->variables_[i].id; + tachometer_data->variables_[i] = tachometer_data->variables_[var]; + tachometer_data->variables_[i].point_name = point_name; + tachometer_data->variables_[i].id = id; + auto variable_base_old = tachometer_data->variables_[i]; + tachometer_data->danger_high[i] = tachometer_data->danger_high[var]; + tachometer_data->alert_high[i] = tachometer_data->alert_high[var]; } } } diff --git a/data_config.h b/data_config.h index 76309ec..81e72b7 100644 --- a/data_config.h +++ b/data_config.h @@ -220,7 +220,8 @@ enum CMTCommand { kCleanSubCardLatch = 30, // 清理子板特定通道的Latch状态 kConfigMQTTBrokerInfo = 31, // 配置与获取MQTT broker信息 kConfigDeviceID = 32, // 配置设备编号,编号范围为1~99 - kGetVoltageRangeValue = 33 // 获取子板动态电压范围 + kGetVoltageRangeValue = 33, // 获取子板动态电压范围 + kGetVibAuxProcessVersion = 34 }; enum RS485Baudrate { kBaudrate2400 = 0, @@ -293,12 +294,19 @@ typedef struct{ int rectifier_function; }General; -typedef struct{ +typedef struct AlarmDangerHigh_{ float level; float hysteresis; float delay; bool enable; bool latch; + AlarmDangerHigh_(){ + level = 0; + hysteresis = 0; + delay = 0; + enable = false; + latch = false; + } }AlarmDangerHigh,AlarmAlertHigh,AlarmDangerLow,AlarmAlertLow ; typedef struct FrequencybandOutput_{ @@ -828,6 +836,21 @@ typedef struct { uint8_t device_id; // 设备编号 } DeviceIDConfigRsp; +// 获取振动板辅助进程版本号 +typedef struct { + uint8_t head[3]; // 固定值:0xAA55AA + uint8_t cmd; + uint8_t version; // 版本号,默认为1 + uint8_t card_id; +} GetAuxProcessVersionReq; + +typedef struct { + uint8_t head[3]; // 固定值:0xAA55AA + uint8_t cmd; + uint8_t version; // 版本号,默认为1 + uint8_t aux_version; // 辅助进程版本号 +} GetAuxProcessVersionRsp; + struct BaseHeader { uint8_t head[3]; // 固定 0xAA 0x55 0xAA uint8_t cmd; diff --git a/mainwindow.cpp b/mainwindow.cpp index c6b99bd..361710d 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -104,6 +104,7 @@ MainWindow::MainWindow(QWidget *parent) QObject::connect(ui->action_deviveID, &QAction::triggered, this, &MainWindow::onConfigDeviceID); QObject::connect(ui->action_get_deviceID, &QAction::triggered, this, &MainWindow::onGetDeviceID); + QSettings settingsread(QCoreApplication::applicationDirPath() + "\\config\\config.ini", QSettings::IniFormat); g_strServerIp = settingsread.value("Server/IP").toString(); connectServer(); @@ -210,6 +211,7 @@ void MainWindow::createMenu(const QString &rootTitle, QPushButton *parent) { QAction *config_sub_card = mainMenu->addAction("更新配置"); QAction *get_sub_log = mainMenu->addAction("获取日志"); QAction *get_sub_card_voltage = mainMenu->addAction("获取电压范围"); + QAction *get_vib_version = mainMenu->addAction("获取振动板卡辅助程序版本"); // 绑定 **鼠标事件过滤器**,确保只响应右键 // 设置右键菜单策略 @@ -236,6 +238,8 @@ void MainWindow::createMenu(const QString &rootTitle, QPushButton *parent) { QObject::connect(config_sub_card, &QAction::triggered, this, &MainWindow::onMenuActionTriggered); QObject::connect(get_sub_log, &QAction::triggered, this, &MainWindow::onMenuActionTriggered); QObject::connect(get_sub_card_voltage, &QAction::triggered, this, &MainWindow::onMenuActionTriggered); + QObject::connect(get_vib_version, &QAction::triggered, this, &MainWindow::onMenuActionTriggered); + } @@ -401,6 +405,10 @@ void MainWindow::onMenuActionTriggered() { GetSubLog(button_id); }else if (action->text() == "获取电压范围") { GetVoltageRangeValue(button_id); + }else if (action->text() == "获取电压范围") { + GetVoltageRangeValue(button_id); + }else if(action->text() == "获取振动板卡辅助程序版本"){ + GetVibVersion(button_id); } break; // 找到按钮后,跳出循环 } @@ -811,6 +819,15 @@ void MainWindow::GetVoltageRangeValue(int slot){ m_tcpClient->waitForRead(); qDebug() << "bytesWritten: " << bytesWritten; } +void MainWindow::GetVibVersion(int slot){ + slot_no = slot; + GetAuxProcessVersionReq get_vib_version_req = { {0xAA, 0x55, 0xAA}, kGetVibAuxProcessVersion, 1,0}; + int length = sizeof(GetAuxProcessVersionReq); + get_vib_version_req.card_id = slot & 0xFF; + qint64 bytesWritten = m_tcpClient->sendData((char*)&get_vib_version_req, length); + m_tcpClient->waitForRead(); + qDebug() << "bytesWritten: " << bytesWritten; +} void MainWindow::readData(const QByteArray &data) { qDebug() << "Received from server:" << data; @@ -919,6 +936,11 @@ void MainWindow::readData(const QByteArray &data) { QString str = QString("设备ID: %1").arg(device_config_rsp.device_id); QMessageBox::information(this, QStringLiteral("提示"), str); } + }else if(cmd == kGetVibAuxProcessVersion){ + GetAuxProcessVersionRsp get_vib_version_rsp; + memcpy(&get_vib_version_rsp, data.data(), sizeof(GetAuxProcessVersionRsp)); + QString str = QString("辅助程序版本: %1").arg(get_vib_version_rsp.aux_version); + QMessageBox::information(this, QStringLiteral("提示"), str); } } @@ -962,6 +984,7 @@ void MainWindow::onGetDeviceID(){ m_tcpClient->waitForRead(); qDebug() << "bytesWritten: " << bytesWritten; } + void MainWindow::onConfigDeviceID(){ QString strTips =QString("请输入0到99之间的数值"); diff --git a/mainwindow.h b/mainwindow.h index 9af83a8..f70902f 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -63,6 +63,7 @@ private: void connectServer(); void UploadConfigFile(uint8_t sub_cmd); void GetVoltageRangeValue(int slot); + void GetVibVersion(int slot); private slots: @@ -82,6 +83,7 @@ private slots: void onConfigDeviceID(); void onGetDeviceID(); + void onMenuActionTriggered(); void on_pushButton_slot_clicked(); void on_pushButton_chan_clicked(); diff --git a/mainwindow.ui b/mainwindow.ui index 8f2ed9a..397220e 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -1156,6 +1156,11 @@ 获取设备ID + + + 获取振动板卡辅助程序版本 + + diff --git a/seismic_monitor.cpp b/seismic_monitor.cpp index 17e93e1..a968eb9 100644 --- a/seismic_monitor.cpp +++ b/seismic_monitor.cpp @@ -33,8 +33,6 @@ Seismic_monitor::Seismic_monitor(int slot,int cardtype, QWidget *parent) : car_type = static_cast(cardtype); QString slot_no_ = QString("%1").arg(slot_no); ui->label_slot_no->setText(slot_no_); - ui->checkBox_standby_1->hide(); - ui->checkBox_standby_2->hide(); Init(); } @@ -115,6 +113,7 @@ void Seismic_monitor::Init() { } } + ui->comboBox_relative_number->setCurrentIndex(base_ptr->relative_number); } void Seismic_monitor::UpdateData(std::shared_ptr vib_data) { @@ -211,7 +210,20 @@ void Seismic_monitor::on_pushButton_confirm_clicked() { QMessageBox::information(this, QStringLiteral("提示"), "传感器灵敏度填写错误!"); return; } - + for (int var = 0; 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_ != kCardVibSingle) + 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_ != kCardSpeedSingle){ + QMessageBox::information(this, QStringLiteral("提示"), "板卡相对编号重复!"); + return; + } + } + } + base_ptr->relative_number = ui->comboBox_relative_number->currentIndex(); std::shared_ptr vib_data = std::dynamic_pointer_cast(base_ptr); UpdateData(vib_data); this->close(); diff --git a/seismic_monitor.ui b/seismic_monitor.ui index a671b65..45b0213 100644 --- a/seismic_monitor.ui +++ b/seismic_monitor.ui @@ -46,7 +46,7 @@ 50 - + @@ -111,6 +111,107 @@ + + + + + + 相对编号: + + + + + + + + 50 + 0 + + + + + 0 + + + + + 1 + + + + + 2 + + + + + 3 + + + + + 4 + + + + + 5 + + + + + 6 + + + + + 7 + + + + + 8 + + + + + 9 + + + + + 10 + + + + + 11 + + + + + 12 + + + + + 13 + + + + + 14 + + + + + 15 + + + + + + diff --git a/tachometer.cpp b/tachometer.cpp index d4e54b6..805aaf7 100644 --- a/tachometer.cpp +++ b/tachometer.cpp @@ -6,10 +6,11 @@ #include #include #include - +#include #include "data_config.h" #include "config_mgr.h" #include "tachometer_data.h" +#include "copy_channel.h" Tachometer::Tachometer(int slot_no_,int cardtype, QWidget *parent) : QDialog(parent) @@ -93,8 +94,6 @@ void Tachometer::UpdateData(std::shared_ptr &speed_data) { speed_data->variables_[i].events_per_revolution = ui->spinBox_events_per_revolution_1->value(); speed_data->variables_[i].record_output = ui->comboBox_record_output_1->currentIndex(); speed_data->variables_[i].two_ma_clamp = ui->checkBox_two_ma_clamp_1->isChecked(); - speed_data->variables_[i].alert_latching = ui->radioButton_alert_latching_1->isChecked(); - speed_data->variables_[i].overspeed_latching = ui->radioButton_overspeed_latching_1->isChecked(); // -alarm speed_data->danger_high[i].level = ui->lineEdit_danger_high_level->text().toDouble(); speed_data->danger_high[i].hysteresis = ui->lineEdit_danger_high_hysteresis->text().toDouble(); @@ -132,8 +131,7 @@ void Tachometer::UpdateData(std::shared_ptr &speed_data) { speed_data->variables_[i].events_per_revolution = ui->spinBox_events_per_revolution_2->value(); speed_data->variables_[i].record_output = ui->comboBox_record_output_2->currentIndex(); speed_data->variables_[i].two_ma_clamp = ui->checkBox_two_ma_clamp_2->isChecked(); - speed_data->variables_[i].alert_latching = ui->radioButton_alert_latching_2->isChecked(); - speed_data->variables_[i].overspeed_latching = ui->radioButton_overspeed_latching_2->isChecked(); + // -alarm speed_data->danger_high[i].level = ui->lineEdit_danger_high_level_2->text().toDouble(); speed_data->danger_high[i].hysteresis = ui->lineEdit_danger_high_hysteresis_2->text().toDouble(); @@ -171,8 +169,7 @@ void Tachometer::UpdateData(std::shared_ptr &speed_data) { speed_data->variables_[i].events_per_revolution = ui->spinBox_events_per_revolution_3->value(); speed_data->variables_[i].record_output = ui->comboBox_record_output_3->currentIndex(); speed_data->variables_[i].two_ma_clamp = ui->checkBox_two_ma_clamp_3->isChecked(); - speed_data->variables_[i].alert_latching = ui->radioButton_alert_latching_3->isChecked(); - speed_data->variables_[i].overspeed_latching = ui->radioButton_overspeed_latching_3->isChecked(); + // -alarm speed_data->danger_high[i].level = ui->lineEdit_danger_high_level_3->text().toDouble(); speed_data->danger_high[i].hysteresis = ui->lineEdit_danger_high_hysteresis_3->text().toDouble(); @@ -210,8 +207,7 @@ void Tachometer::UpdateData(std::shared_ptr &speed_data) { speed_data->variables_[i].events_per_revolution = ui->spinBox_events_per_revolution_4->value(); speed_data->variables_[i].record_output = ui->comboBox_record_output_4->currentIndex(); speed_data->variables_[i].two_ma_clamp = ui->checkBox_two_ma_clamp_4->isChecked(); - speed_data->variables_[i].alert_latching = ui->radioButton_alert_latching_4->isChecked(); - speed_data->variables_[i].overspeed_latching = ui->radioButton_overspeed_latching_4->isChecked(); + // -alarm speed_data->danger_high[i].level = ui->lineEdit_danger_high_level_4->text().toDouble(); speed_data->danger_high[i].hysteresis = ui->lineEdit_danger_high_hysteresis_4->text().toDouble(); @@ -270,16 +266,7 @@ void Tachometer::Init() { ui->spinBox_events_per_revolution_1->setValue(speed_data->variables_[i].events_per_revolution); ui->comboBox_record_output_1->setCurrentIndex(speed_data->variables_[i].record_output); ui->checkBox_two_ma_clamp_1->setChecked(speed_data->variables_[i].two_ma_clamp); - if (speed_data->variables_[i].alert_latching) { - ui->radioButton_alert_latching_1->setCheckable(true); - } else { - ui->radioButton_alert_latching_1->setCheckable(false); - } - if (speed_data->variables_[i].overspeed_latching) { - ui->radioButton_overspeed_latching_1->setCheckable(true); - } else { - ui->radioButton_overspeed_latching_1->setCheckable(false); - } + // -alarm ui->lineEdit_danger_high_level->setText(QString::number(speed_data->danger_high[i].level)); ui->lineEdit_danger_high_hysteresis->setText(QString::number(speed_data->danger_high[i].hysteresis)); @@ -324,16 +311,7 @@ void Tachometer::Init() { ui->spinBox_events_per_revolution_2->setValue(speed_data->variables_[i].events_per_revolution); ui->comboBox_record_output_2->setCurrentIndex(speed_data->variables_[i].record_output); ui->checkBox_two_ma_clamp_2->setChecked(speed_data->variables_[i].two_ma_clamp); - if (speed_data->variables_[i].alert_latching) { - ui->radioButton_alert_latching_2->setCheckable(true); - } else { - ui->radioButton_alert_latching_2->setCheckable(false); - } - if (speed_data->variables_[i].overspeed_latching) { - ui->radioButton_overspeed_latching_2->setCheckable(true); - } else { - ui->radioButton_overspeed_latching_2->setCheckable(false); - } + // -alarm ui->lineEdit_danger_high_level_2->setText(QString::number(speed_data->danger_high[i].level)); ui->lineEdit_danger_high_hysteresis_2->setText(QString::number(speed_data->danger_high[i].hysteresis)); @@ -378,16 +356,7 @@ void Tachometer::Init() { ui->spinBox_events_per_revolution_3->setValue(speed_data->variables_[i].events_per_revolution); ui->comboBox_record_output_3->setCurrentIndex(speed_data->variables_[i].record_output); ui->checkBox_two_ma_clamp_3->setChecked(speed_data->variables_[i].two_ma_clamp); - if (speed_data->variables_[i].alert_latching) { - ui->radioButton_alert_latching_3->setCheckable(true); - } else { - ui->radioButton_alert_latching_3->setCheckable(false); - } - if (speed_data->variables_[i].overspeed_latching) { - ui->radioButton_overspeed_latching_3->setCheckable(true); - } else { - ui->radioButton_overspeed_latching_3->setCheckable(false); - } + // -alarm ui->lineEdit_danger_high_level_3->setText(QString::number(speed_data->danger_high[i].level)); ui->lineEdit_danger_high_hysteresis_3->setText(QString::number(speed_data->danger_high[i].hysteresis)); @@ -432,16 +401,7 @@ void Tachometer::Init() { ui->spinBox_events_per_revolution_4->setValue(speed_data->variables_[i].events_per_revolution); ui->comboBox_record_output_4->setCurrentIndex(speed_data->variables_[i].record_output); ui->checkBox_two_ma_clamp_4->setChecked(speed_data->variables_[i].two_ma_clamp); - if (speed_data->variables_[i].alert_latching) { - ui->radioButton_alert_latching_4->setCheckable(true); - } else { - ui->radioButton_alert_latching_4->setCheckable(false); - } - if (speed_data->variables_[i].overspeed_latching) { - ui->radioButton_overspeed_latching_4->setCheckable(true); - } else { - ui->radioButton_overspeed_latching_4->setCheckable(false); - } + // -alarm ui->lineEdit_danger_high_level_4->setText(QString::number(speed_data->danger_high[i].level)); ui->lineEdit_danger_high_hysteresis_4->setText(QString::number(speed_data->danger_high[i].hysteresis)); @@ -468,6 +428,8 @@ void Tachometer::Init() { // ui->checkBox_alert_low_latch_4->setChecked(speed_data->alert_low[i].latch); } } + ui->comboBox_relative_number->setCurrentIndex(base_ptr->relative_number); + } void Tachometer::on_pushButton_confirm_clicked() { @@ -476,6 +438,20 @@ void Tachometer::on_pushButton_confirm_clicked() { qCritical() << " should not be here"; return; } + for (int var = 0; 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_ != kCardSpeedSingle) + 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_ != kCardVibSingle){ + QMessageBox::information(this, QStringLiteral("提示"), "板卡相对编号重复!"); + return; + } + } + } + base_ptr->relative_number = ui->comboBox_relative_number->currentIndex(); std::shared_ptr speed_data = std::dynamic_pointer_cast(base_ptr); UpdateData(speed_data); this->close(); @@ -490,3 +466,14 @@ void Tachometer::on_radioButton_automatic_threshold_1_clicked() } +void Tachometer::copy_end_slot(){ + Init(); +} +void Tachometer::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(); +} + diff --git a/tachometer.h b/tachometer.h index c084107..d61d374 100644 --- a/tachometer.h +++ b/tachometer.h @@ -26,6 +26,9 @@ class Tachometer : public QDialog { void on_manual_threshold_4_clicked(bool checked); void on_radioButton_automatic_threshold_1_clicked(); + void on_pushButton_copy_channel_clicked(); + void copy_end_slot(); + private: Ui::Tachometer *ui; void UpdateData(std::shared_ptr &speed_data); diff --git a/tachometer.ui b/tachometer.ui index af953d6..cf8c71a 100644 --- a/tachometer.ui +++ b/tachometer.ui @@ -7,7 +7,7 @@ 0 0 835 - 623 + 639 @@ -19,7 +19,7 @@ - + @@ -84,6 +84,107 @@ + + + + + + 相对编号: + + + + + + + + 50 + 0 + + + + + 0 + + + + + 1 + + + + + 2 + + + + + 3 + + + + + 4 + + + + + 5 + + + + + 6 + + + + + 7 + + + + + 8 + + + + + 9 + + + + + 10 + + + + + 11 + + + + + 12 + + + + + 13 + + + + + 14 + + + + + 15 + + + + + + @@ -153,7 +254,7 @@ 通道 1 - + @@ -405,13 +506,13 @@ - + 阈值 - + @@ -584,155 +685,12 @@ - - - - 告警模式 - - - - - - 告警 - - - - - - - - - 100 - 0 - - - - 锁存 - - - buttonGroup_2 - - - - - - - - 100 - 0 - - - - 非锁存 - - - true - - - buttonGroup_2 - - - - - - - - - - - - 超速 - - - - - - - - - 100 - 0 - - - - 锁存 - - - buttonGroup_3 - - - - - - - - 100 - 0 - - - - 非锁存 - - - true - - - buttonGroup_3 - - - - - - - - - - - - - - - - - - - - - 键齿数: - - - - - - - - 50 - 25 - - - - 1 - - - 10000 - - - - - - - 1 - 10000 - - - - - 响应时间(只读) - + @@ -797,571 +755,647 @@ - - - 警报 - - + + + + + 键齿数: + + + + + + + + 50 + 25 + + + + 1 + + + 10000 + + + + + + + 1 - 10000 + + + + + + + + + + + 警报 + + + + - + + + 20 + - - - 20 - - - - - - 0 - 20 - - - - - 16777215 - 20 - - - - 危险 + 高 - - - - - - - - 0 - 20 - - - - - 16777215 - 20 - - - - 警报 + 高 - - - - - - - - 0 - 20 - - - - - 16777215 - 20 - - - - 警报 + 低 - - - - - - - - 0 - 20 - - - - - 16777215 - 20 - - - - 危险 + 低 - - - - - - - - - - - - 16777215 - 20 - - - - 等级 - - - Qt::AlignCenter - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - - - 16777215 - 20 - - - - 回差 - - - Qt::AlignCenter - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - - - 16777215 - 20 - - - - 延时 - - - Qt::AlignCenter - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - - - 16777215 - 20 - - - - Qt::LeftToRight - - - 使能 - - - Qt::AlignCenter - - - - - - - - 0 - 25 - - - - - 16777215 - 25 - - - - Qt::LeftToRight - - - - - - - - - - - 0 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - false - - - - 0 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - false - - - - 0 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - - - - - - 16777215 - 20 - - - - 锁存 - - - Qt::AlignCenter - - - - - - - - 0 - 25 - - - - - - - - - - - - 0 - 25 - - - - - - - - - - - false - - - - 0 - 25 - - - - - - - - - - - false - - - - 0 - 25 - - - - - - - - - - - - - Qt::Horizontal - - + + - 40 + 0 20 - + + + 16777215 + 20 + + + + 危险 + 高 + + + + + + + + 0 + 20 + + + + + 16777215 + 20 + + + + 警报 + 高 + + + + + + + + 0 + 20 + + + + + 16777215 + 20 + + + + 警报 + 低 + + + + + + + + 0 + 20 + + + + + 16777215 + 20 + + + + 危险 + 低 + + + + + + + + + 0 + 30 + + + + + 16777215 + 30 + + + + 等级 +(RPM) + + + Qt::AlignCenter + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 5000 + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + + + 0 + 30 + + + + + 16777215 + 30 + + + + 回差 +(RPM) + + + Qt::AlignCenter + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + + + 0 + 30 + + + + + 16777215 + 30 + + + + 延时 +(S) + + + Qt::AlignCenter + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + + + 16777215 + 20 + + + + Qt::LeftToRight + + + 使能 + + + Qt::AlignCenter + + + + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + Qt::LeftToRight + + + + + + true + + + + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + false + + + + 0 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + false + + + + 0 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + + + + + + 16777215 + 20 + + + + 锁存 + + + Qt::AlignCenter + + + + + + + + 0 + 25 + + + + + + + + + + + + 0 + 25 + + + + + + + + + + + false + + + + 0 + 25 + + + + + + + + + + + false + + + + 0 + 25 + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + - - - + + + @@ -1369,7 +1403,7 @@ 通道 2 - + @@ -1621,7 +1655,7 @@ - + @@ -1794,137 +1828,6 @@ - - - - 告警模式 - - - - - - 告警 - - - - - - - - - 100 - 0 - - - - 锁存 - - - - - - - - 100 - 0 - - - - 非锁存 - - - true - - - - - - - - - - - - 超速 - - - - - - - - - 100 - 0 - - - - 锁存 - - - - - - - - 100 - 0 - - - - 非锁存 - - - true - - - - - - - - - - - - - - - - - - - - - 键齿数: - - - - - - - - 50 - 25 - - - - 1 - - - 10000 - - - - - - - 1 - 10000 - - - - - @@ -1995,579 +1898,651 @@ - - - 警报 - - - - - - - - 20 - - - - - - 0 - 20 - - - - - 16777215 - 20 - - - - 危险 + 高 - - - - - - - - 0 - 20 - - - - - 16777215 - 20 - - - - 警报 + 高 - - - - - - - - 0 - 20 - - - - - 16777215 - 20 - - - - 警报 + 低 - - - - - - - - 0 - 20 - - - - - 16777215 - 20 - - - - 危险 + 低 - - - - - - - - - - - - 16777215 - 20 - - - - 等级 - - - Qt::AlignCenter - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - - - 16777215 - 20 - - - - 回差 - - - Qt::AlignCenter - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - - - 16777215 - 20 - - - - 延时 - - - Qt::AlignCenter - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - - - 16777215 - 20 - - - - Qt::LeftToRight - - - 使能 - - - Qt::AlignCenter - - - - - - - - 0 - 25 - - - - - 16777215 - 25 - - - - Qt::LeftToRight - - - - - - - - - - - 0 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - false - - - - 0 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - false - - - - 0 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - - - - - - 16777215 - 20 - - - - 锁存 - - - Qt::AlignCenter - - - - - - - - 0 - 25 - - - - - - - - - - - - 0 - 25 - - - - - - - - - - - false - - - - 0 - 25 - - - - - - - - - - - false - - - - 0 - 25 - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - + + + + + 键齿数: + + + + + + + + 50 + 25 + + + + 1 + + + 10000 + + + + + + + 1 - 10000 + + + + + + + + 警报 + + + + + + 20 + + + + + + 0 + 20 + + + + + 16777215 + 20 + + + + 危险 + 高 + + + + + + + + 0 + 20 + + + + + 16777215 + 20 + + + + 警报 + 高 + + + + + + + + 0 + 20 + + + + + 16777215 + 20 + + + + 警报 + 低 + + + + + + + + 0 + 20 + + + + + 16777215 + 20 + + + + 危险 + 低 + + + + + + + + + + + + 0 + 30 + + + + + 16777215 + 30 + + + + 等级 +(RPM) + + + Qt::AlignCenter + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 5000 + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + + + 0 + 30 + + + + + 16777215 + 30 + + + + 回差 +(RPM) + + + Qt::AlignCenter + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + + + 0 + 30 + + + + + 16777215 + 30 + + + + 延时 +(S) + + + Qt::AlignCenter + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + + + 16777215 + 20 + + + + Qt::LeftToRight + + + 使能 + + + Qt::AlignCenter + + + + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + Qt::LeftToRight + + + + + + true + + + + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + false + + + + 0 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + false + + + + 0 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + + + + + + 16777215 + 20 + + + + 锁存 + + + Qt::AlignCenter + + + + + + + + 0 + 25 + + + + + + + + + + + + 0 + 25 + + + + + + + + + + + false + + + + 0 + 25 + + + + + + + + + + + false + + + + 0 + 25 + + + + + + + + + + + + + Qt::Horizontal + + + + 150 + 20 + + + + + + + 通道 3 - + @@ -2819,7 +2794,7 @@ - + @@ -2992,137 +2967,6 @@ - - - - 告警模式 - - - - - - 告警 - - - - - - - - - 100 - 0 - - - - 锁存 - - - - - - - - 100 - 0 - - - - 非锁存 - - - true - - - - - - - - - - - - 超速 - - - - - - - - - 100 - 0 - - - - 锁存 - - - - - - - - 100 - 0 - - - - 非锁存 - - - true - - - - - - - - - - - - - - - - - - - - - 键齿数: - - - - - - - - 50 - 25 - - - - 1 - - - 10000 - - - - - - - 1 - 10000 - - - - - @@ -3193,579 +3037,651 @@ - - - 警报 - - - - - - - - 20 - - - - - - 0 - 20 - - - - - 16777215 - 20 - - - - 危险 + 高 - - - - - - - - 0 - 20 - - - - - 16777215 - 20 - - - - 警报 + 高 - - - - - - - - 0 - 20 - - - - - 16777215 - 20 - - - - 警报 + 低 - - - - - - - - 0 - 20 - - - - - 16777215 - 20 - - - - 危险 + 低 - - - - - - - - - - - - 16777215 - 20 - - - - 等级 - - - Qt::AlignCenter - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - - - 16777215 - 20 - - - - 回差 - - - Qt::AlignCenter - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - - - 16777215 - 20 - - - - 延时 - - - Qt::AlignCenter - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - - - 16777215 - 20 - - - - Qt::LeftToRight - - - 使能 - - - Qt::AlignCenter - - - - - - - - 0 - 25 - - - - - 16777215 - 25 - - - - Qt::LeftToRight - - - - - - - - - - - 0 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - false - - - - 0 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - false - - - - 0 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - - - - - - 16777215 - 20 - - - - 锁存 - - - Qt::AlignCenter - - - - - - - - 0 - 25 - - - - - - - - - - - - 0 - 25 - - - - - - - - - - - false - - - - 0 - 25 - - - - - - - - - - - false - - - - 0 - 25 - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - + + + + + 键齿数: + + + + + + + + 50 + 25 + + + + 1 + + + 10000 + + + + + + + 1 - 10000 + + + + + + + + 警报 + + + + + + 20 + + + + + + 0 + 20 + + + + + 16777215 + 20 + + + + 危险 + 高 + + + + + + + + 0 + 20 + + + + + 16777215 + 20 + + + + 警报 + 高 + + + + + + + + 0 + 20 + + + + + 16777215 + 20 + + + + 警报 + 低 + + + + + + + + 0 + 20 + + + + + 16777215 + 20 + + + + 危险 + 低 + + + + + + + + + + + + 0 + 30 + + + + + 16777215 + 30 + + + + 等级 +(RPM) + + + Qt::AlignCenter + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 5000 + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + + + 0 + 30 + + + + + 16777215 + 30 + + + + 回差 +(RPM) + + + Qt::AlignCenter + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + + + 0 + 30 + + + + + 16777215 + 30 + + + + 延时 +(S) + + + Qt::AlignCenter + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + + + 16777215 + 20 + + + + Qt::LeftToRight + + + 使能 + + + Qt::AlignCenter + + + + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + Qt::LeftToRight + + + + + + true + + + + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + false + + + + 0 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + false + + + + 0 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + + + + + + 16777215 + 20 + + + + 锁存 + + + Qt::AlignCenter + + + + + + + + 0 + 25 + + + + + + + + + + + + 0 + 25 + + + + + + + + + + + false + + + + 0 + 25 + + + + + + + + + + + false + + + + 0 + 25 + + + + + + + + + + + + + Qt::Horizontal + + + + 150 + 20 + + + + + + + 通道 4 - + @@ -4017,7 +3933,7 @@ - + @@ -4190,137 +4106,6 @@ - - - - 告警模式 - - - - - - 告警 - - - - - - - - - 100 - 0 - - - - 锁存 - - - - - - - - 100 - 0 - - - - 非锁存 - - - true - - - - - - - - - - - - 超速 - - - - - - - - - 100 - 0 - - - - 锁存 - - - - - - - - 100 - 0 - - - - 非锁存 - - - true - - - - - - - - - - - - - - - - - - - - - 键齿数: - - - - - - - - 50 - 25 - - - - 1 - - - 10000 - - - - - - - 1 - 10000 - - - - - @@ -4391,572 +4176,644 @@ - - - 警报 - - - - - - - - 20 - - - - - - 0 - 20 - - - - - 16777215 - 20 - - - - 危险 + 高 - - - - - - - - 0 - 20 - - - - - 16777215 - 20 - - - - 警报 + 高 - - - - - - - - 0 - 20 - - - - - 16777215 - 20 - - - - 警报 + 低 - - - - - - - - 0 - 20 - - - - - 16777215 - 20 - - - - 危险 + 低 - - - - - - - - - - - - 16777215 - 20 - - - - 等级 - - - Qt::AlignCenter - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - - - 16777215 - 20 - - - - 回差 - - - Qt::AlignCenter - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - - - 16777215 - 20 - - - - 延时 - - - Qt::AlignCenter - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - false - - - - 50 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - - - 16777215 - 20 - - - - Qt::LeftToRight - - - 使能 - - - Qt::AlignCenter - - - - - - - - 0 - 25 - - - - - 16777215 - 25 - - - - Qt::LeftToRight - - - - - - - - - - - 0 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - false - - - - 0 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - false - - - - 0 - 25 - - - - - 16777215 - 25 - - - - - - - - - - - - - - - - 16777215 - 20 - - - - 锁存 - - - Qt::AlignCenter - - - - - - - - 0 - 25 - - - - - - - - - - - - 0 - 25 - - - - - - - - - - - false - - - - 0 - 25 - - - - - - - - - - - false - - - - 0 - 25 - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - + + + + + 键齿数: + + + + + + + + 50 + 25 + + + + 1 + + + 10000 + + + + + + + 1 - 10000 + + + + + + + + 警报 + + + + + + 20 + + + + + + 0 + 20 + + + + + 16777215 + 20 + + + + 危险 + 高 + + + + + + + + 0 + 20 + + + + + 16777215 + 20 + + + + 警报 + 高 + + + + + + + + 0 + 20 + + + + + 16777215 + 20 + + + + 警报 + 低 + + + + + + + + 0 + 20 + + + + + 16777215 + 20 + + + + 危险 + 低 + + + + + + + + + + + + 0 + 30 + + + + + 16777215 + 30 + + + + 等级 +(RPM) + + + Qt::AlignCenter + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 5000 + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + + + 0 + 30 + + + + + 16777215 + 30 + + + + 回差 +(RPM) + + + Qt::AlignCenter + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + + + 0 + 30 + + + + + 16777215 + 30 + + + + 延时 +(S) + + + Qt::AlignCenter + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + + 50 + 25 + + + + + 16777215 + 25 + + + + 0 + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + false + + + + 50 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + + + 16777215 + 20 + + + + Qt::LeftToRight + + + 使能 + + + Qt::AlignCenter + + + + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + Qt::LeftToRight + + + + + + true + + + + + + + + 0 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + false + + + + 0 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + false + + + + 0 + 25 + + + + + 16777215 + 25 + + + + + + + + + + + + + + + + 16777215 + 20 + + + + 锁存 + + + Qt::AlignCenter + + + + + + + + 0 + 25 + + + + + + + + + + + + 0 + 25 + + + + + + + + + + + false + + + + 0 + 25 + + + + + + + + + + + false + + + + 0 + 25 + + + + + + + + + + + + + Qt::Horizontal + + + + 150 + 20 + + + + + + + @@ -5002,6 +4859,19 @@ + + + + + 100 + 35 + + + + 复制通道 + + + @@ -5057,8 +4927,6 @@ - -