From e198dbdbb04e0dd491a4d8289eed70af51069b57 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Thu, 24 Aug 2023 20:02:00 +0800 Subject: [PATCH] update --- src/main.cpp | 25 +++++++++++++++++------- src/service/device_io_control_service.cpp | 32 +++++++++++++++++++++++++++++++ src/service/disinfection_ctl_service.cpp | 21 ++++++++++++++------ 3 files changed, 65 insertions(+), 13 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index b9f3fcb..9f506a0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6,6 +6,11 @@ using namespace iflytop; using namespace core; using namespace std; + +namespace iflytop { +bool g_preheat = false; +}; + /******************************************************************************* * MAIN => MAIN * *******************************************************************************/ @@ -25,12 +30,19 @@ int Main::main(int argc, char *argv[]) { /** * @brief 解析命令行参数 */ - // string device_id; - // auto cli = ((required("-device_id") & value("device_id", device_id)).doc("device_id")); - // if (!parse(argc, argv, cli)) { - // cout << make_man_page(cli, argv[0]); - // exit(-1); - // } + string preheat; + auto cli = ((required("--preheat") & value("preheat", preheat)).doc("preheat")); + if (!parse(argc, argv, cli)) { + preheat = "true"; + // cout << make_man_page(cli, argv[0]); + // exit(-1); + } + if (preheat == "false") { + g_preheat = false; + } else { + g_preheat = true; + } + logger->info("preheat:{}:{}", preheat, g_preheat); /** * @brief 系统初始化 @@ -46,7 +58,6 @@ int Main::main(int argc, char *argv[]) { BUILD_AND_REG_SERRVICE(GConfig); GET_SERVICE(GConfig)->initialize(); - /** * @brief */ diff --git a/src/service/device_io_control_service.cpp b/src/service/device_io_control_service.cpp index 2a2de33..b0636a9 100644 --- a/src/service/device_io_control_service.cpp +++ b/src/service/device_io_control_service.cpp @@ -40,6 +40,38 @@ void DeviceIoControlService::startScan() { if (i % 3000 == 0) { // m_hpp272_data_1 m_zcanHost->hpp272_read_c1000(1, m_hpp272_data_1); + // hydrogen_peroxide_volume + // h2o_h2o2_rs + // temperature1 + // relative_humidity + // absolute_hydrogen_peroxide + // h2o_h2o2dew_point_temperature + // reserved1 + // water_volume + // water_vapor_pressure + // absolute_humidity + // water_vapor_saturation_pressure_h2o + // temperature2 + // h2o2_vapor_pressure + // water_vapor_saturation_pressure_h2o_h2o2 + logger->info("---------hpp272_read_c1000---------"); + logger->info("hydrogen_peroxide_volume :{}", m_hpp272_data_1.hydrogen_peroxide_volume); + logger->info("h2o_h2o2_rs :{}", m_hpp272_data_1.h2o_h2o2_rs); + logger->info("temperature1 :{}", m_hpp272_data_1.temperature1); + logger->info("relative_humidity :{}", m_hpp272_data_1.relative_humidity); + logger->info("absolute_hydrogen_peroxide :{}", m_hpp272_data_1.absolute_hydrogen_peroxide); + logger->info("h2o_h2o2dew_point_temperature :{}", m_hpp272_data_1.h2o_h2o2dew_point_temperature); + logger->info("reserved1 :{}", m_hpp272_data_1.reserved1); + logger->info("water_volume :{}", m_hpp272_data_1.water_volume); + logger->info("water_vapor_pressure :{}", m_hpp272_data_1.water_vapor_pressure); + logger->info("absolute_humidity :{}", m_hpp272_data_1.absolute_humidity); + logger->info("water_vapor_saturation_pressure_h2o:{}", m_hpp272_data_1.water_vapor_saturation_pressure_h2o); + logger->info("temperature2 :{}", m_hpp272_data_1.temperature2); + logger->info("h2o2_vapor_pressure :{}", m_hpp272_data_1.h2o2_vapor_pressure); + logger->info("water_vapor_saturation_pressure_h2o_h2o2:{}", m_hpp272_data_1.water_vapor_saturation_pressure_h2o_h2o2); + logger->info(""); + + } if (i % 300 == 0) { diff --git a/src/service/disinfection_ctl_service.cpp b/src/service/disinfection_ctl_service.cpp index 0da939a..bfa7818 100644 --- a/src/service/disinfection_ctl_service.cpp +++ b/src/service/disinfection_ctl_service.cpp @@ -22,10 +22,16 @@ using namespace std; * */ -#define PRE_HEAT_TIME (2) +// #define PRE_HEAT_TIME (2) +#define PRE_HEAT_TIME (5 * 60) + #define DVALUE_COMPUTEPERIOD_TIME_S (15.0) #define MAX_VOLUME (5000) +namespace iflytop { +extern bool g_preheat; +} + DisinfectionCtrlService::DisinfectionCtrlService() {} void DisinfectionCtrlService::initialize() { GET_TO_SERVICE(m_zcanHost); @@ -108,7 +114,7 @@ void DisinfectionCtrlService::computeRemainTime(DisinfectionContext& context) { void DisinfectionCtrlService::initContext(DisinfectionContext& context, int loglevel, float roomVol) { context.m_disinfectionID = createDisinfectionID(); // m_remaintime = loglevel * 20 * 60; // 计算总的加热时间 - context.m_remaintime = PRE_HEAT_TIME + loglevel * 20 * 60 * (roomVol / 20.0); // 计算总的加热时间 + context.m_remaintime = PRE_HEAT_TIME + loglevel * 90 * 60; // 计算总的加热时间 m_disinfectionWorkState = 1; context.m_targetLoglevel = loglevel; context.m_nowLoglevel = 0; @@ -132,7 +138,8 @@ void DisinfectionCtrlService::initContext(DisinfectionContext& context, int logl m_zcanHost->warning_light_ctrl_c1002(1, 0, 0, 1, 0); m_deviceIoControlService->heartingPlate_setPower(true); context.csvlogger = m_disinfectionLogsManager->createNewLogger(context.m_disinfectionID); - context.csvlogger->write("time,h2o21,temp1,humi1,saturation1,h2o22,temp2,humi2,saturation2,h2o23,temp3,humi3,saturation3,dvalue,nowlog,targetlog,remaintime\n"); + context.csvlogger->write( + "time,h2o21,temp1,humi1,saturation1,h2o22,temp2,humi2,saturation2,h2o23,temp3,humi3,saturation3,dvalue,nowlog,targetlog,remaintime\n"); } void DisinfectionCtrlService::finishDisinfection(DisinfectionContext& context) { context.m_remaintime = 0; @@ -155,7 +162,7 @@ void DisinfectionCtrlService::finishDisinfection(DisinfectionContext& context) { } void DisinfectionCtrlService::processPreheatState(DisinfectionContext& context) { - if (context.m_preheatFlag && zsteady_clock().elapsedTimeS(context.m_starttp) > PRE_HEAT_TIME) { + if ((context.m_preheatFlag && zsteady_clock().elapsedTimeS(context.m_starttp) > PRE_HEAT_TIME) || !g_preheat) { logger->info("preheat finished {}", context.m_disinfectionID); // blower_setPower(true); m_deviceIoControlService->AirBlower_setState(true); @@ -241,7 +248,8 @@ void DisinfectionCtrlService::processDisinfectionState(DisinfectionContext& cont float nowh2o2 = m_context.h2o2data.max_h2o2; float humid = m_context.h2o2data.max_humid; - if (nowSatur > m_context.stoped_satur || nowh2o2 > m_context.stoped_gs || humid > m_context.stoped_satur) { + // humid > m_context.stoped_satur + if (nowSatur > m_context.stoped_satur || nowh2o2 > m_context.stoped_gs) { logger->info("stop sprayLiquid"); m_deviceIoControlService->sprayLiquidPump_close(); @@ -255,7 +263,8 @@ void DisinfectionCtrlService::processDisinfectionState(DisinfectionContext& cont float nowh2o2 = m_context.h2o2data.max_h2o2; float humid = m_context.h2o2data.max_humid; - if (nowSatur < m_context.continued_satur && nowh2o2 < m_context.continued_gs && humid < m_context.continued_satur) { + // && humid < m_context.continued_satur + if (nowSatur < m_context.continued_satur && nowh2o2 < m_context.continued_gs) { logger->info("start sprayLiquid"); m_deviceIoControlService->sprayLiquidPump_open();