diff --git a/MyTcpClient.cpp b/MyTcpClient.cpp index 3c57a8c..97f8563 100644 --- a/MyTcpClient.cpp +++ b/MyTcpClient.cpp @@ -54,7 +54,7 @@ int MyTcpClient::sendData(char*data,qint64 len) { return bytesWritten; } void MyTcpClient::waitForRead() { - socket->waitForReadyRead(); + socket->waitForReadyRead(3000); } void MyTcpClient::disconnectFromServer() { shouldReconnect = false; // 停止自动重连 diff --git a/data_config.h b/data_config.h index e798db2..da63468 100644 --- a/data_config.h +++ b/data_config.h @@ -294,6 +294,9 @@ typedef struct SeismicMonitor_{ normal_voltage_low = -20; signal_sensitivity = 8; channel_type = -1; + function = 0; + first_channel_angle = 0; + second_channel_angle = 0; } } SeismicMonitor; diff --git a/dc_outputs.ui b/dc_outputs.ui index f951cf4..7853185 100644 --- a/dc_outputs.ui +++ b/dc_outputs.ui @@ -514,7 +514,7 @@ 460 280 - 31 + 41 16 diff --git a/mainwindow.cpp b/mainwindow.cpp index 3916ba8..11c9c4d 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -298,6 +298,7 @@ void MainWindow::onMenuActionTriggered() { CardType card_type = static_cast(action->data().toInt()); qDebug() << "rack_type" << action->data() << "card type" << card_type; int button_id = button->objectName().right(button->objectName().length() - 15).toInt(); + current_slot = button_id; qDebug() << slot_type << rack_type << button_id << map_slot_config[button_id].slot_type << map_slot_config[button_id + 2].slot_type ; map_slot_config[button_id].slot_label->setStyleSheet("QLabel { color :#2980b9; font: bold 16px}"); QString chan_display = ""; @@ -677,6 +678,12 @@ void MainWindow::on_pushButton_open_clicked() { return; } QFile file(tsi_config_file); + // 先读出当前权限 + QFileDevice::Permissions p = file.permissions(); + // 加上写权限(所有者) + p |= QFileDevice::WriteOwner | QFileDevice::WriteGroup | QFileDevice::WriteOther; + // 去掉只读相当于重新设置权限 + file.setPermissions(p); if (!file.open(QIODevice::ReadOnly)) { qWarning() << "Failed to open update file."; return; diff --git a/seismic_monitor.cpp b/seismic_monitor.cpp index f2d2e9b..aa60921 100644 --- a/seismic_monitor.cpp +++ b/seismic_monitor.cpp @@ -47,6 +47,8 @@ Seismic_monitor::Seismic_monitor(int slot,CardType cardtype, QWidget *parent) : ui->label_text_4->setVisible(false); ui->label_text_5->setVisible(false); ui->label_text_6->setVisible(false); + ui->comboBox_function_1->setCurrentIndex(0); + ui->comboBox_function_2->setCurrentIndex(0); Init(); } @@ -647,7 +649,13 @@ void Seismic_monitor::on_pushButton_copy_channel_clicked() void Seismic_monitor::on_comboBox_function_2_currentIndexChanged(int index) { if(index == 1 && (ui->comboBox_chan_type_3->currentIndex() != 0 || ui->comboBox_chan_type_4->currentIndex() != 0)){ - QMessageBox::warning(this, QStringLiteral("警告"), "通道1 和 通道2 必须为径向位移!"); + QMessageBox::warning(this, QStringLiteral("警告"), "通道3 和 通道4 必须为径向位移!"); + ui->comboBox_function_2->setCurrentIndex(0); + return; + } + if((index == 2||index == 3||index == 4) + && (ui->comboBox_chan_type_3->currentIndex() != 3 || ui->comboBox_chan_type_4->currentIndex() != 3)){ + QMessageBox::warning(this, QStringLiteral("警告"), "通道3 和 通道4 必须为轴向位移!"); ui->comboBox_function_2->setCurrentIndex(0); return; } @@ -674,6 +682,9 @@ void Seismic_monitor::on_comboBox_function_2_currentIndexChanged(int index) ui->label_text_6->setVisible(false); } current_config_3_4 = index; + if(index != 0){ + on_comboBox_dual_math_function_2_currentIndexChanged(0); + } } void Seismic_monitor::on_comboBox_function_1_currentIndexChanged(int index) @@ -683,6 +694,12 @@ void Seismic_monitor::on_comboBox_function_1_currentIndexChanged(int index) ui->comboBox_function_1->setCurrentIndex(0); return; } + if((index == 2||index == 3||index == 4) + && (ui->comboBox_chan_type_3->currentIndex() != 3 || ui->comboBox_chan_type_4->currentIndex() != 3)){ + QMessageBox::warning(this, QStringLiteral("警告"), "通道1 和 通道2 必须为轴向位移!"); + ui->comboBox_function_1->setCurrentIndex(0); + return; + } if(index == 3){ ui->lineEdit_first_1->setVisible(true); ui->lineEdit_second_1->setVisible(true); @@ -706,6 +723,9 @@ void Seismic_monitor::on_comboBox_function_1_currentIndexChanged(int index) ui->label_text_5->setVisible(false); } current_config_1_2 = index; + if(index != 0){ + on_comboBox_dual_math_function_currentIndexChanged(0); + } } QString Seismic_monitor::GetUnit(int unit_num){ QString unit_str = ""; @@ -779,3 +799,51 @@ int Seismic_monitor::SetUnit(QString unit_str){ } return unit_num; } + +void Seismic_monitor::on_comboBox_dual_math_function_currentIndexChanged(int index) +{ + std::shared_ptr base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no); + std::shared_ptr ptr = std::dynamic_pointer_cast(base_ptr); + std::shared_ptr variable_base1 = ptr->GetChannelPtr(1); + std::shared_ptr variable_base2 = ptr->GetChannelPtr(2); + qDebug() << "comboBox_function_1" << ui->comboBox_function_1->currentIndex(); + if(ui->comboBox_function_1->currentIndex() == kDMF && (index == kRMSSum || index == kRMSSubtraction) + && variable_base1->general.rectifier_function != 6 + && variable_base2->general.rectifier_function != 6){ + QMessageBox::warning(this, QStringLiteral("警告"), "通道1 和 通道2 整流器必须为RMS!"); + ui->comboBox_function_1->setCurrentIndex(0); + return; + } + if((index == kSUM || index == kSUBTRACTION || index == kXYMin || index == kXYMax) + && variable_base1->general.rectifier_function != + variable_base2->general.rectifier_function){ + QMessageBox::warning(this, QStringLiteral("警告"), "通道1 和 通道2 整流器必须配置相同!"); + ui->comboBox_function_1->setCurrentIndex(0); + return; + } +} + + +void Seismic_monitor::on_comboBox_dual_math_function_2_currentIndexChanged(int index) +{ + std::shared_ptr base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no); + std::shared_ptr ptr = std::dynamic_pointer_cast(base_ptr); + std::shared_ptr variable_base1 = ptr->GetChannelPtr(3); + std::shared_ptr variable_base2 = ptr->GetChannelPtr(4); + qDebug() << "comboBox_function_2" << ui->comboBox_function_2->currentIndex(); + if(ui->comboBox_function_2->currentIndex() == kDMF && (index == kRMSSum || index == kRMSSubtraction) + && variable_base1->general.rectifier_function != 6 + && variable_base2->general.rectifier_function != 6){ + QMessageBox::warning(this, QStringLiteral("警告"), "通道3 和 通道4 整流器必须为RMS!"); + ui->comboBox_function_2->setCurrentIndex(0); + return; + } + if((index == kSUM || index == kSUBTRACTION || index == kXYMin || index == kXYMax) + && variable_base1->general.rectifier_function != + variable_base2->general.rectifier_function){ + QMessageBox::warning(this, QStringLiteral("警告"), "通道3 和 通道4 整流器必须配置相同!"); + ui->comboBox_function_2->setCurrentIndex(0); + return; + } +} + diff --git a/seismic_monitor.h b/seismic_monitor.h index 1968e6e..89368e9 100644 --- a/seismic_monitor.h +++ b/seismic_monitor.h @@ -61,6 +61,10 @@ class Seismic_monitor : public QWidget { void on_comboBox_function_1_currentIndexChanged(int index); + void on_comboBox_dual_math_function_currentIndexChanged(int index); + + void on_comboBox_dual_math_function_2_currentIndexChanged(int index); + private: Ui::Seismic_monitor *ui; void UpdateData(std::shared_ptr vib_data);