Browse Source

update

storage-in-realtime
zhaohe 1 year ago
parent
commit
5cfdad2ce6
  1. 2
      iflytoplinuxsdk
  2. 9
      src/configs/project_setting.hpp
  3. 64
      src/service/device_io_control_service.cpp
  4. 37
      src/service/device_io_control_service.hpp
  5. 20
      src/utils/volume_convertor.hpp

2
iflytoplinuxsdk

@ -1 +1 @@
Subproject commit d3f953abc7412dacab027d4af3bef0958724e879
Subproject commit 7c49f67b539e76c7b6417bc121a242ea43621a65

9
src/configs/project_setting.hpp

@ -11,6 +11,7 @@
// #define PROJECT_TYPE_LARGE_SPACE_DISINFECTION 1 // 大空间 // #define PROJECT_TYPE_LARGE_SPACE_DISINFECTION 1 // 大空间
#define PROJECT_TYPE_SMALL_SPACE_DISINFECTION 1 // 小空间 #define PROJECT_TYPE_SMALL_SPACE_DISINFECTION 1 // 小空间
// #define PROJECT_TYPE_PIPE_DISINFECTION 1 // 管道消毒机
#ifdef PROJECT_TYPE_SMALL_SPACE_DISINFECTION #ifdef PROJECT_TYPE_SMALL_SPACE_DISINFECTION
#define DISINFECTANT_BUCKET_CAPACITY 2300 #define DISINFECTANT_BUCKET_CAPACITY 2300
@ -24,5 +25,11 @@
#define MAX_H2O2_SENSOR_NUM (3) #define MAX_H2O2_SENSOR_NUM (3)
#endif #endif
#define MAX_DISINFECTIONLOGGER_FILE_NUM 5 // 最大日志文件数量
#ifdef PROJECT_TYPE_PIPE_DISINFECTION
#define DISINFECTANT_BUCKET_CAPACITY 2300
#define PROJECT_NAME "pipe_disinfection"
#define MAX_H2O2_SENSOR_NUM (1)
#endif
#define MAX_DISINFECTIONLOGGER_FILE_NUM 5 // 最大日志文件数量
#define USER_BEHAVIOR_RECORD_DB_MAX_RECORDS 3000 #define USER_BEHAVIOR_RECORD_DB_MAX_RECORDS 3000

64
src/service/device_io_control_service.cpp

@ -415,3 +415,67 @@ void DeviceIoControlService::H2O2Sensor_updateSensorData(int32_t sensorid, repor
sensor_data->sensorId = data->sensorid; sensor_data->sensorId = data->sensorid;
sensor_data->updatetime = zsys_get_ticket(); sensor_data->updatetime = zsys_get_ticket();
} }
#ifdef PROJECT_TYPE_PIPE_DISINFECTION
void DeviceIoControlService::AirInletProportionalValve_setState(int32_t val) {
m_AirInletProportionalValve_state = val;
m_zcanHost->call(kcmd_proportional_set_valve, 1, val);
}
void DeviceIoControlService::AirOutletProportionalValve_setState(int32_t val) {
m_AirOutletProportionalValve_state = val;
m_zcanHost->call(kcmd_proportional_set_valve, 2, val);
}
int32_t DeviceIoControlService::AirInletProportionalValve_getState() { return m_AirInletProportionalValve_state; }
int32_t DeviceIoControlService::AirOutletProportionalValve_getState() { return m_AirOutletProportionalValve_state; }
int32_t DeviceIoControlService::AirProportionalValve_setState(int32_t inlet, int32_t outlet) {
m_zcanHost->call(kcmd_proportional_set_valve, 1, inlet);
m_zcanHost->call(kcmd_proportional_set_valve, 2, outlet);
m_AirInletProportionalValve_state = inlet;
m_AirOutletProportionalValve_state = outlet;
return 0;
}
int32_t DeviceIoControlService::AirProportionalValve_getState(int32_t* inlet, int32_t* outlet) {
*inlet = m_AirInletProportionalValve_state;
*outlet = m_AirOutletProportionalValve_state;
return 0;
}
int32_t DeviceIoControlService::AirProportionalValve_isBusy(int32_t* isbusy) {
*isbusy = 0;
return m_zcanHost->call(kcmd_proportional_read_state, isbusy);
}
#endif
#ifdef PROJECT_TYPE_PIPE_DISINFECTION
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, 2);
} else {
return err::kfail;
}
return 0;
}
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;
}
#endif

37
src/service/device_io_control_service.hpp

@ -83,6 +83,17 @@ class DeviceIoControlService : public IF_DeviceIoContrlService {
h2o2_sensor_data_t m_h2o2_sensor_data[MAX_H2O2_SENSOR_NUM] = {0}; h2o2_sensor_data_t m_h2o2_sensor_data[MAX_H2O2_SENSOR_NUM] = {0};
std::mutex m_h2o2_sensor_data_lock_; std::mutex m_h2o2_sensor_data_lock_;
#ifdef PROJECT_TYPE_PIPE_DISINFECTION
/*******************************************************************************
* *
*******************************************************************************/
int32_t m_AirInletProportionalValve_state = 0;
int32_t m_AirOutletProportionalValve_state = 0;
int32_t m_airCompressor_valve1State = 0;
int32_t m_airCompressor_valve2State = 0;
int32_t m_airCompressor_channelIndex = 0;
#endif
public: public:
DeviceIoControlService(); DeviceIoControlService();
@ -127,6 +138,17 @@ class DeviceIoControlService : public IF_DeviceIoContrlService {
virtual int airCompressor_getstate() override; virtual int airCompressor_getstate() override;
virtual int airCompressor_getcurrentValue() override; virtual int airCompressor_getcurrentValue() override;
#ifdef PROJECT_TYPE_PIPE_DISINFECTION
virtual int airCompressor_channelSelect(int32_t val);
virtual int airCompressor_getChannelIndex();
virtual int airCompressor_setValve1(int32_t val); // 0关闭通道 1打开通道
virtual int airCompressor_setValve2(int32_t val); // 0关闭通道 1打开通道
virtual int airCompressor_getValve1();
virtual int airCompressor_getValve2();
virtual float airCompressor_getPressure();
virtual float airCompressor_getPressureDirect();
#endif
/******************************************************************************* /*******************************************************************************
* * * *
*******************************************************************************/ *******************************************************************************/
@ -162,6 +184,21 @@ class DeviceIoControlService : public IF_DeviceIoContrlService {
virtual void warningLightCtrl(int r, int g, int b, int w) override; virtual void warningLightCtrl(int r, int g, int b, int w) override;
#ifdef PROJECT_TYPE_PIPE_DISINFECTION
/*******************************************************************************
* *
*******************************************************************************/
virtual void AirInletProportionalValve_setState(int32_t val);
virtual void AirOutletProportionalValve_setState(int32_t val);
virtual int32_t AirInletProportionalValve_getState();
virtual int32_t AirOutletProportionalValve_getState();
virtual int32_t AirProportionalValve_setState(int32_t inlet, int32_t outlet);
virtual int32_t AirProportionalValve_getState(int32_t* inlet, int32_t* outlet);
virtual int32_t AirProportionalValve_isBusy(int32_t* isbusy);
#endif
private: private:
void updateDisinfectantVolumeSample(float kpa); void updateDisinfectantVolumeSample(float kpa);
void processReportPacket(uint8_t* packet, size_t len); void processReportPacket(uint8_t* packet, size_t len);

20
src/utils/volume_convertor.hpp

@ -74,6 +74,26 @@ class VolumeConvertor {
#endif #endif
#ifdef PROJECT_TYPE_PIPE_DISINFECTION
float container_h4 = 1.83;
float container_ru4 = 0.64;
float container_rb4 = 0.64;
float container_h3 = 0.17;
float container_ru3 = 0.64;
float container_rb3 = 0.47;
float container_h2 = 0.0737;
float container_ru2 = 0.47;
float container_rb2 = 0.47;
float container_h1 = 0.0376;
float container_ru1 = 0.47;
float container_rb1 = 0.04;
float density = 1000; // kg/m^3
#endif
public: public:
float pressurePa2VolumeG(float _pa); float pressurePa2VolumeG(float _pa);

Loading…
Cancel
Save