Browse Source

Merge branch 'master' into try_support_dt100n

try_support_dt100n
zhaohe 4 weeks ago
parent
commit
6a836db8f1
  1. 2
      appsrc/appconfig/basic/zappversion.hpp
  2. 24
      appsrc/baseservice/db/calibrate_info_dao.cpp
  3. 11
      appsrc/baseservice/db/calibrate_info_dao.hpp
  4. 11
      appsrc/service/app/air_leak_detect_test.cpp
  5. 2
      appsrc/service/app/air_leak_detect_test.hpp
  6. 25
      appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp
  7. 72
      appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.hpp
  8. 9
      appsrc/service/app_core.cpp
  9. 32
      appsrc/service/calibration/h2o2_liquid_weight_sensor_calibration_service.cpp
  10. 58
      appsrc/service/calibration/sensor_calibration_service.cpp
  11. 10
      appsrc/service/calibration/sensor_calibration_service.hpp
  12. 73
      appsrc/service/debug_page_test_service.cpp
  13. 6
      appsrc/service/debug_page_test_service.hpp

2
appsrc/appconfig/basic/zappversion.hpp

@ -1,3 +1,3 @@
#pragma once #pragma once
#define VERSION "3.0.8"
#define VERSION "3.1.0"
#define PROJECT_NAME "TRANSMIT_DM" #define PROJECT_NAME "TRANSMIT_DM"

24
appsrc/baseservice/db/calibrate_info_dao.cpp

@ -33,17 +33,17 @@ void CalibrationInfoDao::initialize() {
} }
} }
CalibrationInfo CalibrationInfoDao::getCalibrationInfo() {
CalibrationInfo info = {0};
info.h2O2LiquidWeightSensorZeroBias = get("h2O2LiquidWeightSensorZeroBias", 0.0);
return info;
}
json CalibrationInfoDao::getCalibrationInfoJson() {
CalibrationInfo info = getCalibrationInfo();
json j;
j["h2O2LiquidWeightSensorZeroBias"] = info.h2O2LiquidWeightSensorZeroBias;
return j;
}
void CalibrationInfoDao::setH2O2LiquidWeightSensorZeroBias(float bias) { set("h2O2LiquidWeightSensorZeroBias", bias); } void CalibrationInfoDao::setH2O2LiquidWeightSensorZeroBias(float bias) { set("h2O2LiquidWeightSensorZeroBias", bias); }
float CalibrationInfoDao::getH2O2LiquidWeightSensorZeroBias() { return get("h2O2LiquidWeightSensorZeroBias", 0.0); } float CalibrationInfoDao::getH2O2LiquidWeightSensorZeroBias() { return get("h2O2LiquidWeightSensorZeroBias", 0.0); }
void CalibrationInfoDao::setACPressureSensorZeroBiasKpa(float bias) { set("acPressureSensorZeroBiasKpa", bias); }
float CalibrationInfoDao::getACPressureSensorZeroBiasKpa() { return get("acPressureSensorZeroBiasKpa", 0.0); }
float CalibrationInfoDao::acPressureSensorTare(float rawval) {
float bias = getACPressureSensorZeroBiasKpa();
float tareVal = rawval - bias;
if (tareVal < 0) {
tareVal = 0; // 确保去皮后的值不小于0
}
return tareVal;
}

11
appsrc/baseservice/db/calibrate_info_dao.hpp

@ -34,10 +34,7 @@ using namespace nlohmann;
*******************************************************************************/ *******************************************************************************/
namespace db { namespace db {
typedef struct {
int id;
float h2O2LiquidWeightSensorZeroBias; // H2O2液体重量传感器零点偏差
} CalibrationInfo;
} // namespace db } // namespace db
using namespace db; using namespace db;
/******************************************************************************* /*******************************************************************************
@ -59,14 +56,14 @@ class CalibrationInfoDao : public KeyValDBV2Dao {
static void daoInit() { ins(); } static void daoInit() { ins(); }
public: public:
CalibrationInfo getCalibrationInfo();
json getCalibrationInfoJson();
void setH2O2LiquidWeightSensorZeroBias(float bias); void setH2O2LiquidWeightSensorZeroBias(float bias);
float getH2O2LiquidWeightSensorZeroBias(); float getH2O2LiquidWeightSensorZeroBias();
void setACPressureSensorZeroBiasKpa(float bias);
float getACPressureSensorZeroBiasKpa();
float acPressureSensorTare(float rawval);
private: private:

11
appsrc/service/app/air_leak_detect_test.cpp

@ -1,5 +1,6 @@
#include "air_leak_detect_test.hpp" #include "air_leak_detect_test.hpp"
#include "baseservice/db/calibrate_info_dao.hpp"
#include "pipeline_pressure_control.hpp" #include "pipeline_pressure_control.hpp"
using namespace iflytop; using namespace iflytop;
@ -125,7 +126,7 @@ void AirLeakDetectTest::airLeakDetectTestThread(int inflationTimeMs) {
logger->info("stabilizing pressure....."); logger->info("stabilizing pressure.....");
m_workstate = kstabilizingPressure; m_workstate = kstabilizingPressure;
for (int i = 0; i < leakTestStabilizationTimeS; ++i) { for (int i = 0; i < leakTestStabilizationTimeS; ++i) {
pressurePa = m_dics->ACPostPS_readPa();
pressurePa = readPressurePa();
thisThread.sleepForMs(1000); thisThread.sleepForMs(1000);
logger->info(" waiting for stabilizing pressure, current pressure: {} kPa", pressurePa / 1000.0); logger->info(" waiting for stabilizing pressure, current pressure: {} kPa", pressurePa / 1000.0);
if (thisThread.getExitFlag()) { if (thisThread.getExitFlag()) {
@ -140,7 +141,7 @@ void AirLeakDetectTest::airLeakDetectTestThread(int inflationTimeMs) {
logger->info("leak testing....."); logger->info("leak testing.....");
m_workstate = kleakTesting; m_workstate = kleakTesting;
while (!thisThread.getExitFlag()) { while (!thisThread.getExitFlag()) {
pressurePa = m_dics->ACPostPS_readPa();
pressurePa = readPressurePa();
thisThread.sleepForMs(1000); thisThread.sleepForMs(1000);
} }
} }
@ -187,10 +188,12 @@ void AirLeakDetectTest::stopStateReport(shared_ptr<MsgProcessContext> cxt) {}
json AirLeakDetectTest::getState() { json AirLeakDetectTest::getState() {
json state; json state;
if (getWorkstate() == kidle) { if (getWorkstate() == kidle) {
pressurePa = m_dics->ACPostPS_readPa();
pressurePa = readPressurePa();
} }
state["pressure"] = pressurePa / 1000.0; state["pressure"] = pressurePa / 1000.0;
state["workState"] = state2str(getWorkstate()); state["workState"] = state2str(getWorkstate());
state["workStateDisplay"] = state2chstr(getWorkstate()); state["workStateDisplay"] = state2chstr(getWorkstate());
return state; return state;
}
}
float AirLeakDetectTest::readPressurePa() { return CalibrationInfoDao::ins()->acPressureSensorTare(m_dics->ACPostPS_readPa() / 1000.0) * 1000; }

2
appsrc/service/app/air_leak_detect_test.hpp

@ -90,6 +90,8 @@ class AirLeakDetectTest : public enable_shared_from_this<AirLeakDetectTest> {
void stopStateReport(shared_ptr<MsgProcessContext> cxt); void stopStateReport(shared_ptr<MsgProcessContext> cxt);
json getState(); json getState();
float readPressurePa();
private: private:
void airLeakDetectTestThread(int inflationTimeMs); void airLeakDetectTestThread(int inflationTimeMs);
}; };

25
appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp

@ -269,6 +269,15 @@ void DisinfectionCtrlService::updateCfg() {
sm.pushEvent(event); sm.pushEvent(event);
} }
void DisinfectionCtrlService::injectPumpSet(int velocityGPM) {
s_injectPumpRealtimeVelocityGPM = velocityGPM;
dics->SprayPump_start(velocityGPM);
}
void DisinfectionCtrlService::injectPumpStop() {
s_injectPumpRealtimeVelocityGPM = 0;
dics->SprayPump_stop();
}
void DisinfectionCtrlService::tryLogState(bool forceLog) { void DisinfectionCtrlService::tryLogState(bool forceLog) {
// 每隔离10秒记录一次 // 每隔离10秒记录一次
if (forceLog || zsteady_clock().elapsedTimeS(s_lastTakeSnapt) > 10) { if (forceLog || zsteady_clock().elapsedTimeS(s_lastTakeSnapt) > 10) {
@ -503,12 +512,16 @@ void DisinfectionCtrlService::processStateDisinfection(DisinfectionEvent* event)
dics->AC_ctrl(1); dics->AC_ctrl(1);
dics->Blower_ctrl(DEFAULT_BLOWSER_LEVEL); dics->Blower_ctrl(DEFAULT_BLOWSER_LEVEL);
dics->Heater_ctrl(1); dics->Heater_ctrl(1);
dics->SprayPump_start(getSettingAsInt(SettingId::injection_pump_speed));
injectPumpSet(getSettingAsInt(SettingId::injection_pump_speed));
s_remaintime = m_tlog * 60 * 60 * 2; s_remaintime = m_tlog * 60 * 60 * 2;
} else if (event->event == kevent_exit_state) { } else if (event->event == kevent_exit_state) {
s_isDisinfectionTakeBreak = false; s_isDisinfectionTakeBreak = false;
dics->SprayPump_stop();
injectPumpStop();
dics->Blower_close(); dics->Blower_close();
dics->Heater_close(); dics->Heater_close();
dics->AC_close(); dics->AC_close();
@ -542,7 +555,7 @@ void DisinfectionCtrlService::processStateDisinfection(DisinfectionEvent* event)
if (!s_isDisinfectionTakeBreak) { if (!s_isDisinfectionTakeBreak) {
if (isTimeToPauseDisinfection()) { if (isTimeToPauseDisinfection()) {
logger->info("pauseDisinfection"); logger->info("pauseDisinfection");
dics->SprayPump_stop();
injectPumpStop();
dics->AC_close(); dics->AC_close();
s_isDisinfectionTakeBreak = true; s_isDisinfectionTakeBreak = true;
tryLogState(true); tryLogState(true);
@ -552,7 +565,7 @@ void DisinfectionCtrlService::processStateDisinfection(DisinfectionEvent* event)
logger->info("resumeDisinfection"); logger->info("resumeDisinfection");
if (!handlePumpStopFlag) { if (!handlePumpStopFlag) {
dics->AC_ctrl(1); dics->AC_ctrl(1);
dics->SprayPump_start(getSettingAsInt(SettingId::injection_pump_speed));
injectPumpSet(getSettingAsInt(SettingId::injection_pump_speed));
} }
s_isDisinfectionTakeBreak = false; s_isDisinfectionTakeBreak = false;
tryLogState(true); tryLogState(true);
@ -600,10 +613,10 @@ void DisinfectionCtrlService::processStateDisinfection(DisinfectionEvent* event)
} else if (event->event == kevent_update_cfg) { } else if (event->event == kevent_update_cfg) {
if (!s_isDisinfectionTakeBreak && !handlePumpStopFlag) { if (!s_isDisinfectionTakeBreak && !handlePumpStopFlag) {
dics->AC_ctrl(1); dics->AC_ctrl(1);
dics->SprayPump_start(getSettingAsInt(SettingId::injection_pump_speed));
injectPumpSet(getSettingAsInt(SettingId::injection_pump_speed));
} }
if (handlePumpStopFlag) { if (handlePumpStopFlag) {
dics->SprayPump_stop();
injectPumpStop();
dics->AC_close(); dics->AC_close();
} }
} }

72
appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.hpp

@ -46,20 +46,21 @@ class DisinfectionCtrlService : public enable_shared_from_this<DisinfectionCtrlS
unique_ptr<Thread> m_thread; unique_ptr<Thread> m_thread;
// 实时任务状态 // 实时任务状态
string s_sessionId = {};
zsystem_tp s_start_tp = {};
zsystem_tp s_complete_tp = {};
zsteady_tp s_start_steady_tp = {};
zsteady_tp s_lastTakeSnapt = {}; // 上次日志时间
zsteady_tp s_lastComputeDvalueTp = {}; // 上次计算dvalue时间
bool s_isDisinfectionTakeBreak = false;
shared_ptr<H2O2SensorDataSnapshot> s_h2o2Snapshot = {};
int32_t s_dvalue = 0;
int32_t s_remaintime = 0;
float s_nlog = {};
int s_beforeDisinfectantVolume_g = {}; // 消毒前消毒剂量
int s_afterDisinfectantVolume_g = {}; // 消毒后消毒剂量
int s_disinfectantVolumeLevel = {}; // 消毒液位级别
string s_sessionId = {};
zsystem_tp s_start_tp = {};
zsystem_tp s_complete_tp = {};
zsteady_tp s_start_steady_tp = {};
zsteady_tp s_lastTakeSnapt = {}; // 上次日志时间
zsteady_tp s_lastComputeDvalueTp = {}; // 上次计算dvalue时间
bool s_isDisinfectionTakeBreak = false;
shared_ptr<H2O2SensorDataSnapshot> s_h2o2Snapshot = {};
int32_t s_dvalue = 0;
int32_t s_remaintime = 0;
float s_nlog = {};
int s_beforeDisinfectantVolume_g = {}; // 消毒前消毒剂量
int s_afterDisinfectantVolume_g = {}; // 消毒后消毒剂量
int s_disinfectantVolumeLevel = {}; // 消毒液位级别
int s_injectPumpRealtimeVelocityGPM = 0;
bool handlePumpStopFlag = false; // bool handlePumpStopFlag = false; //
@ -95,7 +96,6 @@ class DisinfectionCtrlService : public enable_shared_from_this<DisinfectionCtrlS
void handleStopPumpInjection(); void handleStopPumpInjection();
void handleStartPumpInjection(); void handleStartPumpInjection();
bool getHandlePumpStopFlag() { return handlePumpStopFlag; } bool getHandlePumpStopFlag() { return handlePumpStopFlag; }
map<string, string>& getRealtimeCfg() { return m_realtimeCfg; } map<string, string>& getRealtimeCfg() { return m_realtimeCfg; }
@ -105,32 +105,28 @@ class DisinfectionCtrlService : public enable_shared_from_this<DisinfectionCtrlS
float getNlog() { return s_nlog; } float getNlog() { return s_nlog; }
int64_t getStartTP() { return tu_sys::tpToMs(s_start_tp); } int64_t getStartTP() { return tu_sys::tpToMs(s_start_tp); }
int64_t getCompleteTP() { return tu_sys::tpToMs(s_complete_tp); } int64_t getCompleteTP() { return tu_sys::tpToMs(s_complete_tp); }
int getInjectedVelocity() {
if (sm.getState() == DisinfectionState::disinfection && !s_isDisinfectionTakeBreak) {
return getSettingAsInt(SettingId::injection_pump_speed);
}
return 0;
}
bool isDisinfectionTakeBreak() { return s_isDisinfectionTakeBreak; }
int getInjectedVelocity() { return s_injectPumpRealtimeVelocityGPM; }
bool isDisinfectionTakeBreak() { return s_isDisinfectionTakeBreak; }
shared_ptr<H2O2SensorDataSnapshot> getH2O2Snapshot() { return h2o2SensorStateSyncService->takeSnapshot(); } shared_ptr<H2O2SensorDataSnapshot> getH2O2Snapshot() { return h2o2SensorStateSyncService->takeSnapshot(); }
private: private:
void resetState() { void resetState() {
s_sessionId = {};
s_start_tp = {};
s_complete_tp = {};
s_start_steady_tp = {};
s_lastTakeSnapt = {}; // 上次日志时间
s_lastComputeDvalueTp = {}; // 上次计算dvalue时间
s_isDisinfectionTakeBreak = false;
s_h2o2Snapshot = {};
s_dvalue = 0;
s_remaintime = 0;
s_nlog = {};
s_beforeDisinfectantVolume_g = {}; // 消毒前消毒剂量
s_afterDisinfectantVolume_g = {}; // 消毒后消毒剂量
s_disinfectantVolumeLevel = {}; // 消毒液位级别
s_sessionId = {};
s_start_tp = {};
s_complete_tp = {};
s_start_steady_tp = {};
s_lastTakeSnapt = {}; // 上次日志时间
s_lastComputeDvalueTp = {}; // 上次计算dvalue时间
s_isDisinfectionTakeBreak = false;
s_h2o2Snapshot = {};
s_dvalue = 0;
s_remaintime = 0;
s_nlog = {};
s_beforeDisinfectantVolume_g = {}; // 消毒前消毒剂量
s_afterDisinfectantVolume_g = {}; // 消毒后消毒剂量
s_disinfectantVolumeLevel = {}; // 消毒液位级别
s_injectPumpRealtimeVelocityGPM = 0;
} }
void beforeStateProcess(); void beforeStateProcess();
@ -148,6 +144,10 @@ class DisinfectionCtrlService : public enable_shared_from_this<DisinfectionCtrlS
void changeToNextState(); void changeToNextState();
private: private:
void injectPumpSet(int velocityGPM);
void injectPumpStop();
private:
void tryLogState(bool forceLog); void tryLogState(bool forceLog);
shared_ptr<DisinfectionStateSnapshot> createSnapshot(bool forceLog); shared_ptr<DisinfectionStateSnapshot> createSnapshot(bool forceLog);

9
appsrc/service/app_core.cpp

@ -24,7 +24,7 @@
#include "hardware/warning_light_controler.hpp" #include "hardware/warning_light_controler.hpp"
// //
#include "baseservice/db/device_ext_setting_dao.hpp" #include "baseservice/db/device_ext_setting_dao.hpp"
#include "calibration/h2o2_liquid_weight_sensor_calibration_service.hpp"
#include "calibration/sensor_calibration_service.hpp"
#include "equipment_usage_info_mgr_service.hpp" #include "equipment_usage_info_mgr_service.hpp"
#include "service/h2o2_sensor_mgr.hpp" #include "service/h2o2_sensor_mgr.hpp"
#include "service/hardware/h2o2_sensor_state_sync.hpp" #include "service/hardware/h2o2_sensor_state_sync.hpp"
@ -173,11 +173,10 @@ void AppCore::initialize() {
BUILD_AND_REG_SERRVICE(AirLeakDetectTest); BUILD_AND_REG_SERRVICE(AirLeakDetectTest);
BUILD_AND_REG_SERRVICE(DisinfectionCtrlService); BUILD_AND_REG_SERRVICE(DisinfectionCtrlService);
BUILD_AND_REG_SERRVICE(DisinfectionCtrlServiceExt); BUILD_AND_REG_SERRVICE(DisinfectionCtrlServiceExt);
BUILD_AND_REG_SERRVICE(DrainLiquidService);
BUILD_AND_REG_SERRVICE(EquipmentUsageInfoMgrService);
BUILD_AND_REG_SERRVICE(DeviceMonitorService); BUILD_AND_REG_SERRVICE(DeviceMonitorService);
BUILD_AND_REG_SERRVICE(H2O2LiquidWeightSensorCalibrationService); // H2O2液体重量传感器校准
BUILD_AND_REG_SERRVICE(EquipmentUsageInfoMgrService);
BUILD_AND_REG_SERRVICE(DrainLiquidService);
BUILD_AND_REG_SERRVICE(SensorCalibrationService); // H2O2液体重量传感器校准
BUILD_AND_REG_SERRVICE(ExtSettingMgrService); BUILD_AND_REG_SERRVICE(ExtSettingMgrService);
BUILD_AND_REG_SERRVICE(DebugPageTestService); BUILD_AND_REG_SERRVICE(DebugPageTestService);

32
appsrc/service/calibration/h2o2_liquid_weight_sensor_calibration_service.cpp

@ -1,32 +0,0 @@
#include "h2o2_liquid_weight_sensor_calibration_service.hpp"
using namespace iflytop;
using namespace std;
using namespace core;
void H2O2LiquidWeightSensorCalibrationService::initialize() {
REG_CLASS("存液桶校准");
GET_TO_SERVICE(m_disinfectantWeightUpdateService);
REG_EXTFN_VOID(getWeight, json(void)); //
REG_EXTFN_VOID(tare, void(void)); // 去皮
REG_EXTFN(setBiasDirect, void(float), bias); //
REG_EXTFN_VOID(getBias, void(void)); //
}
void H2O2LiquidWeightSensorCalibrationService::tare(shared_ptr<MsgProcessContext> cxt) { //
float weight = m_disinfectantWeightUpdateService->getRoughWeight();
CalibrationInfoDao::ins()->setH2O2LiquidWeightSensorZeroBias(weight + 10);
}
void H2O2LiquidWeightSensorCalibrationService::getWeight(shared_ptr<MsgProcessContext> cxt) {
float weight = m_disinfectantWeightUpdateService->getWeight();
float roughWeight = m_disinfectantWeightUpdateService->getRoughWeight();
cxt->rely["weight"] = weight;
cxt->rely["roughWeight"] = roughWeight;
}
void H2O2LiquidWeightSensorCalibrationService::getBias(shared_ptr<MsgProcessContext> cxt) {
float bias = CalibrationInfoDao::ins()->getH2O2LiquidWeightSensorZeroBias();
cxt->rely["bias"] = bias;
}
void H2O2LiquidWeightSensorCalibrationService::setBiasDirect(shared_ptr<MsgProcessContext> cxt, float bias) { CalibrationInfoDao::ins()->setH2O2LiquidWeightSensorZeroBias(bias); }

58
appsrc/service/calibration/sensor_calibration_service.cpp

@ -0,0 +1,58 @@
#include "sensor_calibration_service.hpp"
using namespace iflytop;
using namespace std;
using namespace core;
void SensorCalibrationService::initialize() {
GET_TO_SERVICE(m_disinfectantWeightUpdateService);
REG_CLASS("传感器标定")
REG_EXTFN_VOID(getWeight, json(void)); //
REG_EXTFN_DISPNAME(getWeight, "储液桶-获取重量");
REG_EXTFN_VOID(tare, void(void));
REG_EXTFN_DISPNAME(tare, "储液桶-去皮");
REG_EXTFN(setBiasDirect, void(float), bias); //
REG_EXTFN_DISPNAME(setBiasDirect, "储液桶-设置偏置");
REG_EXTFN_VOID(getBias, void(void)); //
REG_EXTFN_DISPNAME(getBias, "储液桶-获取偏置");
REG_EXTFN(setACPressureSensorZeroBiasKpa, void(float), val); // 设置AC压力传感器零点偏置
REG_EXTFN_DISPNAME(setACPressureSensorZeroBiasKpa, "AC压力传感器-设置零点偏置");
REG_EXTFN_VOID(getACPressureSensorZeroBiasKpa, void(void)); // 获取AC压力传感器零点偏置
REG_EXTFN_DISPNAME(getACPressureSensorZeroBiasKpa, "AC压力传感器-获取零点偏置");
REG_EXTFN_VOID(getACPressureSensorVal, void(void)); // 获取AC压力传感器去皮后的值
REG_EXTFN_DISPNAME(getACPressureSensorVal, "AC压力传感器-读取");
}
void SensorCalibrationService::tare(shared_ptr<MsgProcessContext> cxt) { //
float weight = m_disinfectantWeightUpdateService->getRoughWeight();
CalibrationInfoDao::ins()->setH2O2LiquidWeightSensorZeroBias(weight + 10);
}
void SensorCalibrationService::getWeight(shared_ptr<MsgProcessContext> cxt) {
float weight = m_disinfectantWeightUpdateService->getWeight();
float roughWeight = m_disinfectantWeightUpdateService->getRoughWeight();
cxt->rely["weight"] = weight;
cxt->rely["roughWeight"] = roughWeight;
}
void SensorCalibrationService::getBias(shared_ptr<MsgProcessContext> cxt) {
float bias = CalibrationInfoDao::ins()->getH2O2LiquidWeightSensorZeroBias();
cxt->rely["bias"] = bias;
}
void SensorCalibrationService::setBiasDirect(shared_ptr<MsgProcessContext> cxt, float bias) { CalibrationInfoDao::ins()->setH2O2LiquidWeightSensorZeroBias(bias); }
void SensorCalibrationService::setACPressureSensorZeroBiasKpa(shared_ptr<MsgProcessContext> cxt, float val) { CalibrationInfoDao::ins()->setACPressureSensorZeroBiasKpa(val); }
void SensorCalibrationService::getACPressureSensorZeroBiasKpa(shared_ptr<MsgProcessContext> cxt) {
float bias = CalibrationInfoDao::ins()->getACPressureSensorZeroBiasKpa();
cxt->rely["bias"] = bias; //
}
void SensorCalibrationService::getACPressureSensorVal(shared_ptr<MsgProcessContext> cxt) {
float weight = GET_SERVICE(DeviceIoControlService)->ACPostPS_readPa() / 1000.0;
float aftare = CalibrationInfoDao::ins()->acPressureSensorTare(weight);
cxt->rely["afterTare"] = aftare; // 去皮后的值
cxt->rely["rawVal"] = weight; // 原始值
}

10
appsrc/service/calibration/h2o2_liquid_weight_sensor_calibration_service.hpp → appsrc/service/calibration/sensor_calibration_service.hpp

@ -12,8 +12,8 @@
#include "baseservice/baseservice.hpp" #include "baseservice/baseservice.hpp"
#include "service/hardware/disinfectant_weight_update_service.hpp" #include "service/hardware/disinfectant_weight_update_service.hpp"
namespace iflytop { namespace iflytop {
class H2O2LiquidWeightSensorCalibrationService : public enable_shared_from_this<H2O2LiquidWeightSensorCalibrationService> {
THISCLASS(H2O2LiquidWeightSensorCalibrationService);
class SensorCalibrationService : public enable_shared_from_this<SensorCalibrationService> {
THISCLASS(SensorCalibrationService);
shared_ptr<UDiskMgrService> m_udiskMgr; shared_ptr<UDiskMgrService> m_udiskMgr;
shared_ptr<DisinfectantWeightUpdateService> m_disinfectantWeightUpdateService; shared_ptr<DisinfectantWeightUpdateService> m_disinfectantWeightUpdateService;
@ -25,7 +25,11 @@ class H2O2LiquidWeightSensorCalibrationService : public enable_shared_from_this<
void tare(shared_ptr<MsgProcessContext> cxt); void tare(shared_ptr<MsgProcessContext> cxt);
void getWeight(shared_ptr<MsgProcessContext> cxt); void getWeight(shared_ptr<MsgProcessContext> cxt);
void getBias(shared_ptr<MsgProcessContext> cxt); void getBias(shared_ptr<MsgProcessContext> cxt);
void setBiasDirect(shared_ptr<MsgProcessContext> cxt,float val);
void setBiasDirect(shared_ptr<MsgProcessContext> cxt, float val);
void setACPressureSensorZeroBiasKpa(shared_ptr<MsgProcessContext> cxt, float val);
void getACPressureSensorZeroBiasKpa(shared_ptr<MsgProcessContext> cxt);
void getACPressureSensorVal(shared_ptr<MsgProcessContext> cxt) ;
}; };
} // namespace iflytop } // namespace iflytop

73
appsrc/service/debug_page_test_service.cpp

@ -7,25 +7,29 @@ void DebugPageTestService::initialize() {
REG_EXTFN_VOID(enterTestMode, void(void)); REG_EXTFN_VOID(enterTestMode, void(void));
REG_EXTFN_VOID(exitTestMode, void(void)); REG_EXTFN_VOID(exitTestMode, void(void));
REG_EXTFN(startGenFakeH2O2Data, void(json), data);
REG_EXTFN_VOID(startGenFakeHighH2O2Data, void(void));
REG_EXTFN_DISPNAME(startGenFakeHighH2O2Data, "开始生成高H2O2数据");
REG_EXTFN_VOID(startGenFakeZeroH2O2Data, void(void));
REG_EXTFN_DISPNAME(startGenFakeZeroH2O2Data, "开始生成零H2O2数据");
REG_EXTFN_VOID(stopGenFakeH2O2Data, void(void)); REG_EXTFN_VOID(stopGenFakeH2O2Data, void(void));
REG_EXTFN_VOID(getGenFakeH2O2DataDemoJson, void(void));
REG_EXTFN_DISPNAME(stopGenFakeH2O2Data, "停止生成H2O2数据");
REG_EXTFN_VOID(triggerAppWarningPromoptEvent, void(void)); REG_EXTFN_VOID(triggerAppWarningPromoptEvent, void(void));
REG_EXTFN(triggerPromptEvent, void(string), message); REG_EXTFN(triggerPromptEvent, void(string), message);
REG_EXTFN(test_int, int(json), param0);
REG_EXTFN(test_int, int(SettingId), param0);
REG_EXTFN(test_int, int(int), param0);
REG_EXTFN(test_string, void(string), param0);
REG_EXTFN(test_float, void(float), param0);
REG_EXTFN(test_double, void(double), param0);
REG_EXTFN(test_bool, void(bool), param0);
REG_EXTFN(test_vector_int, void(vector<int>), param0);
REG_EXTFN(test_vector_string, void(vector<string>), param0);
REG_EXTFN(test_vector_double, void(vector<double>), param0);
REG_EXTFN(test_vecto_json, void(vector<json>), param0);
REG_EXTFN(test_vecto_bool, void(vector<bool>), param0);
// REG_EXTFN(test_int, int(json), param0);
// REG_EXTFN(test_int, int(SettingId), param0);
// REG_EXTFN(test_int, int(int), param0);
// REG_EXTFN(test_string, void(string), param0);
// REG_EXTFN(test_float, void(float), param0);
// REG_EXTFN(test_double, void(double), param0);
// REG_EXTFN(test_bool, void(bool), param0);
// REG_EXTFN(test_vector_int, void(vector<int>), param0);
// REG_EXTFN(test_vector_string, void(vector<string>), param0);
// REG_EXTFN(test_vector_double, void(vector<double>), param0);
// REG_EXTFN(test_vecto_json, void(vector<json>), param0);
// REG_EXTFN(test_vecto_bool, void(vector<bool>), param0);
// REG_EXTFN(test_vecto_enum, void(vector<SettingId>), param0); // REG_EXTFN(test_vecto_enum, void(vector<SettingId>), param0);
} }
void DebugPageTestService::test_json(shared_ptr<MsgProcessContext> cxt, json param0) {} void DebugPageTestService::test_json(shared_ptr<MsgProcessContext> cxt, json param0) {}
@ -57,6 +61,47 @@ typedef struct {
#if 0 #if 0
#endif #endif
void DebugPageTestService::startGenFakeZeroH2O2Data(shared_ptr<MsgProcessContext> cxt) {
if (m_genFakeH2O2DataThread) {
m_genFakeH2O2DataThread->join();
m_genFakeH2O2DataThread = nullptr;
}
m_genFakeH2O2DataThread.reset(new Thread("genFakeH2O2DataThread", [this]() {
while (!ThisThread().getExitFlag()) {
ThisThread().sleepForMs(1000);
report_h2o2_data_t reportData;
reportData.rh = 50 * 10;
reportData.h2o2 = 0;
reportData.temp = 25 * 10; // 温度是整数,乘以10
reportData.rs = 50 * 10; // rs is in %RS, convert to float
h2o2SensorStateSyncService->updateH2o2SensorData(H2O2SensorType::Internal, 1, &reportData);
}
}));
}
void DebugPageTestService::startGenFakeHighH2O2Data(shared_ptr<MsgProcessContext> cxt) {
if (m_genFakeH2O2DataThread) {
m_genFakeH2O2DataThread->join();
m_genFakeH2O2DataThread = nullptr;
}
m_genFakeH2O2DataThread.reset(new Thread("genFakeH2O2DataThread", [this]() {
while (!ThisThread().getExitFlag()) {
ThisThread().sleepForMs(1000);
report_h2o2_data_t reportData;
reportData.rh = 50 * 10;
reportData.h2o2 = 400;
reportData.temp = 25 * 10; // 温度是整数,乘以10
reportData.rs = 50 * 10; // rs is in %RS, convert to float
h2o2SensorStateSyncService->updateH2o2SensorData(H2O2SensorType::Internal, 1, &reportData);
}
}));
}
void DebugPageTestService::startGenFakeH2O2Data(shared_ptr<MsgProcessContext> cxt, json data) { void DebugPageTestService::startGenFakeH2O2Data(shared_ptr<MsgProcessContext> cxt, json data) {
if (m_genFakeH2O2DataThread) { if (m_genFakeH2O2DataThread) {

6
appsrc/service/debug_page_test_service.hpp

@ -21,14 +21,16 @@ class DebugPageTestService : public enable_shared_from_this<DebugPageTestService
void initialize(); void initialize();
private: private:
void triggerAppWarningPromoptEvent(shared_ptr<MsgProcessContext> cxt); void triggerAppWarningPromoptEvent(shared_ptr<MsgProcessContext> cxt);
void triggerPromptEvent(shared_ptr<MsgProcessContext> cxt,string message);
void triggerPromptEvent(shared_ptr<MsgProcessContext> cxt, string message);
void triggerAppCheckPointFailEvent(shared_ptr<MsgProcessContext> cxt); void triggerAppCheckPointFailEvent(shared_ptr<MsgProcessContext> cxt);
void enterTestMode(shared_ptr<MsgProcessContext> cxt); void enterTestMode(shared_ptr<MsgProcessContext> cxt);
void exitTestMode(shared_ptr<MsgProcessContext> cxt); void exitTestMode(shared_ptr<MsgProcessContext> cxt);
void startGenFakeZeroH2O2Data(shared_ptr<MsgProcessContext> cxt);
void startGenFakeH2O2Data(shared_ptr<MsgProcessContext> cxt, json data); void startGenFakeH2O2Data(shared_ptr<MsgProcessContext> cxt, json data);
void startGenFakeHighH2O2Data(shared_ptr<MsgProcessContext> cxt);
void stopGenFakeH2O2Data(shared_ptr<MsgProcessContext> cxt); void stopGenFakeH2O2Data(shared_ptr<MsgProcessContext> cxt);
void getGenFakeH2O2DataDemoJson(shared_ptr<MsgProcessContext> cxt); void getGenFakeH2O2DataDemoJson(shared_ptr<MsgProcessContext> cxt);

Loading…
Cancel
Save