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