diff --git a/README.md b/README.md index 3b342a7..71fa15d 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,25 @@ "command":"exceCanCmd", "cancmd":"call 1007 1" } + + + +{ + "command":"exceCanCmd", + "cancmd":"huacheng_pressure_sensor_read_c1005 0" +} +{ + "command":"exceCanCmd", + "cancmd":"huacheng_pressure_sensor_read_c1005 1" +} +{ + "command":"exceCanCmd", + "cancmd":"huacheng_pressure_sensor_read_c1005 2" +} +{ + "command":"exceCanCmd", + "cancmd":"huacheng_pressure_sensor_read_c1005 3" +} ``` # 编译 diff --git a/iflytoplinuxsdk b/iflytoplinuxsdk index a838d01..17b5cd5 160000 --- a/iflytoplinuxsdk +++ b/iflytoplinuxsdk @@ -1 +1 @@ -Subproject commit a838d01d60b3b76ba3a38b6e3d0c1b90c5c9bd2a +Subproject commit 17b5cd5e7e493cc763528ce03d5b4976d2a39bd0 diff --git a/src/main_control_service.cpp b/src/main_control_service.cpp index 3802579..9a310db 100644 --- a/src/main_control_service.cpp +++ b/src/main_control_service.cpp @@ -748,10 +748,37 @@ void MainControlService::processFrontEndMessage_DeviceIOControlService(weak_ptr< m_deviceIoControlService->airCompressor_setState(cmd["params"][0]); return; } - if (cmdstr == "DeviceIOControlService.airCompressor_channelCtrl") { - m_deviceIoControlService->airCompressor_channelCtrl(cmd["params"][0]); + if (cmdstr == "DeviceIOControlService.airCompressor_channelSelect") { + m_deviceIoControlService->airCompressor_channelSelect(cmd["params"][0]); return; } + if (cmdstr == "DeviceIOControlService.airCompressor_setValve1") { + m_deviceIoControlService->airCompressor_setValve1(cmd["params"][0]); + return; + } + if (cmdstr == "DeviceIOControlService.airCompressor_setValve2") { + m_deviceIoControlService->airCompressor_setValve2(cmd["params"][0]); + return; + } + // airCompressor_getValve2 + if (cmdstr == "DeviceIOControlService.airCompressor_getPressureDirect") { + receipt["ack"][0] = m_deviceIoControlService->airCompressor_getPressureDirect(); + return; + } + if (cmdstr == "DeviceIOControlService.airCompressor_getPressure") { + receipt["ack"][0] = m_deviceIoControlService->airCompressor_getPressure(); + return; + } + if (cmdstr == "DeviceIOControlService.airCompressor_getValve1") { + receipt["ack"][0] = m_deviceIoControlService->airCompressor_getValve1(); + return; + } + if (cmdstr == "DeviceIOControlService.airCompressor_getValve2") { + receipt["ack"][0] = m_deviceIoControlService->airCompressor_getValve2(); + return; + } + // airCompressor_setValve1 + // airCompressor_setValve2 if (cmdstr == "DeviceIOControlService.AirInletProportionalValve_setState") { m_deviceIoControlService->AirInletProportionalValve_setState(cmd["params"][0]); return; @@ -776,10 +803,11 @@ json MainControlService::createSensorDataJson() { report["AirInletProportionalValve"]["state"] = m_deviceIoControlService->AirInletProportionalValve_getState(); report["AirOutletProportionalValve"]["state"] = m_deviceIoControlService->AirOutletProportionalValve_getState(); - report["airCompressor"]["channelState"] = m_deviceIoControlService->airCompressor_getChannelState(); + report["airCompressor"]["channelIndex"] = m_deviceIoControlService->airCompressor_getChannelIndex(); report["airCompressor"]["io1"] = m_deviceIoControlService->airCompressor_getio1(); report["airCompressor"]["io2"] = m_deviceIoControlService->airCompressor_getio2(); report["airCompressor"]["currentVal"] = m_deviceIoControlService->airCompressor_getcurrentValue(); + report["airCompressor"]["pressure"] = m_deviceIoControlService->airCompressor_getPressure(); report["airBlower"]["io1"] = m_deviceIoControlService->airBlower_getio1(); report["airBlower"]["io2"] = m_deviceIoControlService->airBlower_getio2(); @@ -789,10 +817,10 @@ json MainControlService::createSensorDataJson() { report["heatingStrip"]["io2"] = m_deviceIoControlService->heatingStrip_getio2(); report["heatingStrip"]["currentVal"] = m_deviceIoControlService->heatingStrip_getcurrentValue(); - report["pressure"][0] = m_deviceIoControlService->getPressureSensorData(0); // 液位 - report["pressure"][1] = m_deviceIoControlService->getPressureSensorData(1); // 空压机压力 - report["pressure"][2] = m_deviceIoControlService->getPressureSensorData(2); // 加液泵 - report["pressure"][3] = m_deviceIoControlService->getPressureSensorData(3); // 喷射泵 + report["pressure"][0] = m_deviceIoControlService->getPressureSensorData(1); // 液位 + report["pressure"][1] = m_deviceIoControlService->getPressureSensorData(2); // 空压机压力 + report["pressure"][2] = m_deviceIoControlService->getPressureSensorData(3); // 加液泵 + report["pressure"][3] = m_deviceIoControlService->getPressureSensorData(4); // 喷射泵 // ds->getPressureSensorData(1); diff --git a/src/service/device_io_control_service.cpp b/src/service/device_io_control_service.cpp index 6dc07be..c57c003 100644 --- a/src/service/device_io_control_service.cpp +++ b/src/service/device_io_control_service.cpp @@ -116,12 +116,35 @@ void DeviceIoControlService::airCompressor_setState(int32_t val) { int DeviceIoControlService::airCompressor_getio1() { return m_zcanHost->read_writeio_state_cache(0); } int DeviceIoControlService::airCompressor_getio2() { return m_zcanHost->read_writeio_state_cache(1); } int DeviceIoControlService::airCompressor_getcurrentValue() { return m_adc_0 * 0.00167 - 1.25; } -int DeviceIoControlService::airCompressor_channelCtrl(int32_t val) { - m_airCompressor_channelState = val; - m_zcanHost->call(kcmd_air_compressor_ch_ctrl, m_airCompressor_channelState > 0 ? 0 : 1); +int DeviceIoControlService::airCompressor_channelSelect(int32_t val) { + m_airCompressor_channelIndex = val; + if (m_airCompressor_channelIndex == 1) { + m_zcanHost->call(kcmd_air_compressor_ch_select, 1); + } else if (m_airCompressor_channelIndex == 2) { + m_zcanHost->call(kcmd_air_compressor_ch_select, 0); + } else { + return err::kfail; + } return 0; } -bool DeviceIoControlService::airCompressor_getChannelState() { return m_airCompressor_channelState; } + +int DeviceIoControlService::airCompressor_setValve1(int32_t val) { + m_airCompressor_valve1State = val; + return m_zcanHost->call(kcmd_air_compressor_valve1_set, val); +} +int DeviceIoControlService::airCompressor_setValve2(int32_t val) { + m_airCompressor_valve2State = val; + return m_zcanHost->call(kcmd_air_compressor_valve2_set, val); +} +int DeviceIoControlService::airCompressor_getValve1() { return m_airCompressor_valve1State; } +int DeviceIoControlService::airCompressor_getValve2() { return m_airCompressor_valve2State; } +int DeviceIoControlService::airCompressor_getChannelIndex() { return m_airCompressor_channelIndex; } +float DeviceIoControlService::airCompressor_getPressure() { return m_pressure_sensor_data[2].value / 10.0; } +float DeviceIoControlService::airCompressor_getPressureDirect() { + int32_t ack = 0; + m_zcanHost->call(kcmd_air_compressor_read_pressure, &ack); + return ack/10.0; +} void DeviceIoControlService::AirInletProportionalValve_setState(int32_t val) { m_AirInletProportionalValve_state = val; @@ -295,7 +318,14 @@ int DeviceIoControlService::getDisinfectantVolume_g() { } int DeviceIoControlService::getPressureSensorData(int index) { lock_guard lock(lock_); - return m_pressure_sensor_data[index].value; + if (index > 5 || index < 1) { + return -1; + } + if (index == 2) { + return m_pressure_sensor_data[index].value / 10; + } else { + return m_pressure_sensor_data[index].value; + } } int DeviceIoControlService::getWaterImmersionSensor1() { diff --git a/src/service/device_io_control_service.hpp b/src/service/device_io_control_service.hpp index da0ba28..ebdad39 100644 --- a/src/service/device_io_control_service.hpp +++ b/src/service/device_io_control_service.hpp @@ -62,7 +62,10 @@ class DeviceIoControlService : public enable_shared_from_thisinfo("airBlower_setState:{}", val); m_airBlower_State = val; - return 0; } int DeviceIoControlServiceTest::airBlower_getio1() { diff --git a/src/service/device_io_control_service_test.hpp b/src/service/device_io_control_service_test.hpp index 3e02100..f3670ee 100644 --- a/src/service/device_io_control_service_test.hpp +++ b/src/service/device_io_control_service_test.hpp @@ -48,7 +48,7 @@ class DeviceIoControlServiceTest : public DeviceIoControlService { int32_t m_AirInletProportionalValve_state = 0; int32_t m_AirOutletProportionalValve_state = 0; - int32_t m_airCompressor_channelState = 0; + int32_t m_airCompressor_channelIndex = 0; public: virtual void initialize(); @@ -76,13 +76,19 @@ class DeviceIoControlServiceTest : public DeviceIoControlService { /******************************************************************************* * 空压机控制 * *******************************************************************************/ - virtual void airCompressor_setState(int32_t val) override; - virtual int airCompressor_getio1() override; - virtual int airCompressor_getio2() override; - virtual int airCompressor_getstate() override; - virtual int airCompressor_getcurrentValue() override; - virtual int airCompressor_channelCtrl(int32_t chOpen) override; - virtual bool airCompressor_getChannelState() override; + virtual void airCompressor_setState(int32_t val) override; + virtual int airCompressor_getio1() override; + virtual int airCompressor_getio2() override; + virtual int airCompressor_getstate() override; + virtual int airCompressor_getcurrentValue() override; + virtual int airCompressor_channelSelect(int32_t chOpen) override; + virtual int airCompressor_getChannelIndex() override; + virtual int airCompressor_setValve1(int32_t val) override; + virtual int airCompressor_setValve2(int32_t val) override; + virtual int airCompressor_getValve1() override; + virtual int airCompressor_getValve2() override; + virtual float airCompressor_getPressureDirect() override; + virtual float airCompressor_getPressure() override; /******************************************************************************* * 比例阀控制 * diff --git a/src/service/disinfection_ctl_service.cpp b/src/service/disinfection_ctl_service.cpp index cbe2c41..e4296ed 100644 --- a/src/service/disinfection_ctl_service.cpp +++ b/src/service/disinfection_ctl_service.cpp @@ -294,6 +294,9 @@ void DisinfectionCtrlService::processPreheatState(DisinfectionContext& context) logger->info("preheat finished {}", context.m_disinfectionID); // blower_setPower(true); m_deviceIoControlService->airBlower_setState(true); + m_deviceIoControlService->airCompressor_channelSelect(1); + m_deviceIoControlService->airCompressor_setValve1(1); + m_deviceIoControlService->airCompressor_setValve2(1); usleep(1000 * 1000); // airCompressor(true); m_deviceIoControlService->airCompressor_setState(true);