diff --git a/src/db/db_service.cpp b/src/db/db_service.cpp index 004f2b3..07e8087 100644 --- a/src/db/db_service.cpp +++ b/src/db/db_service.cpp @@ -6,8 +6,8 @@ #include "db_service.hpp" // -#include "iflytop/components/sqlite_orm/sqlite_orm.hpp" #include "configs/project_setting.hpp" +#include "iflytop/components/sqlite_orm/sqlite_orm.hpp" using namespace std; using namespace iflytop; @@ -36,9 +36,9 @@ using namespace nlohmann; make_column("val_lower_limit", &Setting::val_lower_limit), /**/ \ make_column("val_upper_limit", &Setting::val_upper_limit), /**/ \ make_column("permission_level", &Setting::permission_level), /**/ \ - make_column("val", &Setting::val),/**/ \ - make_column("default_val", &Setting::default_val)/**/ \ - ) + make_column("val", &Setting::val), /**/ \ + make_column("default_val", &Setting::default_val) /**/ \ + ) #define FORMULA_DB_STRUCT \ make_table("formulas", /**/ \ @@ -83,29 +83,29 @@ using namespace nlohmann; #if (defined PROJECT_TYPE_LARGE_SPACE_DISINFECTION) || (defined PROJECT_TYPE_SMALL_SPACE_DISINFECTION) || (defined PROJECT_TYPE_PIPE_DISINFECTION) -#define INJECTION_PUMP_SPEED_DEFAULT 15 +#define INJECTION_PUMP_SPEED_DEFAULT 15 #define INJECTION_PUMP_SPEED_LIMIT_VAL 40 #endif #ifdef PROJECT_TYPE_DRAW_BAR_BOX -#define INJECTION_PUMP_SPEED_DEFAULT 4 +#define INJECTION_PUMP_SPEED_DEFAULT 4 #define INJECTION_PUMP_SPEED_LIMIT_VAL 8 #endif - - static Setting config_settings_table[] = { - SETTING_ITEM(1, "stoped_gs", /*************/ "消毒停止过氧化氢溶度", /**********/ 0, 2000, 300), // - SETTING_ITEM(2, "continued_gs", /**********/ "消毒继续过氧化氢溶度", /**********/ 0, 2000, 200), // - SETTING_ITEM(3, "stoped_satur", /**********/ "消毒停止过氧化氢相对饱和度", /*****/ 0, 100, 85), // - SETTING_ITEM(4, "continued_satur", /*******/ "消毒继续过氧化氢相对饱和度", /*****/ 0, 100, 60), // - SETTING_ITEM(5, "max_humidity", /**********/ "允许消毒最大湿度", /*************/ 0, 100, 90), // - SETTING_ITEM(6, "drainage_pump_speed", /***/ "排液蠕动泵最大转速", /************/ 0, 400, 400), // - SETTING_ITEM(7, "injection_pump_speed", /**/ "喷射蠕动泵转速", /***************/ 0, INJECTION_PUMP_SPEED_LIMIT_VAL, INJECTION_PUMP_SPEED_DEFAULT), // - SETTING_ITEM(8, "pre_heat_time_s", /*******/ "预热时间", /*******************/ 0, 1200, 120), // - SETTING_ITEM(9, "stoped_humi", /***********/ "消毒停止相对湿度", /************/ 0, 100, 85), // - SETTING_ITEM(10, "continued_humi", /*******/ "消毒继续相对湿度", /************/ 0, 100, 60), // - SETTING_ITEM(11, "proportional_valve_default_value", "正负压默认开合比例", 0, 100, 10), // + SETTING_ITEM(1, "stoped_gs", /*************/ "消毒停止过氧化氢溶度", /**********/ 0, 2000, 300), // + SETTING_ITEM(2, "continued_gs", /**********/ "消毒继续过氧化氢溶度", /**********/ 0, 2000, 200), // + SETTING_ITEM(3, "stoped_satur", /**********/ "消毒停止过氧化氢相对饱和度", /*****/ 0, 100, 85), // + SETTING_ITEM(4, "continued_satur", /*******/ "消毒继续过氧化氢相对饱和度", /*****/ 0, 100, 60), // + SETTING_ITEM(5, "max_humidity", /**********/ "允许消毒最大湿度", /*************/ 0, 100, 90), // + SETTING_ITEM(6, "drainage_pump_speed", /***/ "排液蠕动泵最大转速", /************/ 0, 400, 400), // + SETTING_ITEM(7, "injection_pump_speed", /**/ "喷射蠕动泵转速", /***************/ 0, INJECTION_PUMP_SPEED_LIMIT_VAL, INJECTION_PUMP_SPEED_DEFAULT), // + SETTING_ITEM(8, "pre_heat_time_s", /*******/ "预热时间", /*******************/ 0, 1200, 120), // + SETTING_ITEM(9, "stoped_humi", /***********/ "消毒停止相对湿度", /************/ 0, 100, 85), // + SETTING_ITEM(10, "continued_humi", /*******/ "消毒继续相对湿度", /************/ 0, 100, 60), // + SETTING_ITEM(11, "proportional_valve_default_value", "正负压默认开合比例", 0, 100, 10), // + SETTING_ITEM(12, "record_period_min", "消毒日志记录间隔", 1, 10, 1), // + SETTING_ITEM(13, "record_printer_period_min", "消毒日志打印间隔", 1, 10, 3), // }; diff --git a/src/service/disfection_ctl/disinfection_service.cpp b/src/service/disfection_ctl/disinfection_service.cpp index f2231b2..cf62076 100644 --- a/src/service/disfection_ctl/disinfection_service.cpp +++ b/src/service/disfection_ctl/disinfection_service.cpp @@ -316,13 +316,32 @@ void DisinfectionService::takeStateSnapshot() { } void DisinfectionService::tryLogSatate(bool force) { - if (force || zsteady_clock().elapsedTimeS(context.lastlog_tp) > DUMP_LOG_PERIOD) { + // record_period_min + // record_printer_period_min + + int record_period_s = m_dbService->getSettingVal("record_period_min") * 60; + int record_printer_period_s = m_dbService->getSettingVal("record_printer_period_min") * 60; + + if (record_period_s <= 60) { + record_period_s = 60; + } + if (record_printer_period_s <= 60) { + record_printer_period_s = 60; + } + + if (force || zsteady_clock().elapsedTimeS(context.lastlog_tp) > record_period_s) { context.lastlog_tp = zsteady_clock().now(); - logger->info("dumping state snapshot to csv"); - takeStateSnapshot(); + logger->info("log state snapshot to csv"); dumpDisinfectionLogsToCSV(); logstate(); } + + if (force || zsteady_clock().elapsedTimeS(context.last_log_printer_data_tp) > record_printer_period_s) { + context.last_log_printer_data_tp = zsteady_clock().now(); + logger->info("take state snapshot"); + takeStateSnapshot(); + logstate(); + } } int DisinfectionService::getDisinfectionWorkState() { return sm.getState(); } @@ -751,16 +770,17 @@ void DisinfectionService::processStateDisinfection(disinfection_event_t* event) if (!context.is_disinfection_take_break) { if (isTimeToPauseDisinfection()) { logger->info("pauseDisinfection"); - logstate(); + // logstate(); m_disinfectionServicePort->doStateDisinfection_whenPause(); context.is_disinfection_take_break = true; + tryLogSatate(true); } } else { if (isTimeToResumeDisinfection()) { logger->info("resumeDisinfection"); - logstate(); m_disinfectionServicePort->doStateDisinfection_whenContinue(); context.is_disinfection_take_break = false; + tryLogSatate(true); } } diff --git a/src/service/disfection_ctl/disinfection_service.hpp b/src/service/disfection_ctl/disinfection_service.hpp index 6743864..fc420a3 100644 --- a/src/service/disfection_ctl/disinfection_service.hpp +++ b/src/service/disfection_ctl/disinfection_service.hpp @@ -52,8 +52,9 @@ class DisinfectionService : public enable_shared_from_this zsystem_tp start_tp; zsystem_tp complete_tp; - zsteady_tp last_compute_dvalue_tp; // 上次计算dvalue时间 - zsteady_tp lastlog_tp; // 上次日志时间 + zsteady_tp last_compute_dvalue_tp; // 上次计算dvalue时间 + zsteady_tp lastlog_tp; // 上次日志时间 + zsteady_tp last_log_printer_data_tp; // 上次日志时间 int remaintime = 0; float now_loglevel = 0; float dvalue = 0;