From 6057634cf348e7df788e2d1ef5a4a4bd3d049e9e Mon Sep 17 00:00:00 2001 From: 95384 <664090429@qq.com> Date: Wed, 12 Mar 2025 15:57:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E9=94=AE=E4=B8=8B=E5=8F=91=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- micro_climate_config.pro.user | 6 +- widget.cpp | 125 ++++++++++++- widget.h | 8 + widget.ui | 336 +++++++++++++++++++++++++++++++++- 4 files changed, 469 insertions(+), 6 deletions(-) diff --git a/micro_climate_config.pro.user b/micro_climate_config.pro.user index 53bac21..4827d1e 100644 --- a/micro_climate_config.pro.user +++ b/micro_climate_config.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -77,7 +77,7 @@ Desktop Qt 5.12.9 MinGW 32-bit Desktop Qt 5.12.9 MinGW 32-bit qt.qt5.5129.win32_mingw73_kit - 0 + 1 0 0 @@ -320,7 +320,7 @@ false true - E:/Y/QT/build-micro_climate_config-Desktop_Qt_5_12_9_MinGW_32_bit-Debug + E:/Y/QT/build-micro_climate_config-Desktop_Qt_5_12_9_MinGW_32_bit-Release 1 diff --git a/widget.cpp b/widget.cpp index 7cb4721..e175dff 100644 --- a/widget.cpp +++ b/widget.cpp @@ -91,8 +91,11 @@ void Widget::disable__() ui->groupBox->setEnabled(false); ui->groupBox_2->setEnabled(false); ui->groupBox_3->setEnabled(false); - // 未打开串口时不让开加密页面 + // 未打开串口时不让开页面 ui->main_tabWidget->setTabEnabled(1, false); + ui->main_tabWidget->setTabEnabled(2, false); + + ui->Password_lineEdit->setEnabled(false); ui->ID_lineEdit->setEnabled(false); ui->label_10->setEnabled(false); @@ -105,8 +108,9 @@ void Widget::able__() ui->groupBox->setEnabled(true); ui->groupBox_2->setEnabled(true); ui->groupBox_3->setEnabled(true); - // 未打开串口时不让开加密页面 + // 未打开串口时不让开页面 ui->main_tabWidget->setTabEnabled(1, true); + ui->main_tabWidget->setTabEnabled(2, true); } uint16_t Widget::modbusCrc16(const uint8_t *data, const int len) @@ -390,6 +394,7 @@ void Widget::get_configdata() bits[i] ? error1_status_label[15 - i] -> setStyleSheet("QLabel { background-color :rgb(184, 0, 0); border-radius: 10px;}") \ : error1_status_label[15 - i] -> setStyleSheet("QLabel { background-color :rgb(0, 144, 0); border-radius: 10px;}"); } + QMessageBox::information(this, "提示", "数据接受成功"); } disconnect(Serial_port, &QSerialPort::readyRead, nullptr, nullptr); } @@ -901,3 +906,119 @@ void Widget::on_pushButton_9_clicked() disconnect(Serial_port, &QSerialPort::readyRead, nullptr, nullptr); connect(Serial_port, SIGNAL(readyRead()), this, SLOT(write_ack()), Qt::UniqueConnection); } + +void Widget::on_read_config_file_pushButton_clicked() +{ + //清空名字 + ui -> configFile_comboBox -> clear(); + ui -> configFile_comboBox ->addItem("请选择配置文件"); + + //创建QSetting对象,指定INI文件的路径和格式 + QSettings settings("config/config.ini", QSettings::IniFormat); + + //获取所有节名 + QStringList sections = settings.childGroups(); + foreach (const QString §ion, sections) + { + //当前节名称添加进下拉菜单 + ui -> configFile_comboBox -> addItem(section); + + qDebug() << "Section" << section; + } +} + + +uint16_t config_1R5_value; +uint16_t config_4R5_value; +uint16_t config_8R0_value; +uint16_t rssi_value; +uint16_t coeff_value; +uint16_t distance_NS_value; +uint16_t distance_WE_value; +uint16_t delay_value; +void Widget::on_configFile_comboBox_highlighted(const QString &arg1) +{ + //没东西提前返回 + if(arg1 == "请选择配置文件") + { + return; + } + //创建QSetting对象,指定INI文件的路径和格式 + QSettings settings("config/config.ini", QSettings::IniFormat); + + //读取配置 + config_1R5_value = settings.value(arg1 + "/value1R5").toInt(); + config_4R5_value = settings.value(arg1 + "/value4R5").toInt(); + config_8R0_value = settings.value(arg1 + "/value8R0").toInt(); + rssi_value = settings.value(arg1 + "/rssiValue").toInt(); + coeff_value = settings.value(arg1 + "/coefficientValue").toInt(); + distance_NS_value = settings.value(arg1 + "/diatanceNS").toInt(); + distance_WE_value = settings.value(arg1 + "/diatanceWE").toInt(); + delay_value = settings.value(arg1 + "/delayUsValue").toInt(); + + qDebug() << config_1R5_value; + qDebug() << config_4R5_value; + qDebug() << config_8R0_value; + qDebug() << rssi_value; + qDebug() << coeff_value; + qDebug() << distance_NS_value; + qDebug() << distance_WE_value; + qDebug() << delay_value; + + //展示配置 + ui -> write_1R5_lineEdit_2 -> setText("0." + QString::number(config_1R5_value)); + ui -> write_4R5_lineEdit_2 -> setText("0." + QString::number(config_4R5_value)); + ui -> write_8R0_lineEdit_2 -> setText("0." + QString::number(config_8R0_value)); + ui -> write_lineEdit_2 -> setText("0." + QString::number(rssi_value)); + ui -> write_Coefficient_lineEdit_2 -> setText(QString::number(float(coeff_value)/10000)); + ui -> write_distance_NS_lineEdit_2 -> setText(QString::number(float(distance_NS_value)/500) + " mm"); + ui -> write_distance_WE_lineEdit_2 -> setText(QString::number(float(distance_WE_value)/500) + " mm"); + ui -> write_delay_time_lineEdit_2 -> setText(QString::number(delay_value) + " us"); +} + +void Widget::on_pushButton_10_clicked() +{ + QByteArray sent_comand; + + sent_comand.append(static_cast(0x30)); + sent_comand.append(static_cast(0x10)); + sent_comand.append(static_cast(0x00)); + sent_comand.append(static_cast(0x1E)); + sent_comand.append(static_cast(0x00)); + sent_comand.append(static_cast(0x08)); + sent_comand.append(static_cast(0x10)); + sent_comand.append(static_cast(config_1R5_value >> 8)); + sent_comand.append(static_cast(config_1R5_value & 0x00FF)); + sent_comand.append(static_cast(config_4R5_value >> 8)); + sent_comand.append(static_cast(config_4R5_value & 0x00FF)); + sent_comand.append(static_cast(config_8R0_value >> 8)); + sent_comand.append(static_cast(config_8R0_value & 0x00FF)); + sent_comand.append(static_cast(rssi_value >> 8)); + sent_comand.append(static_cast(rssi_value & 0x00FF)); + sent_comand.append(static_cast(coeff_value >> 8)); + sent_comand.append(static_cast(coeff_value & 0x00FF)); + sent_comand.append(static_cast(distance_NS_value >> 8)); + sent_comand.append(static_cast(distance_NS_value & 0x00FF)); + sent_comand.append(static_cast(distance_WE_value >> 8)); + sent_comand.append(static_cast(distance_WE_value & 0x00FF)); + sent_comand.append(static_cast(delay_value >> 8)); + sent_comand.append(static_cast(delay_value & 0x00FF)); + + uint8_t sent_comand_u8[sent_comand.length()]; + for(int i = 0; i < sent_comand.length(); i++) + { + sent_comand_u8[i] = sent_comand[i]; + } + + uint16_t crc_16_val = modbusCrc16(sent_comand_u8, sent_comand.length()); + + sent_comand.append(crc_16_val >> 8); + sent_comand.append(crc_16_val); + + Serial_port->write(sent_comand); + + //连接信号与槽 + //断开所有其他的信号与槽连接 + disconnect(Serial_port, &QSerialPort::readyRead, nullptr, nullptr); + connect(Serial_port, SIGNAL(readyRead()), this, SLOT(write_ack()), Qt::UniqueConnection); +} diff --git a/widget.h b/widget.h index 5f0c426..2994e0b 100644 --- a/widget.h +++ b/widget.h @@ -11,6 +11,8 @@ #include #include #include +#include + QT_BEGIN_NAMESPACE namespace Ui { class Widget; } @@ -58,6 +60,12 @@ private slots: void on_pushButton_9_clicked(); + void on_read_config_file_pushButton_clicked(); + + void on_configFile_comboBox_highlighted(const QString &arg1); + + void on_pushButton_10_clicked(); + private: Ui::Widget *ui; //关闭窗口提示 diff --git a/widget.ui b/widget.ui index 571e1b9..681e5eb 100644 --- a/widget.ui +++ b/widget.ui @@ -32,7 +32,7 @@ 微气象传感器调试助手 - + @@ -1684,6 +1684,301 @@ border-radius: 10px; /* 圆角半径 */ + + + 快速配置 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + 换能器表面距离NS: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 换能器参数1R5: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + true + + + + + + + + + + 粘度修正系数: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 换能器参数8R0: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + true + + + + + + + + + + 下发配置 + + + + + + + + + + + + + true + + + + + + + + + + RSSI有效范围: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + true + + + + + + Qt::LogicalMoveStyle + + + + + + + + + + + + + true + + + + + + + + + + 读取配置文件 + + + + + + + 换能器参数4R5: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 换能器匹配层延时: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 换能器表面距离WE: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 加密 @@ -1797,6 +2092,45 @@ border-radius: 10px; /* 圆角半径 */ + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + +