From f0718de9348d2b1b4cfb76374bf742ade4a39299 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Thu, 24 Aug 2023 23:02:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B0=E5=AF=8C=E6=89=93=E5=8D=B0=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main_control_service.cpp | 20 ++++---- src/service/device_io_control_service.cpp | 36 ++++++++------ src/service/device_io_control_service.hpp | 43 ++++++++++------- src/service/disinfection_ctl_service.cpp | 78 +++++++++++++++++++++++++++++-- 4 files changed, 130 insertions(+), 47 deletions(-) diff --git a/src/main_control_service.cpp b/src/main_control_service.cpp index 2689f39..fec5280 100644 --- a/src/main_control_service.cpp +++ b/src/main_control_service.cpp @@ -127,19 +127,19 @@ void MainControlService::initialize() { json MainControlService::createSensorDataJson() { json report; - report["airCompressor"]["io1"] = m_deviceIoControlService->getAirCompressor_io1(); - report["airCompressor"]["io2"] = m_deviceIoControlService->getAirCompressor_io2(); - report["airCompressor"]["currentVal"] = m_deviceIoControlService->getAirCompressor_currentValue(); + report["airCompressor"]["io1"] = m_deviceIoControlService->airCompressor_getio1(); + report["airCompressor"]["io2"] = m_deviceIoControlService->airCompressor_getio2(); + report["airCompressor"]["currentVal"] = m_deviceIoControlService->airCompressor_getcurrentValue(); - report["airBlower"]["io1"] = m_deviceIoControlService->getAirBlower_io1(); - report["airBlower"]["io2"] = m_deviceIoControlService->getAirBlower_io2(); - report["airBlower"]["currentVal"] = m_deviceIoControlService->getAirBlower_currentValue(); + report["airBlower"]["io1"] = m_deviceIoControlService->airBlower_getio1(); + report["airBlower"]["io2"] = m_deviceIoControlService->airBlower_getio2(); + report["airBlower"]["currentVal"] = m_deviceIoControlService->airBlower_getcurrentValue(); - report["heatingStrip"]["io1"] = m_deviceIoControlService->getHeatingStrip_io1(); - report["heatingStrip"]["io2"] = m_deviceIoControlService->getHeatingStrip_io2(); - report["heatingStrip"]["currentVal"] = m_deviceIoControlService->getHeatingStrip_currentValue(); + report["heatingStrip"]["io1"] = m_deviceIoControlService->heatingStrip_getio1(); + report["heatingStrip"]["io2"] = m_deviceIoControlService->heatingStrip_getio2(); + report["heatingStrip"]["currentVal"] = m_deviceIoControlService->heatingStrip_getcurrentValue(); - report["sprinklerPump"] = m_deviceIoControlService->getSprinkler_PumpRPM(); + report["sprinklerPump"] = m_deviceIoControlService->sprayLiquidPump_getRPM(); report["chargingPump"] = m_deviceIoControlService->getChargingPump_PumpRPM(); report["waterImmersionSensor1"] = m_deviceIoControlService->getWaterImmersionSensor1(); diff --git a/src/service/device_io_control_service.cpp b/src/service/device_io_control_service.cpp index b0636a9..f7f80b4 100644 --- a/src/service/device_io_control_service.cpp +++ b/src/service/device_io_control_service.cpp @@ -70,8 +70,6 @@ void DeviceIoControlService::startScan() { 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) { @@ -103,15 +101,18 @@ void DeviceIoControlService::airCompressor_setState(bool val) { } } -int DeviceIoControlService::getAirCompressor_io1() { return m_zcanHost->read_writeio_state_cache(1); } -int DeviceIoControlService::getAirCompressor_io2() { return m_zcanHost->read_writeio_state_cache(2); } -int DeviceIoControlService::getAirCompressor_currentValue() { return m_adc_0 * 0.00167 - 1.25; } +int DeviceIoControlService::airCompressor_getio1() { return m_zcanHost->read_writeio_state_cache(1); } +int DeviceIoControlService::airCompressor_getio2() { return m_zcanHost->read_writeio_state_cache(2); } +int DeviceIoControlService::airCompressor_getcurrentValue() { return m_adc_0 * 0.00167 - 1.25; } +int DeviceIoControlService::airCompressor_getstate() { return m_zcanHost->read_writeio_state_cache(1) && m_zcanHost->read_writeio_state_cache(2); } + +int DeviceIoControlService::airBlower_getio1() { return m_zcanHost->read_writeio_state_cache(3); } +int DeviceIoControlService::airBlower_getio2() { return m_zcanHost->read_writeio_state_cache(4); } +int DeviceIoControlService::airBlower_getstate() { return m_zcanHost->read_writeio_state_cache(3) && m_zcanHost->read_writeio_state_cache(4); } -int DeviceIoControlService::getAirBlower_io1() { return m_zcanHost->read_writeio_state_cache(3); } -int DeviceIoControlService::getAirBlower_io2() { return m_zcanHost->read_writeio_state_cache(4); } -int DeviceIoControlService::getAirBlower_currentValue() { return m_adc_1 * 0.00167 - 1.25; } -int DeviceIoControlService::AirBlower_setState(bool val) { - logger->info("AirBlower_setState:{}", val); +int DeviceIoControlService::airBlower_getcurrentValue() { return m_adc_1 * 0.00167 - 1.25; } +int DeviceIoControlService::airBlower_setState(bool val) { + logger->info("airBlower_setState:{}", val); if (val) { m_zcanHost->writeio(2, 1); usleep(500 * 100); @@ -125,9 +126,10 @@ int DeviceIoControlService::AirBlower_setState(bool val) { } // heatingStrip -int DeviceIoControlService::getHeatingStrip_io1() { return m_zcanHost->read_writeio_state_cache(5); } -int DeviceIoControlService::getHeatingStrip_io2() { return m_zcanHost->read_writeio_state_cache(6); } -int DeviceIoControlService::getHeatingStrip_currentValue() { return m_adc_2 * 0.00336 - 2.5; } +int DeviceIoControlService::heatingStrip_getio1() { return m_zcanHost->read_writeio_state_cache(5); } +int DeviceIoControlService::heatingStrip_getio2() { return m_zcanHost->read_writeio_state_cache(6); } +int DeviceIoControlService::heatingStrip_getstate() { return m_zcanHost->read_writeio_state_cache(5) && m_zcanHost->read_writeio_state_cache(6); } +int DeviceIoControlService::heatingStrip_getcurrentValue() { return m_adc_2 * 0.00336 - 2.5; } void DeviceIoControlService::heartingPlate_setPower(bool val) { logger->info("heartingPlate_setPower:{}", val); if (val) { @@ -141,7 +143,7 @@ void DeviceIoControlService::heartingPlate_setPower(bool val) { } } -int DeviceIoControlService::getSprinkler_PumpRPM() { return m_zcanHost->pumpctrl_c1004_get_speed_cache(2); } +int DeviceIoControlService::sprayLiquidPump_getRPM() { 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() { @@ -170,6 +172,9 @@ void DeviceIoControlService::sprayLiquidPump_close() { logger->info("sprayLiquidPump_close"); m_zcanHost->pumpctrl_c1004(2, 100, 0, 1, 15); } +int DeviceIoControlService::sprayLiquidPump_getState() { // + return (sprayLiquidPump_getRPM() != 0); +} int DeviceIoControlService::getDisinfectantVolume_g() { // kpa; @@ -177,9 +182,12 @@ int DeviceIoControlService::getDisinfectantVolume_g() { int g = 2.11 * kpa * 1000; if (g < 450) { /*零点*/ return 0; + } else { + g -= 450; } return g; } +int DeviceIoControlService::getPressureSensorData(int index) { return m_pressure_sensor_data[index].value; } int DeviceIoControlService::getWaterImmersionSensor1() { return m_waterImmersionSensor1 ? 1 : 0; } int DeviceIoControlService::getWaterImmersionSensor2() { return m_waterImmersionSensor2 ? 1 : 0; } diff --git a/src/service/device_io_control_service.hpp b/src/service/device_io_control_service.hpp index e39b573..3b5e78c 100644 --- a/src/service/device_io_control_service.hpp +++ b/src/service/device_io_control_service.hpp @@ -59,34 +59,37 @@ class DeviceIoControlService : public enable_shared_from_thissprayLiquidPump_close(); m_deviceIoControlService->heartingPlate_setPower(false); - m_deviceIoControlService->AirBlower_setState(false); + m_deviceIoControlService->airBlower_setState(false); m_deviceIoControlService->airCompressor_setState(false); } @@ -138,8 +138,27 @@ 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); + + // zsteady_clock().elapsedTimeS(m_context.m_starttp), // + // sensors[0].h2o2, sensors[0].temp, sensors[0].humid, sensors[0].saturation, // + // sensors[1].h2o2, sensors[1].temp, sensors[1].humid, sensors[1].saturation, // + // sensors[2].h2o2, sensors[2].temp, sensors[2].humid, sensors[2].saturation, // + // m_context.dvalue, m_context.m_nowLoglevel, (int)m_context.m_targetLoglevel, // + // ds->heatingStrip_getstate(), ds->airBlower_getstate(), ds->airCompressor_getstate(), ds->sprayLiquidPump_getRPM(), // + // ds->getPressureSensorData(1), ds->getPressureSensorData(2), ds->getPressureSensorData(3), ds->getPressureSensorData(4), // + // m_deviceIoControlService->getDisinfectantVolume_g(), // + // m_context.m_remaintime context.csvlogger->write( - "time,h2o21,temp1,humi1,saturation1,h2o22,temp2,humi2,saturation2,h2o23,temp3,humi3,saturation3,dvalue,nowlog,targetlog,remaintime\n"); + "time," // + "h2o21,temp1,humi1,saturation1," // + "h2o22,temp2,humi2,saturation2," // + "h2o23,temp3,humi3,saturation3," // + "dvalue,loglevel,targetloglevel," // + "heating,blower,compressor,pump," // + "pressure1,pressure2,pressure3,pressure4," // + "disinfectantVolume," // + "remaintime" // + ); } void DisinfectionCtrlService::finishDisinfection(DisinfectionContext& context) { context.m_remaintime = 0; @@ -152,7 +171,7 @@ void DisinfectionCtrlService::finishDisinfection(DisinfectionContext& context) { m_deviceIoControlService->airCompressor_setState(false); usleep(1000 * 1000); // blower_setPower(false); - m_deviceIoControlService->AirBlower_setState(false); + m_deviceIoControlService->airBlower_setState(false); usleep(1000 * 1000); // heartingPlate_setPower(false); m_deviceIoControlService->heartingPlate_setPower(false); @@ -165,7 +184,7 @@ void DisinfectionCtrlService::processPreheatState(DisinfectionContext& context) 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); + m_deviceIoControlService->airBlower_setState(true); usleep(1000 * 1000); // airCompressor(true); m_deviceIoControlService->airCompressor_setState(true); @@ -178,6 +197,7 @@ void DisinfectionCtrlService::processPreheatState(DisinfectionContext& context) } void DisinfectionCtrlService::dumpDisinfectionLogsToCSV(DisinfectionContext& context) { +#if 0 context.csvlogger->write(fmt::format("{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}\n", zsteady_clock().elapsedTimeS(m_context.m_starttp), // m_context.h2o2data.h2o2sensor_data[0].h2o2, // @@ -197,10 +217,35 @@ void DisinfectionCtrlService::dumpDisinfectionLogsToCSV(DisinfectionContext& con m_context.m_targetLoglevel, // m_context.m_remaintime // )); +#endif + auto* sensors = &m_context.h2o2data.h2o2sensor_data[0]; + auto ds = m_deviceIoControlService; + context.csvlogger->write( + fmt::format("{}," // + "{},{},{},{}," // + "{},{},{},{}," // + "{},{},{},{}," // + "{},{},{}," // + "{},{},{},{}," // + "{},{},{},{}," // + "{}," // + "{}" // + , + zsteady_clock().elapsedTimeS(m_context.m_starttp), // + sensors[0].h2o2, sensors[0].temp, sensors[0].humid, sensors[0].saturation, // + sensors[1].h2o2, sensors[1].temp, sensors[1].humid, sensors[1].saturation, // + sensors[2].h2o2, sensors[2].temp, sensors[2].humid, sensors[2].saturation, // + m_context.dvalue, m_context.m_nowLoglevel, (int)m_context.m_targetLoglevel, // + ds->heatingStrip_getstate(), ds->airBlower_getstate(), ds->airCompressor_getstate(), ds->sprayLiquidPump_getRPM(), // + ds->getPressureSensorData(1), ds->getPressureSensorData(2), ds->getPressureSensorData(3), ds->getPressureSensorData(4), // + m_deviceIoControlService->getDisinfectantVolume_g(), // + 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:{}", + float h2o2_g = m_deviceIoControlService->getDisinfectantVolume_g(); +#if 0 + logger->info("T:{},ho1:{},t1:{},hu1:{},s1:{},ho2:{},t2:{},hu2:{},s2:{},ho3:{},t3:{},hu3:{},s3:{},dv:{},log:{},tlog:{},rt:{}", zsteady_clock().elapsedTimeS(m_context.m_starttp), // m_context.h2o2data.h2o2sensor_data[0].h2o2, // m_context.h2o2data.h2o2sensor_data[0].temp, // @@ -219,6 +264,29 @@ void DisinfectionCtrlService::dumpDisinfectionLogs(DisinfectionContext& context) m_context.m_targetLoglevel, // m_context.m_remaintime // ); +#endif + auto* sensors = &m_context.h2o2data.h2o2sensor_data[0]; + auto ds = m_deviceIoControlService; + logger->info( + "T:{}," // + "s1:({},{},{},{})," // + "s2:({},{},{},{})," // + "s3:({},{},{},{})," // + "D:{},log:({}:{})," // + "io:({},{},{},{})," // + "p:({},{},{},{})," // + "h2o2g:{}," // + "rt:{}" // + , + zsteady_clock().elapsedTimeS(m_context.m_starttp), // + sensors[0].h2o2, sensors[0].temp, sensors[0].humid, sensors[0].saturation, // + sensors[1].h2o2, sensors[1].temp, sensors[1].humid, sensors[1].saturation, // + sensors[2].h2o2, sensors[2].temp, sensors[2].humid, sensors[2].saturation, // + m_context.dvalue, m_context.m_nowLoglevel, (int)m_context.m_targetLoglevel, // + ds->heatingStrip_getstate(), ds->airBlower_getstate(), ds->airCompressor_getstate(), ds->sprayLiquidPump_getRPM(), // + ds->getPressureSensorData(1), ds->getPressureSensorData(2), ds->getPressureSensorData(3), ds->getPressureSensorData(4), // + m_deviceIoControlService->getDisinfectantVolume_g(), // + m_context.m_remaintime); } void DisinfectionCtrlService::processDisinfectionState(DisinfectionContext& context) {