From ce9c8fd630f14277580780da64675fb97025a6e3 Mon Sep 17 00:00:00 2001 From: UnknownObject Date: Fri, 19 Aug 2022 12:56:04 +0800 Subject: [PATCH] fix server bug --- ClockCounter/ACIMode.cpp | 24 ++++++++++++++++++------ ClockCounter/ACIMode.h | 1 + ClockCounter/ClockCounter.cpp | 13 ++++++++----- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/ClockCounter/ACIMode.cpp b/ClockCounter/ACIMode.cpp index 0bb5986..105fcf9 100644 --- a/ClockCounter/ACIMode.cpp +++ b/ClockCounter/ACIMode.cpp @@ -5,6 +5,7 @@ ACIMode::ACIMode(QWidget* parent) : QMainWindow(parent) client = nullptr; server = nullptr; OperationMode = -3; + ServerRunning = false; ui.setupUi(this); ui.Workmode_Client->setChecked(true); ui.Workmode_Server->setChecked(false); @@ -46,20 +47,33 @@ void ACIMode::CleanUp() void ACIMode::StartACISystem() { - CleanUp(); OperationMode = ProcessRadio(ui.Workmode_Client->isChecked(), ui.Workmode_Server->isChecked()); switch (OperationMode) { case 0: { + CleanUp(); + OperationMode = 0; client = new ACIClient(ui.PortNumber->toPlainText().toInt()); + this->hide(); break; } case 1: { - server = new ACIServer(ui.PortNumber->toPlainText().toInt()); - ServerDataStorage::DDROutputAdd("start-timer", RequestedTimerStart); - server->ThreadRun(); + if (ServerRunning) + { + CleanUp(); + ServerRunning = false; + ui.BtnStart->setText("启动通信系统"); + } + else + { + server = new ACIServer(ui.PortNumber->toPlainText().toInt()); + ServerDataStorage::DDROutputAdd("start-timer", RequestedTimerStart); + server->ThreadRun(); + ServerRunning = true; + ui.BtnStart->setText("关闭通信系统"); + } break; } default: @@ -68,8 +82,6 @@ void ACIMode::StartACISystem() break; } } - if (OperationMode == 0) - this->hide(); } int ACIMode::GetOperationMode() diff --git a/ClockCounter/ACIMode.h b/ClockCounter/ACIMode.h index d8f1a39..4637675 100644 --- a/ClockCounter/ACIMode.h +++ b/ClockCounter/ACIMode.h @@ -30,6 +30,7 @@ private: int OperationMode; ACIClient* client; ACIServer* server; + bool ServerRunning; Ui::ACIModeWindow ui; }; diff --git a/ClockCounter/ClockCounter.cpp b/ClockCounter/ClockCounter.cpp index 2b008ea..f9be516 100644 --- a/ClockCounter/ClockCounter.cpp +++ b/ClockCounter/ClockCounter.cpp @@ -56,7 +56,10 @@ void ClockCounter::StartTimer() { MouseClick(PreClickCount, PreClickPosition); if (aci_mode_window.GetOperationMode() == 0) + { aci_mode_window.RequestRemoteTimer(); + this->setWindowTitle("软件执行计时器: 远程计时请求已发出"); + } else { CountTimer.start(); @@ -69,6 +72,11 @@ void ClockCounter::StartTimer() void ClockCounter::StopTimer() { CountTimer.stop(); + if (GlobalVari::ServerRequested && (aci_mode_window.GetOperationMode() == 1)) + { + GlobalVari::ServerRequested = false; + ServerStatusChecker.start(); + } ui.BtnStartTimer->setText("重置计时器"); this->setWindowTitle("软件执行计时器: 计时已停止"); } @@ -81,8 +89,6 @@ void ClockCounter::ShowACIModeWindow() aci_mode_window.activateWindow(); aci_mode_window.setWindowState((aci_mode_window.windowState() & ~Qt::WindowMinimized) | Qt::WindowActive); ServerStatusChecker.start(); - /*this->hide(); - WindowUpdater.start();*/ } } @@ -146,10 +152,7 @@ void ClockCounter::WindowUpdateCallback() void ClockCounter::ServerStatusCallback() { if (aci_mode_window.GetOperationMode() == 0) - { ServerStatusChecker.stop(); - this->hide(); - } else if (aci_mode_window.GetOperationMode() == 1) { if (GlobalVari::ServerRequested)