diff --git a/common.cpp b/common.cpp new file mode 100644 index 0000000..62e16e3 --- /dev/null +++ b/common.cpp @@ -0,0 +1,43 @@ +#include "common.h" +#include +#include +#include +#include +#include + +Common::Common() {} +void messageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) +{ + // 获取当前日期,并以 "yyyy-MM-dd" 格式创建文件名 + QString date = QDateTime::currentDateTime().toString("yyyy-MM-dd"); + QString logFileName = QCoreApplication::applicationDirPath() + "\\log\\" + date + ".log"; // 日志文件名为当前日期的日志文件 + + QFile logFile(logFileName); // 使用日期命名的日志文件 + if (logFile.size() > 1024 * 1024 * 10) { // 文件超过 10MB + logFile.rename("app_old.log"); // 重命名日志文件 + logFile.setFileName(logFileName); // 创建新文件 + } + if (logFile.open(QIODevice::Append | QIODevice::Text)) { + QTextStream out(&logFile); + + // 根据日志类型格式化日志 + QString logMessage; + switch (type) { + case QtDebugMsg: + logMessage = QString("DEBUG: %1").arg(msg); + break; + case QtWarningMsg: + logMessage = QString("WARNING: %1").arg(msg); + break; + case QtCriticalMsg: + logMessage = QString("CRITICAL: %1").arg(msg); + break; + case QtFatalMsg: + logMessage = QString("FATAL: %1").arg(msg); + break; + } + + // 添加时间戳和日志消息 + out << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss") << " " << logMessage << "\n"; + } +} diff --git a/common.h b/common.h new file mode 100644 index 0000000..2bc83a2 --- /dev/null +++ b/common.h @@ -0,0 +1,13 @@ +#ifndef COMMON_H +#define COMMON_H +#include +#include "data_config.h" +class Common +{ +public: + Common(); + + +}; +void messageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg); +#endif // COMMON_H diff --git a/relaysetting.cpp b/relaysetting.cpp new file mode 100644 index 0000000..3e70451 --- /dev/null +++ b/relaysetting.cpp @@ -0,0 +1,222 @@ +#include "relaysetting.h" +#include "ui_relaysetting.h" +#include +#include +#include +#include +#include +#include + + +RelaySetting::RelaySetting(QWidget *parent) + : QWidget(parent) + , ui(new Ui::RelaySetting) +{ + ui->setupUi(this); + + readJsonFile(QCoreApplication::applicationDirPath() + "\\config\\main.json"); + + for (int var = 0; var < map_slot_config.size(); ++var) { + if(map_slot_config[var].slot_type == 30){ + ui->comboBox_slot->addItem(QString::number(map_slot_config[var].slot)); + } + } + connect(ui->buttonGroup_OK, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_TX_RX, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_1, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_2, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_3, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_4, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_5, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_6, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_7, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_8, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_9, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_10, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_11, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_12, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_13, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_14, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_15, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_16, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_TEST, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + connect(ui->buttonGroup_STATUS, QOverload::of(&QButtonGroup::buttonClicked), + this, &RelaySetting::onRadioButtonClicked); + +} + +RelaySetting::~RelaySetting() +{ + delete ui; +} +void RelaySetting::readJsonFile(const QString &filePath) +{ + // 创建文件对象 + QFile file(filePath); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + qDebug() << "Cannot open file for reading:" << filePath; + return; + } + QString content = file.readAll(); + file.close(); + + QByteArray jsonData = content.toUtf8(); + + QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData); + if (jsonDoc.isNull()) { + qDebug() << "Cannot parse JSON document"; + return; + } + if (!jsonDoc.isObject() && !jsonDoc.isArray()) { + qDebug() << "JSON document is not an object or an array"; + return; + } + int slot_id = 0; + QJsonArray jsonArray = jsonDoc.array(); + for (const QJsonValue &value : jsonArray) { + SlotConfig slot_config; + if (value.isObject()) { // 处理数组中的对象,例如每个对象代表一个记录或用户等。 + QJsonObject obj = value.toObject(); + slot_config.slot = obj["slot"].toInt(); + slot_config.slot_type = obj["slot_type"].toInt(); + slot_config.chan_display = obj["chan_display"].toString(); + slot_config.rack_type = obj["rack_type"].toString(); + map_slot_config.insert(slot_id,slot_config); + slot_id ++; + } + } +} + +void RelaySetting::onRadioButtonClicked(QAbstractButton *button) +{ + QButtonGroup *group = qobject_cast(sender()); + if (!group || !button) return; + + qDebug() << "Group:" << group << ", Selected button text:" << button->text(); + QTcpSocket socket; + // 连接到服务器 + socket.connectToHost(g_strServerIp, 10000); + if (!socket.waitForConnected()) { + qDebug() << "Connection failed!"; + return; + } + PackageHead header = { {0xAA, 0x55, 0xAA}, kRelaySetting, sizeof(RelaySettingReq),0,{} }; + + int slot = ui->comboBox_slot->currentText().toInt(); + qDebug() << "slot" << slot <objectName().mid(12); + qDebug() << "led_id" << led_id <text() == "OFF") + relay_setting_req.led_operate = 0; + else if(button->text() == "ON") + relay_setting_req.led_operate = 1; + else if(button->text() == "红色") + relay_setting_req.led_operate = 2; + else if(button->text() == "绿色") + relay_setting_req.led_operate = 3; + else if(button->text() == "红色1Hz闪烁" || button->text() == "红色闪烁") + relay_setting_req.led_operate = 4; + else if(button->text() == "红色2Hz闪烁") + relay_setting_req.led_operate = 5; + else if(button->text() == "绿色闪烁") + relay_setting_req.led_operate = 6; + else if(button->text() == "测试") + relay_setting_req.led_operate = 7; + else if(button->text() == "手动") + relay_setting_req.led_operate = 8; + else if(button->text() == "工作") + relay_setting_req.led_operate = 9; + qDebug() << "relay_setting_req.led_operate " << relay_setting_req.led_operate; + char send_buf[20] ={0}; + memcpy(send_buf, (char*)&header, sizeof(PackageHead)); + memcpy(send_buf + sizeof(PackageHead), (char*)&relay_setting_req, sizeof(RelaySettingReq)); + int length = sizeof(PackageHead) + sizeof(RelaySettingReq); + qint64 bytesWritten = socket.write(send_buf, length); + qDebug() << "Server response: " << bytesWritten; + if (socket.waitForReadyRead()) { + QByteArray response = socket.readAll(); + PackageHead header; + RelaySettingRsp relay_setting_rsp; + memcpy(&header,response.data(),sizeof(PackageHead)); + qDebug() << "header len" << header.len << endl; + memcpy(&relay_setting_rsp,response.data() + sizeof(PackageHead),sizeof(RelaySettingRsp)); + qDebug() << "relay_setting_rsp code" << relay_setting_rsp.code << endl; + } +} + +void RelaySetting::on_pushButton_status_clicked() +{ + QTcpSocket socket; + // 连接到服务器 + socket.connectToHost(g_strServerIp, 10000); + if (!socket.waitForConnected()) { + qDebug() << "Connection failed!"; + return; + } + PackageHead header = { {0xAA, 0x55, 0xAA}, kRelayStatus, sizeof(RelaySettingReq),0,{} }; + + int slot = ui->comboBox_slot->currentText().toInt(); + qDebug() << "slot" << slot <label_status->setText("测试"); + else if(relay_status_rsp.status == 8) + ui->label_status->setText("手动"); + else if(relay_status_rsp.status == 9) + ui->label_status->setText("工作"); + } +} + diff --git a/relaysetting.h b/relaysetting.h new file mode 100644 index 0000000..d4730a2 --- /dev/null +++ b/relaysetting.h @@ -0,0 +1,31 @@ +#ifndef RELAYSETTING_H +#define RELAYSETTING_H + +#include +#include "data_config.h" + +namespace Ui { +class RelaySetting; +} + +class RelaySetting : public QWidget +{ + Q_OBJECT + +public: + explicit RelaySetting(QWidget *parent = nullptr); + ~RelaySetting(); + +private slots: + void onRadioButtonClicked(QAbstractButton *button); + + void on_pushButton_status_clicked(); + +private: + Ui::RelaySetting *ui; + QMap map_slot_config; + + void readJsonFile(const QString &filePath); +}; + +#endif // RELAYSETTING_H diff --git a/relaysetting.ui b/relaysetting.ui new file mode 100644 index 0000000..911379c --- /dev/null +++ b/relaysetting.ui @@ -0,0 +1,1336 @@ + + + RelaySetting + + + + 0 + 0 + 835 + 817 + + + + Form + + + + + + + + 50 + 130 + 216 + 36 + + + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + 1 + + + + + + + ON + + + false + + + false + + + buttonGroup_1 + + + + + + + OFF + + + false + + + buttonGroup_1 + + + + + + + + + Qt::Horizontal + + + + + + + + + 50 + 330 + 216 + 36 + + + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + 6 + + + + + + + ON + + + buttonGroup_6 + + + + + + + OFF + + + buttonGroup_6 + + + + + + + + + Qt::Horizontal + + + + + + + + + 50 + 370 + 216 + 36 + + + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + 7 + + + + + + + ON + + + buttonGroup_7 + + + + + + + OFF + + + buttonGroup_7 + + + + + + + + + Qt::Horizontal + + + + + + + + + 50 + 650 + 216 + 36 + + + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + 14 + + + + + + + ON + + + buttonGroup_14 + + + + + + + OFF + + + buttonGroup_14 + + + + + + + + + Qt::Horizontal + + + + + + + + + 50 + 450 + 216 + 36 + + + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + 9 + + + + + + + ON + + + buttonGroup_9 + + + + + + + OFF + + + buttonGroup_9 + + + + + + + + + Qt::Horizontal + + + + + + + + + 50 + 730 + 216 + 36 + + + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + 16 + + + + + + + ON + + + buttonGroup_16 + + + + + + + OFF + + + buttonGroup_16 + + + + + + + + + Qt::Horizontal + + + + + + + + + 50 + 490 + 216 + 36 + + + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + 10 + + + + + + + ON + + + buttonGroup_10 + + + + + + + OFF + + + buttonGroup_10 + + + + + + + + + Qt::Horizontal + + + + + + + + + 50 + 410 + 216 + 36 + + + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + 8 + + + + + + + ON + + + buttonGroup_8 + + + + + + + OFF + + + buttonGroup_8 + + + + + + + + + Qt::Horizontal + + + + + + + + + 50 + 290 + 216 + 36 + + + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + 5 + + + + + + + ON + + + buttonGroup_5 + + + + + + + OFF + + + buttonGroup_5 + + + + + + + + + Qt::Horizontal + + + + + + + + + 50 + 610 + 216 + 36 + + + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + 13 + + + + + + + ON + + + buttonGroup_13 + + + + + + + OFF + + + buttonGroup_13 + + + + + + + + + Qt::Horizontal + + + + + + + + + 50 + 530 + 216 + 36 + + + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + 11 + + + + + + + ON + + + buttonGroup_11 + + + + + + + OFF + + + buttonGroup_11 + + + + + + + + + Qt::Horizontal + + + + + + + + + 50 + 570 + 216 + 36 + + + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + 12 + + + + + + + ON + + + buttonGroup_12 + + + + + + + OFF + + + buttonGroup_12 + + + + + + + + + Qt::Horizontal + + + + + + + + + 50 + 690 + 216 + 36 + + + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + 15 + + + + + + + ON + + + buttonGroup_15 + + + + + + + OFF + + + buttonGroup_15 + + + + + + + + + Qt::Horizontal + + + + + + + + + 50 + 170 + 216 + 36 + + + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + 2 + + + + + + + ON + + + buttonGroup_2 + + + + + + + OFF + + + buttonGroup_2 + + + + + + + + + Qt::Horizontal + + + + + + + + + 50 + 250 + 216 + 36 + + + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + 4 + + + + + + + ON + + + buttonGroup_4 + + + + + + + OFF + + + buttonGroup_4 + + + + + + + + + Qt::Horizontal + + + + + + + + + 50 + 90 + 465 + 36 + + + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + TX/RX + + + + + + + 红色1Hz闪烁 + + + buttonGroup_TX_RX + + + + + + + 红色2Hz闪烁 + + + buttonGroup_TX_RX + + + + + + + 绿色闪烁 + + + buttonGroup_TX_RX + + + + + + + 绿色 + + + buttonGroup_TX_RX + + + + + + + OFF + + + buttonGroup_TX_RX + + + + + + + + + Qt::Horizontal + + + + + + + + + 50 + 210 + 216 + 36 + + + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + 3 + + + + + + + ON + + + buttonGroup_3 + + + + + + + OFF + + + buttonGroup_3 + + + + + + + + + Qt::Horizontal + + + + + + + + + 50 + 50 + 297 + 36 + + + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + OK + + + + + + + 红色闪烁 + + + buttonGroup_OK + + + + + + + 绿色 + + + buttonGroup_OK + + + + + + + OFF + + + buttonGroup_OK + + + + + + + + + Qt::Horizontal + + + + + + + + + 51 + 1 + 755 + 25 + + + + + + + 继电器板卡 + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + + + + + ON + + + buttonGroup_TEST + + + + + + + OFF + + + buttonGroup_TEST + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 测试 + + + buttonGroup_STATUS + + + + + + + 手动 + + + buttonGroup_STATUS + + + + + + + 工作 + + + buttonGroup_STATUS + + + + + + + 查看状态 + + + + + + + + 80 + 0 + + + + + 80 + 16777215 + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/seismic_monitor.cpp b/seismic_monitor.cpp new file mode 100644 index 0000000..376624c --- /dev/null +++ b/seismic_monitor.cpp @@ -0,0 +1,230 @@ +#include "seismic_monitor.h" +#include "ui_seismic_monitor.h" +#include +#include +#include +#include +#include +#include "acceleration.h" +#include "velocity.h" +#include "radial_vibration.h" + +Seismic_monitor::Seismic_monitor(int slot,QWidget *parent) : + QWidget(parent), + ui(new Ui::Seismic_monitor) +{ + ui->setupUi(this); + slot_no = slot; + QString slot_no_ = QString("%1").arg(slot_no); + ui->label_slot_no->setText(slot_no_); + + QString filePath = QCoreApplication::applicationDirPath() + QString("\\config\\seismic_monitor_slot_%1.json").arg(slot_no); + readJsonFile(filePath); + Init(); +} + +Seismic_monitor::~Seismic_monitor() +{ + delete ui; +} +void Seismic_monitor::readJsonFile(const QString &filePath) +{ + // 创建文件对象 + QFile file(filePath); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + qDebug() << "Cannot open file for reading:" << filePath; + return; + } + QString content = file.readAll(); + file.close(); + QByteArray jsonData = content.toUtf8(); + QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData); + if (jsonDoc.isNull()) { + qDebug() << "Cannot parse JSON document"; + return; + } + if (!jsonDoc.isObject() && !jsonDoc.isArray()) { + qDebug() << "JSON document is not an object or an array"; + return; + } + QJsonObject json_obj = jsonDoc.object(); + card_type = json_obj["card_type"].toInt(); + QJsonArray chan_array = json_obj["chan"].toArray(); + + for(int i = 0; i < chan_array.size(); i++){ + QJsonObject temp_obj = chan_array[i].toObject(); + seismic_monitor[i].id = temp_obj["id"].toInt(); + seismic_monitor[i].channel_name = temp_obj["channle_name"].toString(); + seismic_monitor[i].standby = temp_obj["standby"].toBool(); + seismic_monitor[i].active = temp_obj["active"].toBool(); + seismic_monitor[i].rack_type = temp_obj["rack_type"].toString(); + seismic_monitor[i].tmr_group = temp_obj["tmr_group"].toString(); + seismic_monitor[i].channel_type = temp_obj["channel_type"].toString(); + seismic_monitor[i].transducer_name = temp_obj["transducer_name"].toString(); + seismic_monitor[i].scale_factor = temp_obj["scale_factor"].toString(); + seismic_monitor[i].sample_rate = temp_obj["sample_rate"].toString(); + QJsonArray voltage_range_array = temp_obj["normal_voltage_range"].toArray(); + seismic_monitor[i].normal_voltage_low = voltage_range_array[0].toDouble(); + seismic_monitor[i].normal_voltage_high = voltage_range_array[1].toDouble(); + } +} +void Seismic_monitor::Init() +{ + for (int i = 0; i < CHANNLE_COUNT; i++) { + if(seismic_monitor[i].id == 1){ + if(seismic_monitor[i].channel_type == "acceleration"){ + ui->comboBox_chan_type_1->setCurrentText("加速度"); + }else if(seismic_monitor[i].channel_type == "velocity"){ + ui->comboBox_chan_type_1->setCurrentText("速度"); + }else if(seismic_monitor[i].channel_type == "proximeter"){ + ui->comboBox_chan_type_1->setCurrentText("径向位移"); + } + ui->lineEdit_transducer_name_1->setText(seismic_monitor[i].transducer_name); + ui->doubleSpinBox_scale_factor_1->setValue(seismic_monitor[i].scale_factor.toDouble()); + ui->checkBox_enable_1->setCheckable(seismic_monitor[i].active); + ui->doubleSpinBox_low_1->setValue(seismic_monitor[i].normal_voltage_low); + ui->doubleSpinBox_high_1->setValue(seismic_monitor[i].normal_voltage_high); + if(seismic_monitor[i].sample_rate == "32000"){ + ui->comboBox_sample_rate_1->setCurrentText("32k"); + } + } + if(seismic_monitor[i].id == 2){ + if(seismic_monitor[i].channel_type == "acceleration"){ + ui->comboBox_chan_type_2->setCurrentText("加速度"); + }else if(seismic_monitor[i].channel_type == "velocity"){ + ui->comboBox_chan_type_2->setCurrentText("速度"); + }else if(seismic_monitor[i].channel_type == "proximeter"){ + ui->comboBox_chan_type_2->setCurrentText("径向位移"); + } + ui->lineEdit_transducer_name_2->setText(seismic_monitor[i].transducer_name); + ui->doubleSpinBox_scale_factor_2->setValue(seismic_monitor[i].scale_factor.toDouble()); + ui->checkBox_enable_2->setCheckable(seismic_monitor[i].active); + ui->doubleSpinBox_low_2->setValue(seismic_monitor[i].normal_voltage_low); + ui->doubleSpinBox_high_2->setValue(seismic_monitor[i].normal_voltage_high); + if(seismic_monitor[i].sample_rate == "32000"){ + ui->comboBox_sample_rate_2->setCurrentText("32k"); + } + } + if(seismic_monitor[i].id == 3){ + if(seismic_monitor[i].channel_type == "acceleration"){ + ui->comboBox_chan_type_3->setCurrentText("加速度"); + }else if(seismic_monitor[i].channel_type == "velocity"){ + ui->comboBox_chan_type_3->setCurrentText("速度"); + }else if(seismic_monitor[i].channel_type == "proximeter"){ + ui->comboBox_chan_type_3->setCurrentText("径向位移"); + } + ui->lineEdit_transducer_name_3->setText(seismic_monitor[i].transducer_name); + ui->doubleSpinBox_scale_factor_3->setValue(seismic_monitor[i].scale_factor.toDouble()); + ui->checkBox_enable_3->setCheckable(seismic_monitor[i].active); + ui->doubleSpinBox_low_3->setValue(seismic_monitor[i].normal_voltage_low); + ui->doubleSpinBox_high_3->setValue(seismic_monitor[i].normal_voltage_high); + if(seismic_monitor[i].sample_rate == "32000"){ + ui->comboBox_sample_rate_3->setCurrentText("32k"); + } + } + if(seismic_monitor[i].id == 4){ + if(seismic_monitor[i].channel_type == "acceleration"){ + ui->comboBox_chan_type_4->setCurrentText("加速度"); + }else if(seismic_monitor[i].channel_type == "velocity"){ + ui->comboBox_chan_type_4->setCurrentText("速度"); + }else if(seismic_monitor[i].channel_type == "proximeter"){ + ui->comboBox_chan_type_4->setCurrentText("径向位移"); + } + ui->lineEdit_transducer_name_4->setText(seismic_monitor[i].transducer_name); + ui->doubleSpinBox_scale_factor_4->setValue(seismic_monitor[i].scale_factor.toDouble()); + ui->checkBox_enable_4->setCheckable(seismic_monitor[i].active); + ui->doubleSpinBox_low_4->setValue(seismic_monitor[i].normal_voltage_low); + ui->doubleSpinBox_high_4->setValue(seismic_monitor[i].normal_voltage_high); + if(seismic_monitor[i].sample_rate == "32000"){ + ui->comboBox_sample_rate_4->setCurrentText("32k"); + } + } + } +} +void Seismic_monitor::on_pushButton_confirm_clicked() +{ + for (int var = 0; var < CHANNLE_COUNT; ++var){ + if(seismic_monitor[var].id == 1){ + seismic_monitor[var].transducer_name = ui->lineEdit_transducer_name_1->text(); + seismic_monitor[var].scale_factor = QString::number(ui->doubleSpinBox_scale_factor_1->value()); + seismic_monitor[var].active = ui->checkBox_enable_1->isChecked(); + seismic_monitor[var].sample_rate = ui->comboBox_sample_rate_1->currentText(); + seismic_monitor[var].normal_voltage_low = ui->doubleSpinBox_low_1->value(); + seismic_monitor[var].normal_voltage_high = ui->doubleSpinBox_high_1->value(); + }else if(seismic_monitor[var].id == 2){ + seismic_monitor[var].transducer_name = ui->lineEdit_transducer_name_2->text(); + seismic_monitor[var].scale_factor = QString::number(ui->doubleSpinBox_scale_factor_2->value()); + seismic_monitor[var].active = ui->checkBox_enable_2->isChecked(); + seismic_monitor[var].sample_rate = ui->comboBox_sample_rate_2->currentText(); + seismic_monitor[var].normal_voltage_low = ui->doubleSpinBox_low_2->value(); + seismic_monitor[var].normal_voltage_high = ui->doubleSpinBox_high_2->value(); + }else if(seismic_monitor[var].id == 3){ + seismic_monitor[var].transducer_name = ui->lineEdit_transducer_name_3->text(); + seismic_monitor[var].scale_factor = QString::number(ui->doubleSpinBox_scale_factor_3->value()); + seismic_monitor[var].active = ui->checkBox_enable_3->isChecked(); + seismic_monitor[var].sample_rate = ui->comboBox_sample_rate_3->currentText(); + seismic_monitor[var].normal_voltage_low = ui->doubleSpinBox_low_3->value(); + seismic_monitor[var].normal_voltage_high = ui->doubleSpinBox_high_3->value(); + }else if(seismic_monitor[var].id == 4){ + seismic_monitor[var].transducer_name = ui->lineEdit_transducer_name_4->text(); + seismic_monitor[var].scale_factor = QString::number(ui->doubleSpinBox_scale_factor_4->value()); + seismic_monitor[var].active = ui->checkBox_enable_4->isChecked(); + seismic_monitor[var].sample_rate = ui->comboBox_sample_rate_4->currentText(); + seismic_monitor[var].normal_voltage_low = ui->doubleSpinBox_low_4->value(); + seismic_monitor[var].normal_voltage_high = ui->doubleSpinBox_high_4->value(); + } + } + QJsonObject monitor_obj,item_obj; + QJsonArray chan_array; + for(int i = 0; i < CHANNLE_COUNT;i++){ + item_obj["id"] = seismic_monitor[i].id; + item_obj["channel_name"] = seismic_monitor[i].channel_name; + item_obj["standby"] = seismic_monitor[i].standby; + item_obj["active"] = seismic_monitor[i].active; + item_obj["rack_type"] = seismic_monitor[i].rack_type; + item_obj["tmr_group"] = seismic_monitor[i].tmr_group; + item_obj["channel_type"] = seismic_monitor[i].channel_type; + item_obj["transducer_name"] = seismic_monitor[i].transducer_name; + item_obj["scale_factor"] = seismic_monitor[i].scale_factor; + item_obj["sample_rate"] = seismic_monitor[i].sample_rate; + QJsonArray normal_voltage_array; + normal_voltage_array.append(seismic_monitor[i].normal_voltage_low); + normal_voltage_array.append(seismic_monitor[i].normal_voltage_high); + item_obj["normal_voltage_range"] = normal_voltage_array; + chan_array.append(item_obj); + } + monitor_obj["chan"] = chan_array; + monitor_obj["slot"] = slot_no; + monitor_obj["version"] = 1; + monitor_obj["card_type"] = 1; + QJsonDocument jsonDoc; + jsonDoc.setObject(monitor_obj); + QString file_name = QString("\\config\\seismic_monitor_slot_%1.json").arg(slot_no); + QFile file(QCoreApplication::applicationDirPath() + file_name); + file.open(QIODevice::WriteOnly); + file.write(jsonDoc.toJson()); + file.close(); + +} + + +void Seismic_monitor::on_pushButton_set_default_clicked() +{ + +} + + +void Seismic_monitor::on_pushButton_config_1_clicked() +{ + for (int i = 0 ;i < CHANNLE_COUNT ; i++) { + if(seismic_monitor[i].id == 1){ + if(seismic_monitor[i].channel_type == "acceleration"){ + channel = 1; + Acceleration *acceleration = new Acceleration(slot_no,channel,seismic_monitor[i].active); + acceleration->setWindowModality(Qt::ApplicationModal); + acceleration->show(); + } + } + } +} + diff --git a/seismic_monitor.h b/seismic_monitor.h new file mode 100644 index 0000000..ccf4648 --- /dev/null +++ b/seismic_monitor.h @@ -0,0 +1,37 @@ +#ifndef SEISMIC_MONITOR_H +#define SEISMIC_MONITOR_H + +#include +#include "data_config.h" + +namespace Ui { +class Seismic_monitor; +} + +class Seismic_monitor : public QWidget +{ + Q_OBJECT + +public: + explicit Seismic_monitor(int slot,QWidget *parent = nullptr); + ~Seismic_monitor(); + int slot_no; + int channel; +private slots: + void on_pushButton_confirm_clicked(); + + void on_pushButton_set_default_clicked(); + + void on_pushButton_config_1_clicked(); + +private: + Ui::Seismic_monitor *ui; + + int card_type; + void readJsonFile(const QString &filePath); + SeismicMonitor seismic_monitor[CHANNLE_COUNT]; + + void Init(); +}; + +#endif // SEISMIC_MONITOR_H diff --git a/seismic_monitor.ui b/seismic_monitor.ui new file mode 100644 index 0000000..3e5288d --- /dev/null +++ b/seismic_monitor.ui @@ -0,0 +1,1777 @@ + + + Seismic_monitor + + + + 0 + 0 + 760 + 544 + + + + 通道配置 + + + + + 400 + 80 + 331 + 381 + + + + 通道 3 和 4 + + + + + 10 + 290 + 120 + 80 + + + + 通道3 + + + + + 20 + 20 + 71 + 16 + + + + 启用 + + + true + + + + + + 30 + 50 + 51 + 21 + + + + 配置 + + + + + + + 200 + 290 + 120 + 80 + + + + 通道4 + + + + + 10 + 20 + 71 + 16 + + + + 启用 + + + true + + + + + + 30 + 50 + 51 + 21 + + + + 配置 + + + + + + + 10 + 50 + 311 + 236 + + + + 0 + + + + 通道3 + + + + + + + + + 90 + 0 + + + + 通道3类型: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 120 + 0 + + + + + 120 + 16777215 + + + + + 加速度 + + + + + 速度 + + + + + 径向位移 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 90 + 0 + + + + 传感器名称: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 120 + 0 + + + + + 120 + 16777215 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 90 + 0 + + + + 灵敏度: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 120 + 0 + + + + + 120 + 16777215 + + + + + + + mv/ m/s^2 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 90 + 0 + + + + 采样率: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 120 + 0 + + + + + 120 + 16777215 + + + + + 32 k + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 220 + 80 + + + + 正常电压 + + + + + + + 90 + 0 + + + + + 90 + 16777215 + + + + 下限 + + + -30.000000000000000 + + + 30.000000000000000 + + + -21.000000000000000 + + + + + + + + 90 + 0 + + + + + 90 + 16777215 + + + + 上限 + + + -30.000000000000000 + + + 30.000000000000000 + + + 21.000000000000000 + + + + + + + Volts + + + + + + + + + + + 通道4 + + + + + + + + + 90 + 0 + + + + 通道4类型: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 120 + 0 + + + + + 120 + 16777215 + + + + + 加速度 + + + + + 速度 + + + + + 径向位移 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 90 + 0 + + + + 传感器名称: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 120 + 0 + + + + + 120 + 16777215 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 90 + 0 + + + + 灵敏度: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 120 + 0 + + + + + 120 + 16777215 + + + + + + + mv/ m/s^2 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 90 + 0 + + + + 采样率: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 120 + 0 + + + + + 120 + 16777215 + + + + + 32 k + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 220 + 80 + + + + 正常电压 + + + + + + + 90 + 0 + + + + + 90 + 16777215 + + + + 下限 + + + -30.000000000000000 + + + 30.000000000000000 + + + -21.000000000000000 + + + + + + + + 90 + 0 + + + + + 90 + 16777215 + + + + 上限 + + + -30.000000000000000 + + + 30.000000000000000 + + + 21.000000000000000 + + + + + + + Volts + + + + + + + + + + + + + 20 + 30 + 71 + 16 + + + + 备份 + + + + + + 142 + 302 + 42 + 72 + + + + + + + + 40 + 16777215 + + + + ===> + + + + + + + = + + + Qt::AlignCenter + + + + + + + + 40 + 16777215 + + + + <=== + + + + + + + + + + 10 + 80 + 331 + 381 + + + + 通道 1 和 2 + + + + + 10 + 290 + 120 + 80 + + + + 通道1 + + + + + 20 + 20 + 71 + 16 + + + + 启用 + + + true + + + + + + 30 + 50 + 51 + 21 + + + + 配置 + + + + + + + 200 + 290 + 120 + 80 + + + + 通道2 + + + + + 10 + 20 + 71 + 16 + + + + 启用 + + + true + + + + + + 30 + 50 + 51 + 21 + + + + 配置 + + + + + + + 10 + 50 + 311 + 236 + + + + + 16777215 + 16777215 + + + + 0 + + + + 通道1 + + + + + + + + + 90 + 0 + + + + 通道1类型: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 120 + 0 + + + + + 120 + 16777215 + + + + + 加速度 + + + + + 速度 + + + + + 径向位移 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 90 + 0 + + + + 传感器名称: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 120 + 0 + + + + + 120 + 16777215 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 90 + 0 + + + + 灵敏度: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 120 + 0 + + + + + 120 + 16777215 + + + + + + + mv/ m/s^2 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 90 + 0 + + + + 采样率: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 120 + 0 + + + + + 120 + 16777215 + + + + + 32 k + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 220 + 80 + + + + 正常电压 + + + + + + + 90 + 0 + + + + + 90 + 16777215 + + + + 下限 + + + -30.000000000000000 + + + 30.000000000000000 + + + -21.000000000000000 + + + + + + + + 90 + 0 + + + + + 90 + 16777215 + + + + 上限 + + + -30.000000000000000 + + + 30.000000000000000 + + + 21.000000000000000 + + + + + + + Volts + + + + + + + + + + + 通道2 + + + + + + + + + 90 + 0 + + + + 通道2类型: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 120 + 0 + + + + + 120 + 16777215 + + + + + 加速度 + + + + + 速度 + + + + + 径向位移 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 90 + 0 + + + + 传感器名称: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 120 + 0 + + + + + 120 + 16777215 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 90 + 0 + + + + 灵敏度: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 120 + 0 + + + + + 120 + 16777215 + + + + + + + mv/ m/s^2 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 90 + 0 + + + + 采样率: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 120 + 0 + + + + + 120 + 16777215 + + + + + 32 k + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 220 + 80 + + + + 正常电压 + + + + + + + 90 + 0 + + + + + 90 + 16777215 + + + + 下限 + + + -30.000000000000000 + + + 30.000000000000000 + + + -21.000000000000000 + + + + + + + + 90 + 0 + + + + + 90 + 16777215 + + + + 上限 + + + -30.000000000000000 + + + 30.000000000000000 + + + 21.000000000000000 + + + + + + + Volts + + + + + + + + + + + + + 20 + 30 + 71 + 16 + + + + 备份 + + + + + + 142 + 302 + 42 + 72 + + + + + + + + 40 + 16777215 + + + + ===> + + + + + + + = + + + Qt::AlignCenter + + + + + + + + 40 + 16777215 + + + + <=== + + + + + + layoutWidget + groupBox_5 + groupBox_6 + tabWidget + checkBox_standby_1 + + + + + 10 + 480 + 738 + 37 + + + + + + + + 100 + 35 + + + + 确定 + + + + + + + + 100 + 35 + + + + 设置为默认值 + + + + + + + + 100 + 35 + + + + 加载预定义模板 + + + + + + + + 100 + 35 + + + + 测点名称 + + + + + + + + 100 + 35 + + + + 取消 + + + + + + + + 100 + 35 + + + + 打印 + + + + + + + + 100 + 35 + + + + 帮助 + + + + + + + + + 11 + 20 + 113 + 17 + + + + + + + 槽位号: + + + + + + + 7 + + + + + + + + + 353 + 213 + 42 + 72 + + + + + + + + 40 + 16777215 + + + + ===> + + + + + + + = + + + Qt::AlignCenter + + + + + + + + 40 + 16777215 + + + + <=== + + + + + + + + +