diff --git a/README.md b/README.md index a604f54..ecac0c7 100644 --- a/README.md +++ b/README.md @@ -87,8 +87,8 @@ https://www.sqlite.org/docs.html 加液 液位变换 -排液 1.控制蠕动泵 - 2.液位变换 +排液 1.控制蠕动泵 + 2.液位变换 消毒 1. 上报时间,计算剩余时间. 2. 上报所有传感器信息. diff --git a/src/service/disinfection_ctl_service.cpp b/src/service/disinfection_ctl_service.cpp index a9a0cfe..29cb524 100644 --- a/src/service/disinfection_ctl_service.cpp +++ b/src/service/disinfection_ctl_service.cpp @@ -69,37 +69,33 @@ void DisinfectionCtrlService::startDisinfection(int loglevel, float roomVol) { thisThread.sleepForMs(1000); } - { m_isDisinfectionRunning = false; } + m_remaintime = 0; + logger->info("stop disinfection {}", m_disinfectionID); + + m_zcanHost->writeio(0, 0); + m_zcanHost->writeio(1, 0); + sleep(1); + m_zcanHost->writeio(2, 0); + m_zcanHost->writeio(3, 0); + sleep(1); + m_zcanHost->writeio(4, 0); + m_zcanHost->writeio(5, 0); + sleep(1); + m_zcanHost->pumpctrl_c1004(2, 300, 0); + m_disinfectionWorkState = 0; })); } int DisinfectionCtrlService::getDisinfectionWorkState() { return m_disinfectionWorkState; } -int DisinfectionCtrlService::getReplenishingFluidsWorkState() { return m_replenishingFluidsWorkState; } -int DisinfectionCtrlService::getDrainingWorkState() { return m_drainingWorkState; } -void DisinfectionCtrlService::pauseDisinfection() { m_drainingWorkState = 2; } -void DisinfectionCtrlService::continueDisinfection() { m_drainingWorkState = 1; } +void DisinfectionCtrlService::pauseDisinfection() { m_disinfectionWorkState = 2; } +void DisinfectionCtrlService::continueDisinfection() { m_disinfectionWorkState = 1; } void DisinfectionCtrlService::stopDisinfection() { lock_guard lock(lock_); - if (m_disinfectionThread) { m_disinfectionThread->join(); m_disinfectionThread = nullptr; } - m_remaintime = 0; - logger->info("stop disinfection {}", m_disinfectionID); - - m_zcanHost->writeio(0, 0); - m_zcanHost->writeio(1, 0); - sleep(1); - m_zcanHost->writeio(2, 0); - m_zcanHost->writeio(3, 0); - sleep(1); - m_zcanHost->writeio(4, 0); - m_zcanHost->writeio(5, 0); - sleep(1); - m_zcanHost->pumpctrl_c1004(2, 300, 0); - m_drainingWorkState = 0; } bool DisinfectionCtrlService::isDisinfectionRunning() { lock_guard lock(lock_); @@ -115,24 +111,57 @@ string DisinfectionCtrlService::getDisinfectionID() { return m_disinfectionID; } +// 加液 void DisinfectionCtrlService::startReplenishingFluids() { + lock_guard lock(lock_); + + if (m_disinfectionThread) { + m_disinfectionThread->join(); + m_disinfectionThread = nullptr; + } + logger->info("startReplenishingFluids"); - m_zcanHost->pumpctrl_c1004(1, 300, 1000); + m_zcanHost->pumpctrl_c1004(1, 300, 300, 1, 20); m_replenishingFluidsWorkState = 1; } +// 停止加液 void DisinfectionCtrlService::stopReplenishingFluids() { + lock_guard lock(lock_); + logger->info("stopReplenishingFluids"); - m_zcanHost->pumpctrl_c1004(1, 300, 0); + m_zcanHost->pumpctrl_c1004(1, 300, 0, 1, 20); m_replenishingFluidsWorkState = 0; -} + if (m_disinfectionThread) { + m_disinfectionThread->join(); + m_disinfectionThread = nullptr; + } +} +// 开始排液 void DisinfectionCtrlService::startDraining() { + lock_guard lock(lock_); + logger->info("startDraining"); - m_zcanHost->pumpctrl_c1004(1, 300, -1000); - m_replenishingFluidsWorkState = 1; + m_zcanHost->pumpctrl_c1004(1, 300, -300, 1, 20); + m_drainingWorkState = 1; + + if (m_disinfectionThread) { + m_disinfectionThread->join(); + m_disinfectionThread = nullptr; + } } +// 停止排液体 void DisinfectionCtrlService::stopDraining() { + lock_guard lock(lock_); + logger->info("stopDraining"); - m_zcanHost->pumpctrl_c1004(1, 300, 0); - m_replenishingFluidsWorkState = 0; + m_zcanHost->pumpctrl_c1004(1, 300, 0, 1, 20); + m_drainingWorkState = 0; + + if (m_disinfectionThread) { + m_disinfectionThread->join(); + m_disinfectionThread = nullptr; + } } +int DisinfectionCtrlService::getReplenishingFluidsWorkState() { return m_replenishingFluidsWorkState; } +int DisinfectionCtrlService::getDrainingWorkState() { return m_drainingWorkState; } \ No newline at end of file diff --git a/src/service/sensor_data_scan.cpp b/src/service/sensor_data_scan.cpp index 405a645..5d6cb93 100644 --- a/src/service/sensor_data_scan.cpp +++ b/src/service/sensor_data_scan.cpp @@ -74,7 +74,9 @@ int SensorDataScan::getChargingPump_PumpRPM() { return m_zcanHost->pumpctrl_c100 int SensorDataScan::getDisinfectantVolume() { // kpa; int pa = m_zcanHost->huacheng_pressure_sensor_get_pa(&m_pressure_sensor_data[0]); - return pa; + // m(kg)=2.11*P(kPa) + pa = 1; // TODO 检查传感器异常,则不允许加液 + return 2.11 * pa * 1000; } int SensorDataScan::getWaterImmersionSensor1() { return m_waterImmersionSensor1 ? 1 : 0; } diff --git a/src/service/sensor_data_scan.hpp b/src/service/sensor_data_scan.hpp index 8df5bfc..31ff600 100644 --- a/src/service/sensor_data_scan.hpp +++ b/src/service/sensor_data_scan.hpp @@ -76,7 +76,7 @@ class SensorDataScan : public enable_shared_from_this { int getSprinkler_PumpRPM(); int getChargingPump_PumpRPM(); - int getDisinfectantVolume(); + int getDisinfectantVolume(); // g int getWaterImmersionSensor1(); int getWaterImmersionSensor2();