From 0b173aaab46e0f4fae9aff33d192adba1f25778c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cwangbo=E2=80=9D?= <“mailbowang@163.com”> Date: Mon, 30 Sep 2024 13:02:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=B7=A5=E9=A2=91=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CableTool/widget.cpp | 89 +++++++++++++++++++++++++++++++++++++++++++- CableTool/widget.h | 8 ++++ 2 files changed, 95 insertions(+), 2 deletions(-) diff --git a/CableTool/widget.cpp b/CableTool/widget.cpp index 9800b9b..3325979 100644 --- a/CableTool/widget.cpp +++ b/CableTool/widget.cpp @@ -590,6 +590,21 @@ void Widget::uiDevStateRefresh() ui->stateDownTimeLabel->setText(QString::number(clientDevState.scDownTime)); } +void Widget::uiPowerFrequencyRefresh() +{ + int row = ui->frequencyTable->rowCount(); + int column = ui->frequencyTable->columnCount(); + + for(int32_t i = 0; i < row; i++) + { + for(int32_t j = 0; j < column; j++) + { + QString temp; + temp.sprintf("%d", powerFre[ui->freChBox->currentText().toInt() - 1][column * i + j]); + ui->frequencyTable->item(i, j)->setText(temp); + } + } +} void Widget::protoContact(char *data) { @@ -707,6 +722,44 @@ int Widget::protoWaveDataUploadReply(char *data) return 0; } +/* 工频录波文件请求处理. */ +int Widget::protoPowerFrequency(char *data) +{ + mul_head_t *header = reinterpret_cast(data + sizeof(proto_head_t)); + + /* 数据头校验. */ + qDebug() << "recv:index:" << header->index << "freIndex:" << freIndex << "len:" << header->len << endl; + if (header->index != freIndex + || header->len > UPDATE_DATA_SIZE) + { + return -1; + } + + /* 获取文件. */ + memcpy(reinterpret_cast(powerFre) + header->index * UPDATE_DATA_SIZE, data + sizeof(proto_head_t) + sizeof(mul_head_t), header->len); + + /* 通知发包线程进入下个状态. */ + if (header->len < UPDATE_DATA_SIZE) + { + freIndex = 0; + ui->upFreIndexLabel->setText("下载完成"); + QMessageBox::information(this, "SUCCEED", "工频录波文件下载完成.", QMessageBox::Ok); + buttonEnable(true); + uiPowerFrequencyRefresh(); + } + else + { + freIndex = header->index + 1; + sendMsgDevicePowerFrequencyGet(); + QString temp; + temp.sprintf("%d / 10", freIndex + 1); + ui->upFreIndexLabel->setText(temp); + } + + return 0; +} + + int Widget::protoState(char *data) { char *pbody = data + sizeof(proto_head_t); @@ -1060,6 +1113,32 @@ int Widget::sendMsgDeviceStateGet() return 0; } +int Widget::sendMsgDevicePowerFrequencyGet() +{ + char buf[2048] = {0}; + uint32_t *crc = nullptr; + + proto_head_t *header = reinterpret_cast(buf); + mul_head_t *m_head = (mul_head_t*)(buf + sizeof(proto_head_t)); + + /* 初始化报文头. */ + protoHeaderInit(header, sizeof(proto_head_t) + sizeof(mul_head_t), clientDevInfo.id, DEBUG_CT_PRV_REQUEST, DEBUG_PRV_POWER); + + m_head->index = freIndex; + m_head->len = 0; + + /* 计算校验位. */ + crc = reinterpret_cast(buf + header->len); + *crc = crc32(buf, header->len); + + /* 计算校验位. */ + HexPrint(__FUNCTION__, buf, header->len + 4); + writeData(buf, header->len + 4); + + return 0; +} + + int Widget::sendMsgWaveCol() { @@ -1408,6 +1487,13 @@ void Widget::on_stateRefreshButton_clicked() sendMsgDeviceStateGet(); } +void Widget::on_freChBox_currentIndexChanged(int index) +{ + /* 工频数据通道选择按钮. */ + Q_UNUSED(index); + uiPowerFrequencyRefresh(); +} + void Widget::on_freRefreshButton_clicked() { /* 刷新工频数据. */ @@ -1415,8 +1501,7 @@ void Widget::on_freRefreshButton_clicked() QString temp; temp.sprintf("%d / 10", freIndex); ui->upFreIndexLabel->setText(temp); - //work->multipleIndexSet(freInde); - //work->stateSet(CM_usart::WS_POWER_FRE_GET); + sendMsgDevicePowerFrequencyGet(); /* 关闭按钮. */ buttonEnable(false); diff --git a/CableTool/widget.h b/CableTool/widget.h index 739aa5b..7d96693 100644 --- a/CableTool/widget.h +++ b/CableTool/widget.h @@ -53,6 +53,8 @@ private slots: void on_stateRefreshButton_clicked(); + void on_freChBox_currentIndexChanged(int index); + void on_freRefreshButton_clicked(); void on_waveColButton_clicked(); @@ -91,6 +93,8 @@ private: void uiDevRealDataRefresh(); void uiDevStateRefresh(); + + void uiPowerFrequencyRefresh(); void protoContact(char *data); @@ -104,6 +108,8 @@ private: int protoWaveDataUploadReply(char *data); + int protoPowerFrequency(char *data); + int protoState(char *data); int paraseProtocols(char *data); int snedMsgDeviceInfoGet(); @@ -119,6 +125,8 @@ private: int sendMsgDeviceWaveDataGet(); int sendMsgDeviceStateGet(); + + int sendMsgDevicePowerFrequencyGet(); int sendMsgWaveCol();