From 10cd599fa89aa5b1bbdc36524acf5125023fe081 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Fri, 8 Sep 2023 20:02:26 +0800 Subject: [PATCH] update --- src/service/disinfection_ctl_service.cpp | 35 +++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/service/disinfection_ctl_service.cpp b/src/service/disinfection_ctl_service.cpp index 429fc81..2907cea 100644 --- a/src/service/disinfection_ctl_service.cpp +++ b/src/service/disinfection_ctl_service.cpp @@ -613,9 +613,42 @@ void DisinfectionCtrlService::startDraining() { m_disinfectionThread = nullptr; } + m_disinfectionThread.reset(new Thread("disinfectionThread", [this]() { + ThisThread thisThread; + + m_deviceIoControlService->drainingPump_open(); + logger->info("startDraining "); + + auto startdrainingtime = zsteady_clock().now(); + + zsteady_tp volumeReachZeroTime; + bool volumeReachZeroFlag = false; + + while (!thisThread.getExitFlag()) { + int32_t nowvolume = m_deviceIoControlService->getDisinfectantVolume_g(); + logger->info("draining remain {} g", nowvolume); + if (!volumeReachZeroFlag && nowvolume == 0) { + volumeReachZeroTime = zsteady_clock().now(); + volumeReachZeroFlag = true; + } + + if (volumeReachZeroFlag) { + logger->info("stopDraining after {} s", 30 - zsteady_clock().elapsedTimeS(volumeReachZeroTime)); + if (zsteady_clock().elapsedTimeS(volumeReachZeroTime) > 30) { + break; + } + } + + thisThread.sleepForMs(1000); + } + logger->info("stopDraining"); + // replenishingFluidsPump_close(); + m_deviceIoControlService->drainingPump_close(); + m_drainingWorkState = 0; + })); + logger->info("startDraining"); // drainingPump_open(); - m_deviceIoControlService->drainingPump_open(); m_drainingWorkState = 1; } /**