diff --git a/acceleration.ui b/acceleration.ui index 546cd48..b2e24e1 100644 --- a/acceleration.ui +++ b/acceleration.ui @@ -107,7 +107,7 @@ - 1 + 0 @@ -403,7 +403,7 @@ - 1 + 0 diff --git a/connect.cpp b/connect.cpp index 147c518..ef9c702 100644 --- a/connect.cpp +++ b/connect.cpp @@ -14,6 +14,7 @@ Connect::Connect(QWidget *parent) : QRegularExpression ipRegex(R"(^(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}$)"); QRegularExpressionValidator *ipValidator = new QRegularExpressionValidator(ipRegex, this); ui->lineEdit_IP->setValidator(ipValidator); + ui->lineEdit_IP->setText(g_strServerIp); } Connect::~Connect() diff --git a/data_config.h b/data_config.h index ca3617c..2aa5d38 100644 --- a/data_config.h +++ b/data_config.h @@ -216,6 +216,7 @@ enum CMTCommand { kCleanSubCardCfg = 29, // 清理子板配置 kCleanSubCardLatch = 30, // 清理子板特定通道的Latch状态 kConfigMQTTBrokerInfo = 31, // 配置与获取MQTT broker信息 + kConfigDeviceID = 32, // 配置设备编号,编号范围为1~99 }; enum RS485Baudrate { kBaudrate2400 = 0, @@ -785,6 +786,23 @@ typedef struct { uint8_t sid; // 通道编号,1-4 } CleanLatchStatusReq; +typedef struct { + uint8_t head[3]; // 固定值:0xAA55AA + uint8_t cmd; // kConfigDeviceID + uint8_t version; // 版本号,默认为1 + uint8_t sub_cmd; // 0: get, 1: set + uint8_t device_id; // 设备编号 0~99 +} DeviceIDConfigReq; + +typedef struct { + uint8_t head[3]; // 固定值:0xAA55AA + uint8_t cmd; // kConfigDeviceID + uint8_t version; // 版本号,默认为1 + uint8_t code; // success:0, failure: others + uint8_t sub_cmd; // 0: get, 1: set + uint8_t device_id; // 设备编号 +} DeviceIDConfigRsp; + struct BaseHeader { uint8_t head[3]; // 固定 0xAA 0x55 0xAA uint8_t cmd; diff --git a/mainwindow.cpp b/mainwindow.cpp index 0f7d0f6..3fa4c17 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -28,6 +28,7 @@ #include #include "dc_outputs.h" #include "mqtt_config.h" +#include QString g_strServerIp; QString g_version; @@ -100,6 +101,8 @@ MainWindow::MainWindow(QWidget *parent) QObject::connect(ui->action_mac, &QAction::triggered, this, &MainWindow::onMACConfig); QObject::connect(ui->action_time, &QAction::triggered, this, &MainWindow::onSetTime); QObject::connect(ui->action_mqtt, &QAction::triggered, this, &MainWindow::onMqttConfig); + 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(); @@ -880,6 +883,18 @@ void MainWindow::readData(const QByteArray &data) { map_slot_config[config_sub_card_progress.subcard_id].slot_label->setStyleSheet("QLabel { color :#FF0000; font: bold 16px}"); statusBar()->showMessage(status, 2000); } + }else if(cmd == kConfigDeviceID){ + DeviceIDConfigRsp device_config_rsp; + memcpy(&device_config_rsp, data.data(), sizeof(DeviceIDConfigRsp)); + if(device_config_rsp.code == 0){ + statusBar()->showMessage("配置成功!", 2000); + }else if(device_config_rsp.code == 1){ + statusBar()->showMessage("配置失败!", 2000); + } + if(device_config_rsp.sub_cmd == 0){ + QString str = QString("设备ID: %1").arg(device_config_rsp.device_id); + QMessageBox::information(this, QStringLiteral("提示"), str); + } } } @@ -916,6 +931,31 @@ void MainWindow::onMqttConfig(){ mqtt_config->setWindowModality(Qt::ApplicationModal); mqtt_config->show(); } +void MainWindow::onGetDeviceID(){ + DeviceIDConfigReq config_device_id = { {0xAA, 0x55, 0xAA}, kConfigDeviceID, 1,0,{}}; + int length = sizeof(DeviceIDConfigReq); + qint64 bytesWritten = m_tcpClient->sendData((char*)&config_device_id, length); + m_tcpClient->waitForRead(); + qDebug() << "bytesWritten: " << bytesWritten; +} +void MainWindow::onConfigDeviceID(){ + QString strTips =QString("请输入0到100之间的数值"); + + bool ok = false; + int value = QInputDialog::getInt(this, tr("输入整数对话框"), strTips, 1, 1, 10, 1, &ok); + if(!ok) return; + + if(value < 1){ + QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("请输入正确的数字!")); + return ; + } + DeviceIDConfigReq config_device_id = { {0xAA, 0x55, 0xAA}, kConfigDeviceID, 1,1,{}}; + config_device_id.device_id = value; + int length = sizeof(DeviceIDConfigReq); + qint64 bytesWritten = m_tcpClient->sendData((char*)&config_device_id, length); + m_tcpClient->waitForRead(); + qDebug() << "bytesWritten: " << bytesWritten; +} void MainWindow::onSetTime(){ SetTimingReq set_time_req = { {0xAA, 0x55, 0xAA}, kTimingCmd, 1,0 }; int length = sizeof(SetTimingReq); diff --git a/mainwindow.h b/mainwindow.h index 4dbd335..bb8c80e 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -77,6 +77,8 @@ private slots: void onMACConfig(); void onSetTime(); void onMqttConfig(); + void onConfigDeviceID(); + void onGetDeviceID(); void onMenuActionTriggered(); void on_pushButton_slot_clicked(); diff --git a/mainwindow.ui b/mainwindow.ui index 3b4752e..8f2ed9a 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -1088,6 +1088,8 @@ + + @@ -1144,6 +1146,16 @@ MQTT配置 + + + 设备ID配置 + + + + + 获取设备ID + + diff --git a/singlerelay.ui b/singlerelay.ui index aa8fe67..e670241 100644 --- a/singlerelay.ui +++ b/singlerelay.ui @@ -39,19 +39,6 @@ 确 定 - - - - 750 - 535 - 71 - 20 - - - - NCS6100T - - diff --git a/tmrrelayassociation.ui b/tmrrelayassociation.ui index 7f3e769..7679492 100644 --- a/tmrrelayassociation.ui +++ b/tmrrelayassociation.ui @@ -261,19 +261,6 @@ 取 消 - - - - 740 - 600 - 71 - 20 - - - - NCS6100T - -