6 changed files with 446 additions and 39 deletions
-
5src/main_control_service.cpp
-
4src/service/device_io_control_service.cpp
-
74src/service/device_io_control_service.hpp
-
279src/service/device_io_control_service_test.cpp
-
119src/service/device_io_control_service_test.hpp
-
4src/zservice_container/zservice_container.hpp
@ -0,0 +1,279 @@ |
|||||
|
#include "device_io_control_service_test.hpp"
|
||||
|
|
||||
|
using namespace iflytop; |
||||
|
using namespace std; |
||||
|
|
||||
|
#if 0
|
||||
|
模块 板子 硬件ID ID |
||||
|
空压机-安全电磁阀 3 PC2 0 |
||||
|
空压机-通断电磁阀 3 PC3 1 |
||||
|
鼓风机-安全电磁阀 3 PC4 2 |
||||
|
-通断电磁阀 3 PC5 3 |
||||
|
加热片-安全电磁阀 3 PC6 4 |
||||
|
-通断电磁阀 3 PC7 5 |
||||
|
#endif
|
||||
|
|
||||
|
#define IN_TEST 1
|
||||
|
|
||||
|
void DeviceIoControlServiceTest::initialize() {} |
||||
|
|
||||
|
void DeviceIoControlServiceTest::startScan() {} |
||||
|
|
||||
|
void DeviceIoControlServiceTest::airCompressor_setState(bool val) { |
||||
|
logger->info("airCompressor_setState:{}", val); |
||||
|
if (val) { |
||||
|
m_airCompressor_State = true; |
||||
|
} else { |
||||
|
m_airCompressor_State = false; |
||||
|
} |
||||
|
} |
||||
|
int DeviceIoControlServiceTest::airCompressor_getio1() { |
||||
|
if (m_airCompressor_State) { |
||||
|
return 1; |
||||
|
} |
||||
|
return 0; |
||||
|
} |
||||
|
int DeviceIoControlServiceTest::airCompressor_getio2() { |
||||
|
if (m_airCompressor_State) { |
||||
|
return 1; |
||||
|
} |
||||
|
return 0; |
||||
|
} |
||||
|
int DeviceIoControlServiceTest::airCompressor_getcurrentValue() { |
||||
|
if (m_airCompressor_State) { |
||||
|
return 2; |
||||
|
} |
||||
|
return 0; |
||||
|
} |
||||
|
int DeviceIoControlServiceTest::airCompressor_getstate() { |
||||
|
if (m_airCompressor_State) { |
||||
|
return 1; |
||||
|
} |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
int DeviceIoControlServiceTest::airBlower_setState(bool val) { |
||||
|
logger->info("airBlower_setState:{}", val); |
||||
|
m_airBlower_State = val; |
||||
|
|
||||
|
return 0; |
||||
|
} |
||||
|
int DeviceIoControlServiceTest::airBlower_getio1() { |
||||
|
if (m_airBlower_State) { |
||||
|
return 1; |
||||
|
} |
||||
|
return 0; |
||||
|
} |
||||
|
int DeviceIoControlServiceTest::airBlower_getio2() { |
||||
|
if (m_airBlower_State) { |
||||
|
return 1; |
||||
|
} |
||||
|
return 0; |
||||
|
} |
||||
|
int DeviceIoControlServiceTest::airBlower_getstate() { |
||||
|
if (m_airBlower_State) { |
||||
|
return 1; |
||||
|
} |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
int DeviceIoControlServiceTest::airBlower_getcurrentValue() { |
||||
|
if (m_airBlower_State) { |
||||
|
return 2; |
||||
|
} |
||||
|
return 0; |
||||
|
} |
||||
|
// heatingStrip
|
||||
|
void DeviceIoControlServiceTest::heartingPlate_setPower(bool val) { |
||||
|
logger->info("heartingPlate_setPower:{}", val); |
||||
|
|
||||
|
m_heartingPlate_power = val; |
||||
|
} |
||||
|
int DeviceIoControlServiceTest::heatingStrip_getio1() { |
||||
|
if (m_heartingPlate_power) { |
||||
|
return 1; |
||||
|
} |
||||
|
return 0; |
||||
|
} |
||||
|
int DeviceIoControlServiceTest::heatingStrip_getio2() { |
||||
|
if (m_heartingPlate_power) { |
||||
|
return 1; |
||||
|
} |
||||
|
return 0; |
||||
|
} |
||||
|
int DeviceIoControlServiceTest::heatingStrip_getstate() { |
||||
|
if (m_heartingPlate_power) { |
||||
|
return 1; |
||||
|
} |
||||
|
return 0; |
||||
|
} |
||||
|
int DeviceIoControlServiceTest::heatingStrip_getcurrentValue() { |
||||
|
if (m_heartingPlate_power) { |
||||
|
return 2; |
||||
|
} |
||||
|
return 0; |
||||
|
} |
||||
|
//
|
||||
|
int DeviceIoControlServiceTest::getChargingPump_PumpRPM() { return 0; } |
||||
|
|
||||
|
static bool drainingPump_state; |
||||
|
void DeviceIoControlServiceTest::drainingPump_open() { |
||||
|
logger->info("drainingPump_open"); |
||||
|
drainingPump_state = true; |
||||
|
} |
||||
|
void DeviceIoControlServiceTest::drainingPump_close() { |
||||
|
logger->info("drainingPump_close"); |
||||
|
drainingPump_state = false; |
||||
|
} |
||||
|
static bool replenishingFluidsPump_state; |
||||
|
void DeviceIoControlServiceTest::replenishingFluidsPump_open() { |
||||
|
logger->info("replenishingFluidsPump_open"); |
||||
|
replenishingFluidsPump_state = true; |
||||
|
} |
||||
|
void DeviceIoControlServiceTest::replenishingFluidsPump_close() { |
||||
|
logger->info("replenishingFluidsPump_close"); |
||||
|
replenishingFluidsPump_state = false; |
||||
|
} |
||||
|
|
||||
|
void DeviceIoControlServiceTest::replenishingFluidsPump_open_for_test(int gpm) { |
||||
|
logger->info("replenishingFluidsPump_open_for_test {}", gpm); |
||||
|
replenishingFluidsPump_state = true; |
||||
|
} |
||||
|
void DeviceIoControlServiceTest::replenishingFluidsPump_close_for_test() { |
||||
|
logger->info("replenishingFluidsPump_close_for_test"); |
||||
|
replenishingFluidsPump_state = false; |
||||
|
} |
||||
|
/*******************************************************************************
|
||||
|
* sprayLiquidPump * |
||||
|
*******************************************************************************/ |
||||
|
static bool sprayLiquidPump_state; |
||||
|
void DeviceIoControlServiceTest::sprayLiquidPump_open(int gpm) { |
||||
|
logger->info("sprayLiquidPump_open"); |
||||
|
sprayLiquidPump_state = true; |
||||
|
} |
||||
|
void DeviceIoControlServiceTest::sprayLiquidPump_close() { |
||||
|
logger->info("sprayLiquidPump_close"); |
||||
|
sprayLiquidPump_state = false; |
||||
|
} |
||||
|
|
||||
|
void DeviceIoControlServiceTest::sprayLiquidPump_open_for_test(int gpm) { |
||||
|
logger->info("sprayLiquidPump_open_for_test {}", gpm); |
||||
|
sprayLiquidPump_state = true; |
||||
|
} |
||||
|
void DeviceIoControlServiceTest::sprayLiquidPump_close_for_test() { |
||||
|
logger->info("sprayLiquidPump_close"); |
||||
|
sprayLiquidPump_state = false; |
||||
|
} |
||||
|
|
||||
|
int DeviceIoControlServiceTest::sprayLiquidPump_getRPM() { return 300; } |
||||
|
int DeviceIoControlServiceTest::sprayLiquidPump_getGPM() { return 30; } |
||||
|
|
||||
|
int DeviceIoControlServiceTest::sprayLiquidPump_getState() { //
|
||||
|
return (sprayLiquidPump_getRPM() != 0); |
||||
|
} |
||||
|
/*******************************************************************************
|
||||
|
* SensorState * |
||||
|
*******************************************************************************/ |
||||
|
int DeviceIoControlServiceTest::getDisinfectantVolume_g() { return 1000; } |
||||
|
int DeviceIoControlServiceTest::getPressureSensorData(int index) { return 1000; } |
||||
|
|
||||
|
int DeviceIoControlServiceTest::getWaterImmersionSensor1() { return 0; } |
||||
|
int DeviceIoControlServiceTest::getWaterImmersionSensor2() { return 0; } |
||||
|
|
||||
|
DeviceIoControlService::h2o2sensor_data_t DeviceIoControlServiceTest::getH2O2SenSorData1() { |
||||
|
DeviceIoControlService::h2o2sensor_data_t data; |
||||
|
|
||||
|
static bool isPumpOpen = false; |
||||
|
static int h2o2 = 0; |
||||
|
if (!isPumpOpen && sprayLiquidPump_getState() != 0) { |
||||
|
isPumpOpen = true; |
||||
|
h2o2 = 0; |
||||
|
} |
||||
|
if (isPumpOpen && sprayLiquidPump_getState() == 0) { |
||||
|
isPumpOpen = false; |
||||
|
} |
||||
|
|
||||
|
if (isPumpOpen) { |
||||
|
h2o2 += 10; |
||||
|
} else { |
||||
|
if (h2o2 <= 10) { |
||||
|
h2o2 -= 1; |
||||
|
} else { |
||||
|
h2o2 -= 10; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if (h2o2 < 0) { |
||||
|
h2o2 = 0; |
||||
|
} |
||||
|
|
||||
|
data.h2o2 = h2o2; |
||||
|
data.humid = 12; |
||||
|
data.temp = 34; |
||||
|
data.saturation = 56; |
||||
|
return data; |
||||
|
} |
||||
|
|
||||
|
bool DeviceIoControlServiceTest::getAllSensorData(DeviceIoControlServiceTest::all_h2o2sensor_data_t& data) { |
||||
|
data = {0}; |
||||
|
data.h2o2sensor_data[0] = getH2O2SenSorData1(); |
||||
|
data.h2o2sensor_status[0] = true; |
||||
|
|
||||
|
data.h2o2sensor_status[1] = false; |
||||
|
data.h2o2sensor_status[2] = false; |
||||
|
|
||||
|
/**
|
||||
|
* @brief 找到最小的过氧化氢浓度 |
||||
|
*/ |
||||
|
data.min_h2o2 = -1; |
||||
|
for (size_t i = 0; i < ZARRAYSIZE(data.h2o2sensor_data); i++) { |
||||
|
if (data.h2o2sensor_status[i]) { |
||||
|
if (data.min_h2o2 < 0) { |
||||
|
data.min_h2o2 = data.h2o2sensor_data[i].h2o2; |
||||
|
} else if (data.h2o2sensor_data[i].h2o2 < data.min_h2o2) { |
||||
|
data.min_h2o2 = data.h2o2sensor_data[i].h2o2; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
data.max_h2o2 = -1; |
||||
|
for (size_t i = 0; i < ZARRAYSIZE(data.h2o2sensor_data); i++) { |
||||
|
if (data.h2o2sensor_status[i]) { |
||||
|
if (data.max_h2o2 < 0) { |
||||
|
data.max_h2o2 = data.h2o2sensor_data[i].h2o2; |
||||
|
} else if (data.h2o2sensor_data[i].h2o2 > data.max_h2o2) { |
||||
|
data.max_h2o2 = data.h2o2sensor_data[i].h2o2; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/**
|
||||
|
* @brief 找到最大的过氧化氢相对饱和度 |
||||
|
*/ |
||||
|
data.max_saturation = -1; |
||||
|
for (size_t i = 0; i < ZARRAYSIZE(data.h2o2sensor_data); i++) { |
||||
|
if (data.h2o2sensor_status[i]) { |
||||
|
if (data.max_saturation < 0) { |
||||
|
data.max_saturation = data.h2o2sensor_data[i].saturation; |
||||
|
} else if (data.h2o2sensor_data[i].saturation > data.max_saturation) { |
||||
|
data.max_saturation = data.h2o2sensor_data[i].saturation; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/**
|
||||
|
* @brief 找到最大的相对湿度 |
||||
|
*/ |
||||
|
|
||||
|
data.max_humid = -1; |
||||
|
for (size_t i = 0; i < ZARRAYSIZE(data.h2o2sensor_data); i++) { |
||||
|
if (data.h2o2sensor_status[i]) { |
||||
|
if (data.max_humid < 0) { |
||||
|
data.max_humid = data.h2o2sensor_data[i].humid; |
||||
|
} else if (data.h2o2sensor_data[i].humid > data.max_humid) { |
||||
|
data.max_humid = data.h2o2sensor_data[i].humid; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
return true; |
||||
|
} |
@ -0,0 +1,119 @@ |
|||||
|
//
|
||||
|
// Created by zwsd
|
||||
|
//
|
||||
|
|
||||
|
#pragma once
|
||||
|
#include <fstream>
|
||||
|
#include <iostream>
|
||||
|
#include <list>
|
||||
|
#include <map>
|
||||
|
#include <memory>
|
||||
|
#include <mutex>
|
||||
|
#include <set>
|
||||
|
#include <sstream>
|
||||
|
#include <string>
|
||||
|
#include <vector>
|
||||
|
|
||||
|
#include "device_io_control_service.hpp"
|
||||
|
#include "iflytop/components/zcanreceiver/zcanhost.hpp"
|
||||
|
#include "iflytop/core/core.hpp"
|
||||
|
#include "zservice_container/zservice_container.hpp"
|
||||
|
// lock_guard<mutex> lock(lock_);
|
||||
|
|
||||
|
#include <mutex>
|
||||
|
// std::lock_guard<std::recursive_mutex> lock(lock_);
|
||||
|
|
||||
|
/**
|
||||
|
* @brief |
||||
|
* |
||||
|
* service: DeviceIoControlService |
||||
|
* |
||||
|
* 监听事件: |
||||
|
* 依赖状态: |
||||
|
* 依赖服务: |
||||
|
* 作用: |
||||
|
* |
||||
|
*/ |
||||
|
|
||||
|
namespace iflytop { |
||||
|
using namespace std; |
||||
|
using namespace core; |
||||
|
|
||||
|
class DeviceIoControlServiceTest : public DeviceIoControlService { |
||||
|
ENABLE_LOGGER(DeviceIoControlServiceTest); |
||||
|
|
||||
|
bool m_airCompressor_State; |
||||
|
bool m_airBlower_State; |
||||
|
bool m_heartingPlate_power; |
||||
|
|
||||
|
public: |
||||
|
virtual void initialize(); |
||||
|
virtual void startScan(); |
||||
|
|
||||
|
public: |
||||
|
/*******************************************************************************
|
||||
|
* 加热片控制 * |
||||
|
*******************************************************************************/ |
||||
|
virtual int heatingStrip_getio1(); |
||||
|
virtual int heatingStrip_getio2(); |
||||
|
virtual int heatingStrip_getstate(); |
||||
|
virtual int heatingStrip_getcurrentValue(); |
||||
|
void heartingPlate_setPower(bool val); |
||||
|
|
||||
|
/*******************************************************************************
|
||||
|
* 鼓风机控制 * |
||||
|
*******************************************************************************/ |
||||
|
virtual int airBlower_getio1(); |
||||
|
virtual int airBlower_getio2(); |
||||
|
virtual int airBlower_getstate(); |
||||
|
virtual int airBlower_getcurrentValue(); |
||||
|
virtual int airBlower_setState(bool state); |
||||
|
|
||||
|
/*******************************************************************************
|
||||
|
* 空压机控制 * |
||||
|
*******************************************************************************/ |
||||
|
virtual void airCompressor_setState(bool val); |
||||
|
virtual int airCompressor_getio1(); |
||||
|
virtual int airCompressor_getio2(); |
||||
|
virtual int airCompressor_getstate(); |
||||
|
virtual int airCompressor_getcurrentValue(); |
||||
|
|
||||
|
// heatingStrip
|
||||
|
|
||||
|
/*******************************************************************************
|
||||
|
* 泵控制 * |
||||
|
*******************************************************************************/ |
||||
|
virtual int getChargingPump_PumpRPM(); |
||||
|
// 排液泵
|
||||
|
virtual void drainingPump_open(); |
||||
|
virtual void drainingPump_close(); |
||||
|
// 充液泵
|
||||
|
virtual void replenishingFluidsPump_open(); |
||||
|
virtual void replenishingFluidsPump_close(); |
||||
|
|
||||
|
virtual void replenishingFluidsPump_open_for_test(int speed); |
||||
|
virtual void replenishingFluidsPump_close_for_test(); |
||||
|
|
||||
|
// 喷液泵
|
||||
|
virtual void sprayLiquidPump_open(int gpm); |
||||
|
virtual void sprayLiquidPump_close(); |
||||
|
virtual int sprayLiquidPump_getState(); |
||||
|
virtual int sprayLiquidPump_getRPM(); |
||||
|
virtual int sprayLiquidPump_getGPM(); |
||||
|
|
||||
|
virtual void sprayLiquidPump_open_for_test(int gpm); |
||||
|
virtual void sprayLiquidPump_close_for_test(); |
||||
|
|
||||
|
virtual h2o2sensor_data_t getH2O2SenSorData1(); |
||||
|
|
||||
|
/******************************************************************************
|
||||
|
* 水浸传感器 * |
||||
|
******************************************************************************/ |
||||
|
virtual int getWaterImmersionSensor1(); |
||||
|
virtual int getWaterImmersionSensor2(); |
||||
|
|
||||
|
int getDisinfectantVolume_g(); // g
|
||||
|
virtual int getPressureSensorData(int index); |
||||
|
virtual bool getAllSensorData(DeviceIoControlService::all_h2o2sensor_data_t& data); |
||||
|
}; |
||||
|
} // namespace iflytop
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue