From 8eb5e8c34f5618365fd1bc4278d2563fcbbd9864 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Thu, 24 Aug 2023 12:31:27 +0800 Subject: [PATCH] fix some bug --- src/main_control_service.cpp | 14 ++++++--- src/service/device_io_control_service.cpp | 31 ++++++++++++++---- src/service/device_io_control_service.hpp | 4 +-- src/service/disinfection_ctl_service.cpp | 52 +++++++++++++++++-------------- src/service/disinfection_ctl_service.hpp | 1 + src/service/disinfection_logs_manager.cpp | 9 +++++- 6 files changed, 75 insertions(+), 36 deletions(-) diff --git a/src/main_control_service.cpp b/src/main_control_service.cpp index 916dee9..2689f39 100644 --- a/src/main_control_service.cpp +++ b/src/main_control_service.cpp @@ -33,6 +33,13 @@ static T jsonGet(json j) { void MainControlService::initialize() { GET_TO_SERVICE(m_zconfig); + // m_dbService.reset(new DBService()); + // m_dbService->initialize(); + + BUILD_AND_REG_SERRVICE(DBService); + GET_SERVICE(DBService)->initialize(); + GET_TO_SERVICE(m_dbService); + /** * @brief 构造系统中的单例服务 */ @@ -52,7 +59,6 @@ void MainControlService::initialize() { GET_SERVICE(DeviceIoControlService)->initialize(); GET_TO_SERVICE(m_deviceIoControlService); - m_deviceIoControlService->startScan(); /** @@ -107,9 +113,6 @@ void MainControlService::initialize() { }); m_iflytopwsService->startListen(); - m_dbService.reset(new DBService()); - m_dbService->initialize(); - m_reportThread.reset(new Thread("reportThread", [this]() { ThisThread thisThread; while (!thisThread.getExitFlag()) { @@ -149,6 +152,9 @@ json MainControlService::createSensorDataJson() { report["temp_1"] = m_deviceIoControlService->getH2O2SenSorData1().temp; report["humid_1"] = m_deviceIoControlService->getH2O2SenSorData1().humid; report["saturation_1"] = m_deviceIoControlService->getH2O2SenSorData1().saturation; + + // logger->info("m_deviceIoControlService->getH2O2SenSorData1().h2o2 {}", m_deviceIoControlService->getH2O2SenSorData1().h2o2); + report["h2o2_2"] = -1; report["temp_2"] = -1; report["humid_2"] = -1; diff --git a/src/service/device_io_control_service.cpp b/src/service/device_io_control_service.cpp index 75d9a49..2a2de33 100644 --- a/src/service/device_io_control_service.cpp +++ b/src/service/device_io_control_service.cpp @@ -112,14 +112,32 @@ void DeviceIoControlService::heartingPlate_setPower(bool val) { int DeviceIoControlService::getSprinkler_PumpRPM() { return m_zcanHost->pumpctrl_c1004_get_speed_cache(2); } int DeviceIoControlService::getChargingPump_PumpRPM() { return m_zcanHost->pumpctrl_c1004_get_speed_cache(1); } -void DeviceIoControlService::drainingPump_open() { m_zcanHost->pumpctrl_c1004(1, 100, -300, 1, 20); } -void DeviceIoControlService::drainingPump_close() { m_zcanHost->pumpctrl_c1004(1, 100, 0, 1, 20); } +void DeviceIoControlService::drainingPump_open() { + logger->info("drainingPump_open"); + m_zcanHost->pumpctrl_c1004(1, 100, -300, 1, 20); +} +void DeviceIoControlService::drainingPump_close() { + logger->info("drainingPump_close"); + m_zcanHost->pumpctrl_c1004(1, 100, 0, 1, 20); +} -void DeviceIoControlService::replenishingFluidsPump_open() { m_zcanHost->pumpctrl_c1004(1, 100, 300, 1, 20); } -void DeviceIoControlService::replenishingFluidsPump_close() { m_zcanHost->pumpctrl_c1004(1, 100, 0, 1, 20); } +void DeviceIoControlService::replenishingFluidsPump_open() { + logger->info("replenishingFluidsPump_open"); + m_zcanHost->pumpctrl_c1004(1, 100, 300, 1, 20); +} +void DeviceIoControlService::replenishingFluidsPump_close() { + logger->info("replenishingFluidsPump_close"); + m_zcanHost->pumpctrl_c1004(1, 100, 0, 1, 20); +} -void DeviceIoControlService::sprayLiquidPump_open() { m_zcanHost->pumpctrl_c1004(2, 100, 200, 1, 15); } -void DeviceIoControlService::sprayLiquidPump_close() { m_zcanHost->pumpctrl_c1004(2, 100, 0, 1, 15); } +void DeviceIoControlService::sprayLiquidPump_open() { + logger->info("sprayLiquidPump_open"); + m_zcanHost->pumpctrl_c1004(2, 100, 200, 1, 15); +} +void DeviceIoControlService::sprayLiquidPump_close() { + logger->info("sprayLiquidPump_close"); + m_zcanHost->pumpctrl_c1004(2, 100, 0, 1, 15); +} int DeviceIoControlService::getDisinfectantVolume_g() { // kpa; @@ -148,6 +166,7 @@ DeviceIoControlService::h2o2sensor_data_t DeviceIoControlService::getH2O2SenSorD } bool DeviceIoControlService::getAllSensorData(DeviceIoControlService::all_h2o2sensor_data_t& data) { + data = {0}; data.h2o2sensor_data[0] = getH2O2SenSorData1(); data.h2o2sensor_status[0] = true; diff --git a/src/service/device_io_control_service.hpp b/src/service/device_io_control_service.hpp index c13ad90..e39b573 100644 --- a/src/service/device_io_control_service.hpp +++ b/src/service/device_io_control_service.hpp @@ -41,8 +41,8 @@ class DeviceIoControlService : public enable_shared_from_this m_zcanHost; // - ZCanHost::hpp272_data_t m_hpp272_data_1; - ZCanHost::huacheng_pressure_sensor_read_c1005_t m_pressure_sensor_data[5]; + ZCanHost::hpp272_data_t m_hpp272_data_1 = {0}; + ZCanHost::huacheng_pressure_sensor_read_c1005_t m_pressure_sensor_data[5] = {0}; // bool m_waterImmersionSensor1 = false; // 漏液检测 diff --git a/src/service/disinfection_ctl_service.cpp b/src/service/disinfection_ctl_service.cpp index eb576b0..0da939a 100644 --- a/src/service/disinfection_ctl_service.cpp +++ b/src/service/disinfection_ctl_service.cpp @@ -23,7 +23,7 @@ using namespace std; */ #define PRE_HEAT_TIME (2) -#define DVALUE_COMPUTEPERIOD_TIME_S (60.0) +#define DVALUE_COMPUTEPERIOD_TIME_S (15.0) #define MAX_VOLUME (5000) DisinfectionCtrlService::DisinfectionCtrlService() {} @@ -90,7 +90,8 @@ void DisinfectionCtrlService::computeRemainTime(DisinfectionContext& context) { /** * @brief 计算Dvalue */ - float dvalue = getDisinfectionDValue(context.h2o2data.min_h2o2); + float dvalue = getDisinfectionDValue(context.h2o2data.min_h2o2); + context.dvalue = dvalue; /** * @brief 计算 m_nowLoglevel @@ -113,6 +114,7 @@ void DisinfectionCtrlService::initContext(DisinfectionContext& context, int logl context.m_nowLoglevel = 0; context.m_loglevel = loglevel; context.m_roomvol = roomVol; + m_context.m_preheatFlag = true; context.stoped_gs = m_dbService->getSettingVal("stoped_gs"); context.continued_gs = m_dbService->getSettingVal("continued_gs"); @@ -130,7 +132,7 @@ 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"); + 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; @@ -167,6 +169,29 @@ void DisinfectionCtrlService::processPreheatState(DisinfectionContext& context) context.sprayLiquidFlag = true; } } + +void DisinfectionCtrlService::dumpDisinfectionLogsToCSV(DisinfectionContext& context) { + context.csvlogger->write(fmt::format("{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}\n", + zsteady_clock().elapsedTimeS(m_context.m_starttp), // + m_context.h2o2data.h2o2sensor_data[0].h2o2, // + m_context.h2o2data.h2o2sensor_data[0].temp, // + m_context.h2o2data.h2o2sensor_data[0].humid, // + m_context.h2o2data.h2o2sensor_data[0].saturation, // + m_context.h2o2data.h2o2sensor_data[1].h2o2, // + m_context.h2o2data.h2o2sensor_data[1].temp, // + m_context.h2o2data.h2o2sensor_data[1].humid, // + m_context.h2o2data.h2o2sensor_data[1].saturation, // + m_context.h2o2data.h2o2sensor_data[2].h2o2, // + m_context.h2o2data.h2o2sensor_data[2].temp, // + m_context.h2o2data.h2o2sensor_data[2].humid, // + m_context.h2o2data.h2o2sensor_data[2].saturation, // + m_context.dvalue, // + m_context.m_nowLoglevel, // + m_context.m_targetLoglevel, // + m_context.m_remaintime // + )); +} + void DisinfectionCtrlService::dumpDisinfectionLogs(DisinfectionContext& context) { logger->info("T:{},h2o21:{},t1:{},humi:{},s1:{},h2o22:{},t2:{},humi2:{},s2:{},h2o23:{},t3:{},humi3:{},s3:{},dvalue:{},nowlog:{},targetlog:{},remaintime:{}", zsteady_clock().elapsedTimeS(m_context.m_starttp), // @@ -187,26 +212,6 @@ void DisinfectionCtrlService::dumpDisinfectionLogs(DisinfectionContext& context) m_context.m_targetLoglevel, // m_context.m_remaintime // ); - - context.csvlogger->write(fmt::format("{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}", - zsteady_clock().elapsedTimeS(m_context.m_starttp), // - m_context.h2o2data.h2o2sensor_data[0].h2o2, // - m_context.h2o2data.h2o2sensor_data[0].temp, // - m_context.h2o2data.h2o2sensor_data[0].humid, // - m_context.h2o2data.h2o2sensor_data[0].saturation, // - m_context.h2o2data.h2o2sensor_data[1].h2o2, // - m_context.h2o2data.h2o2sensor_data[1].temp, // - m_context.h2o2data.h2o2sensor_data[1].humid, // - m_context.h2o2data.h2o2sensor_data[1].saturation, // - m_context.h2o2data.h2o2sensor_data[2].h2o2, // - m_context.h2o2data.h2o2sensor_data[2].temp, // - m_context.h2o2data.h2o2sensor_data[2].humid, // - m_context.h2o2data.h2o2sensor_data[2].saturation, // - m_context.dvalue, // - m_context.m_nowLoglevel, // - m_context.m_targetLoglevel, // - m_context.m_remaintime // - )); } void DisinfectionCtrlService::processDisinfectionState(DisinfectionContext& context) { @@ -221,6 +226,7 @@ void DisinfectionCtrlService::processDisinfectionState(DisinfectionContext& cont * @brief 周期性计算剩余时间 */ computeRemainTime(m_context); + dumpDisinfectionLogsToCSV(m_context); } dumpDisinfectionLogs(m_context); diff --git a/src/service/disinfection_ctl_service.hpp b/src/service/disinfection_ctl_service.hpp index deb0254..98141a5 100644 --- a/src/service/disinfection_ctl_service.hpp +++ b/src/service/disinfection_ctl_service.hpp @@ -125,6 +125,7 @@ class DisinfectionCtrlService : public enable_shared_from_thiserror("create loggers:{} failed", log_file_name); } } -void DisinfectionLogger::write(string log) { m_logfile.write(log.c_str(), log.size()); } +void DisinfectionLogger::write(string log) { + m_logfile.write(log.c_str(), log.size()); + if (m_logfile.fail()) { + logger->error("write log failed:{}", strerror(errno)); + } + m_logfile.flush(); +} DisinfectionLogsManager::DisinfectionLogsManager(/* args */) {} DisinfectionLogsManager::~DisinfectionLogsManager() {} shared_ptr DisinfectionLogsManager::createNewLogger(string log_file_name) { + system(fmt::format("mkdir -p {}", LOG_STORGE_PATH).c_str()); shared_ptr logger = make_shared(); logger->initialize(fmt::format("{}{}.csv", LOG_STORGE_PATH, log_file_name)); return logger;