From 738f07624cc9f1511ee2423ece562d48b098aa46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B5=B7?= Date: Thu, 16 Apr 2026 21:53:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0GVF=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=A4=84=E7=90=86=E7=BA=BF=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/RequstDataProcesser.cpp | 19 +++++++++++++++++-- src/RequstDataProcesser.h | 3 +++ src/src.pro | 6 ++++-- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/RequstDataProcesser.cpp b/src/RequstDataProcesser.cpp index a37fe0e..cd9fbcf 100644 --- a/src/RequstDataProcesser.cpp +++ b/src/RequstDataProcesser.cpp @@ -6,11 +6,13 @@ #include #include #include -#include +#include "SyncGvfFileDataTask.h" + RequstDataProcesser::RequstDataProcesser(QObject *parent) : QTcpSocket{parent} -{} +{ +} void RequstDataProcesser::OnReplayClient(const QByteArray& replay_data) { @@ -114,17 +116,30 @@ void RequstDataProcesser::processStartMeasureCmd(const QString& device_guid, con replay_info = QStringLiteral(u"测量数据GVF文件未找到"); } else { replay_info = measure_data_gvf_filename; + SyncGvfFileDataTask* sync_gvf_data_task = new SyncGvfFileDataTask; + connect(sync_gvf_data_task, &SyncGvfFileDataTask::finished, sync_gvf_data_task, &SyncGvfFileDataTask::deleteLater); + connect(sync_gvf_data_task, &SyncGvfFileDataTask::syncGvfData, this, &RequstDataProcesser::OnReplayClient); + connect(this, &RequstDataProcesser::stopSyncGvfFileDataTask, sync_gvf_data_task, &SyncGvfFileDataTask::OnStop); + sync_gvf_data_task->start(); } QByteArray replay_data; QDataStream replay_data_stream(&replay_data, QIODevice::Append); replay_data_stream << QString("START") << ok << replay_info; QMetaObject::invokeMethod(this, "OnReplayClient", Qt::QueuedConnection, Q_ARG(QByteArray, replay_data)); } + + SyncGvfFileDataTask* sync_gvf_data_task = new SyncGvfFileDataTask; + connect(sync_gvf_data_task, &SyncGvfFileDataTask::finished, sync_gvf_data_task, &SyncGvfFileDataTask::deleteLater, Qt::DirectConnection); + connect(sync_gvf_data_task, &SyncGvfFileDataTask::syncGvfData, this, &RequstDataProcesser::OnReplayClient, Qt::QueuedConnection); + connect(this, &RequstDataProcesser::stopSyncGvfFileDataTask, sync_gvf_data_task, &SyncGvfFileDataTask::OnStop, Qt::DirectConnection); + sync_gvf_data_task->start(); } void RequstDataProcesser::processStopMeasureCmd(const QString& device_guid) { MeasureDeviceController::Instance()->StopMeasure(device_guid); + emit stopSyncGvfFileDataTask(); + QByteArray replay_data; QDataStream replay_data_stream(&replay_data, QIODevice::Append); replay_data_stream << QString("STOP") << true << QStringLiteral(u"停止测量完成"); diff --git a/src/RequstDataProcesser.h b/src/RequstDataProcesser.h index bc11eb4..fff7ab9 100644 --- a/src/RequstDataProcesser.h +++ b/src/RequstDataProcesser.h @@ -15,6 +15,9 @@ public: public slots: void OnReplayClient(const QByteArray& replay_data); +signals: + void stopSyncGvfFileDataTask(); + private: void processStartMeasureCmd(const QString& device_guid, const QString& cmd_data); void processStopMeasureCmd(const QString& device_guid); diff --git a/src/src.pro b/src/src.pro index 7c7b8be..168db56 100644 --- a/src/src.pro +++ b/src/src.pro @@ -23,13 +23,15 @@ SOURCES += \ $${PWD}/MeasureServer.cpp \ $${PWD}/main.cpp \ $${PWD}/MeasureDeviceController.cpp \ - $${PWD}/RequstDataProcesser.cpp + $${PWD}/RequstDataProcesser.cpp \ + SyncGvfFileDataTask.cpp HEADERS += \ $${PWD}/MeasureServer.h \ $${PWD}/MeasureDeviceController.h \ $${PWD}/MeasureServiceProtocol.h \ - $${PWD}/RequstDataProcesser.h + $${PWD}/RequstDataProcesser.h \ + SyncGvfFileDataTask.h DEFINES += ENABLE_DEBUG