Browse Source

v2.2.7 | 添加设备类型是否初始化检测

master
zhaohe 1 month ago
parent
commit
6961e3159e
  1. 21
      app_protocols/apperrorcode/apperrorcode.hpp
  2. 2
      appsrc/appcomponents/canchannel/com/zscanprotocol_com.cpp
  3. 2
      appsrc/appconfig/basic/zappversion.hpp
  4. 1
      appsrc/service/app_core.cpp
  5. 85
      appsrc/service/hardware/device_io_ctrl_service.cpp

21
app_protocols/apperrorcode/apperrorcode.hpp

@ -17,19 +17,20 @@ namespace err {
typedef enum {
ksucc = 0,
kappe_begin = 10000,
kappe_code_error = 10001, // 代码错误
kappe_cmd_not_support = 10003, // 命令不支持
kappe_parse_json_err = 10004, // 解析json错误
kappe_std_exception = 10005, // 标准库异常
kappe_db_operate_error = 10006, // 数据库操作错误
kappe_missing_param = 10007, // 缺少参数
kappe_param_num_err = 10008, // 参数个数错误
kappe_param_value_err = 10009, // 参数值错误
kappe_begin = 10000,
kappe_code_error = 10001, // 代码错误
kappe_cmd_not_support = 10003, // 命令不支持
kappe_parse_json_err = 10004, // 解析json错误
kappe_std_exception = 10005, // 标准库异常
kappe_db_operate_error = 10006, // 数据库操作错误
kappe_missing_param = 10007, // 缺少参数
kappe_param_num_err = 10008, // 参数个数错误
kappe_param_value_err = 10009, // 参数值错误
kappe_device_type_not_init = 10010, // deviceTypeNot
kappe_user_not_exist = 10101, // 用户不存在
kappe_passwd_error = 10102, // 密码错误
kappe_user_exist = 10103, // 用户已存在
kappe_user_exist = 10103, // 用户已存在
kappe_disinfectant_insufficient = 10201, // 消毒液不足
kappe_the_bottom_of_the_device_has_water = 10202, // 设备底部有水

2
appsrc/appcomponents/canchannel/com/zscanprotocol_com.cpp

@ -128,7 +128,7 @@ shared_ptr<Receipt> ZSCanProtocolCom::callcmd(int32_t to, int32_t cmdid, uint8_t
}
logger->warn("systemctl restart iflytoptdcan.service");
system("systemctl restart iflytoptdcan.service");
usleep(300 * 1000);
usleep(1000 * 1000);
continue;
} else if (e.ecode == kerr_subdevice_overtime) {
if (i != 0) {

2
appsrc/appconfig/basic/zappversion.hpp

@ -1,3 +1,3 @@
#pragma once
#define VERSION "2.2.6"
#define VERSION "2.2.7"
#define PROJECT_NAME "TRANSMIT_DM"

1
appsrc/service/app_core.cpp

@ -110,6 +110,7 @@ static void installEcodeInfo() {
AppEcodeInfoMgr::ins().regEcodeInfo(kappe_disinfection_state_is_wrong, "消毒状态错误");
AppEcodeInfoMgr::ins().regEcodeInfo(kappe_liquid_ctrl_reboot, "液路板复位");
AppEcodeInfoMgr::ins().regEcodeInfo(kappe_power_control_reboot, "功率板复位");
AppEcodeInfoMgr::ins().regEcodeInfo(kappe_device_type_not_init, "设备未初始化");
}
void AppCore::initialize() {

85
appsrc/service/hardware/device_io_ctrl_service.cpp

@ -33,7 +33,12 @@ static bool isInTestMode() {
#define CAN_MASTER TransmitDisinfectionCanMaster::ins()
#define GET_BOARDID() (ProjectPort::ins().getId(COMPONENT).boardId)
#define GET_SUBID() (ProjectPort::ins().getId(COMPONENT).subId)
#define VIRTUAL_DEVICE() (isInTestMode() || !ProjectPort::ins().isDeviceTypeInited())
#define VIRTUAL_DEVICE() (isInTestMode())
#define CHECK_IS_DEVICETYPE_INITED() \
if (!ProjectPort::ins().isDeviceTypeInited()) { \
throw appexception(err::kappe_device_type_not_init, "DEVICE TYPE NOT INITED"); \
}
void DeviceIoControlService::initialize() {
REG_FN_VOID(AddLiquidPump_addLiquid, void(void));
@ -227,6 +232,7 @@ int DeviceIoControlService::processReportMsg(uint8_t from, uint8_t *hex, uint32_
// 加液泵控制
#define COMPONENT HardwareComponent::AddLiquidPump
int DeviceIoControlService::AddLiquidPump_addLiquid() {
CHECK_IS_DEVICETYPE_INITED();
int pumpspeed = GET_SETTING(int, SettingId::drainage_pump_speed);
logger->info(" AddLiquidPump_addLiquid, pumpspeed={}", pumpspeed);
@ -234,19 +240,24 @@ int DeviceIoControlService::AddLiquidPump_addLiquid() {
return 0;
}
int DeviceIoControlService::AddLiquidPump_drainLiquid() {
CHECK_IS_DEVICETYPE_INITED();
int pumpspeed = GET_SETTING(int, SettingId::drainage_pump_speed);
logger->info(" AddLiquidPump_drainLiquid, pumpspeed={}", -pumpspeed);
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), -pumpspeed);
return 0;
}
int DeviceIoControlService::AddLiquidPump_run(int rpm) {
CHECK_IS_DEVICETYPE_INITED();
logger->info(" AddLiquidPump_run, rpm={}", rpm);
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), rpm);
return 0;
}
int DeviceIoControlService::AddLiquidPump_stop() {
CHECK_IS_DEVICETYPE_INITED();
logger->info(" AddLiquidPump_stop");
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpStop(GET_BOARDID(), GET_SUBID());
return 0;
@ -256,17 +267,23 @@ int DeviceIoControlService::AddLiquidPump_stop() {
// 喷雾泵控制
#define COMPONENT HardwareComponent::SprayPump
int DeviceIoControlService::SprayPump_start(int32_t gpm) {
CHECK_IS_DEVICETYPE_INITED();
int pumpspeed_rpm = ProjectPort::ins().gpm2speed(gpm);
logger->info(" SprayPump_start, gpm={}, rpm={}", gpm, pumpspeed_rpm);
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), pumpspeed_rpm);
return 0;
}
int DeviceIoControlService::SprayPump_stop() {
CHECK_IS_DEVICETYPE_INITED();
logger->info(" SprayPump_stop");
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpStop(GET_BOARDID(), GET_SUBID());
return 0;
}
int DeviceIoControlService::SprayPump_startInRPM(int32_t rpm) {
CHECK_IS_DEVICETYPE_INITED();
logger->info(" SprayPump_startInRPM, rpm={}", rpm);
if (!VIRTUAL_DEVICE()) CAN_MASTER->pumpRotate(GET_BOARDID(), GET_SUBID(), rpm);
return 0;
@ -276,12 +293,16 @@ int DeviceIoControlService::SprayPump_startInRPM(int32_t rpm) {
// 鼓风机控制
#define COMPONENT HardwareComponent::Blower
int DeviceIoControlService::Blower_ctrl(int power) {
CHECK_IS_DEVICETYPE_INITED();
logger->info(" Blower_ctrl, power={}", power);
if (!VIRTUAL_DEVICE()) CAN_MASTER->blowerCtrl(GET_BOARDID(), power);
usleep(1000 * 1000);
return 0;
}
int DeviceIoControlService::Blower_close() {
CHECK_IS_DEVICETYPE_INITED();
logger->info(" Blower_close");
if (!VIRTUAL_DEVICE()) CAN_MASTER->blowerCtrl(GET_BOARDID(), 0);
return 0;
@ -296,23 +317,31 @@ float DeviceIoControlService::Blower_readEI() {
// 空压机控制
#define COMPONENT HardwareComponent::AirCompressor
int DeviceIoControlService::AC_ctrl(int power) {
CHECK_IS_DEVICETYPE_INITED();
logger->info(" AC_ctrl, power={}", power);
if (!VIRTUAL_DEVICE()) CAN_MASTER->airCompressorCtrl(GET_BOARDID(), power);
usleep(1000 * 1000);
return 0;
}
int DeviceIoControlService::AC_ctrlNoDelay(int power) {
CHECK_IS_DEVICETYPE_INITED();
logger->info(" AC_ctrl, power={}", power);
if (!VIRTUAL_DEVICE()) CAN_MASTER->airCompressorCtrl(GET_BOARDID(), power);
return 0;
}
int DeviceIoControlService::AC_close() {
CHECK_IS_DEVICETYPE_INITED();
logger->info(" AC_close");
if (!VIRTUAL_DEVICE()) CAN_MASTER->airCompressorCtrl(GET_BOARDID(), 0);
return 0;
}
float DeviceIoControlService::AC_readEI() {
CHECK_IS_DEVICETYPE_INITED();
// logger->info(" AC_readEI");
if (!VIRTUAL_DEVICE()) return CAN_MASTER->airCompressorReadEI(GET_BOARDID()) / 1000.0;
return 0;
@ -322,22 +351,30 @@ float DeviceIoControlService::AC_readEI() {
// 加热器控制
#define COMPONENT HardwareComponent::Heater
int DeviceIoControlService::Heater_ctrl(int power) {
CHECK_IS_DEVICETYPE_INITED();
logger->info(" Heater_ctrl, power={}", power);
if (!VIRTUAL_DEVICE()) CAN_MASTER->heaterCtrl(GET_BOARDID(), power);
usleep(1000 * 1000);
return 0;
}
int DeviceIoControlService::Heater_close() {
CHECK_IS_DEVICETYPE_INITED();
logger->info(" Heater_close");
if (!VIRTUAL_DEVICE()) CAN_MASTER->heaterCtrl(GET_BOARDID(), 0);
return 0;
}
float DeviceIoControlService::Heater_readEI() {
CHECK_IS_DEVICETYPE_INITED();
// logger->info(" Heater_readEI");
if (!VIRTUAL_DEVICE()) return CAN_MASTER->heaterReadEI(GET_BOARDID()) / 1000.0;
return 0;
}
float DeviceIoControlService::Heater_readTemperature() {
CHECK_IS_DEVICETYPE_INITED();
// logger->info(" Heater_readTemperature");
if (!VIRTUAL_DEVICE()) return CAN_MASTER->heaterReadTemperature(GET_BOARDID()) / 10.0;
return 0;
@ -346,7 +383,9 @@ float DeviceIoControlService::Heater_readTemperature() {
// 三色指示灯控制
#define COMPONENT HardwareComponent::WarningLight
int DeviceIoControlService::WarningLight_setState(int r, int g, int b, int warning) { //
int DeviceIoControlService::WarningLight_setState(int r, int g, int b, int warning) {
CHECK_IS_DEVICETYPE_INITED();
//
logger->debug(" WarningLight_setState, r={}, g={}, b={}, warning={}", r, g, b, warning);
if (!VIRTUAL_DEVICE()) CAN_MASTER->warningLightSetState(GET_BOARDID(), r, g, b, warning);
return 0;
@ -359,13 +398,17 @@ int DeviceIoControlService::WarningLight_setState(int r, int g, int b, int warni
// 气密性测试空压机控制
#define COMPONENT HardwareComponent::PositivePressureProportional
int DeviceIoControlService::PosiPressureProp_setValve(int valveValue) { //
int DeviceIoControlService::PosiPressureProp_setValve(int valveValue) {
CHECK_IS_DEVICETYPE_INITED();
//
valveValue = valveValue / 100.0 * 255;
logger->info(" PosiPressureProp_setValve, valveValue={}", valveValue);
if (!VIRTUAL_DEVICE()) CAN_MASTER->proportionalSetValve(GET_BOARDID(), GET_SUBID(), valveValue);
return 0;
}
int DeviceIoControlService::PosiPressureProp_readPos() {
CHECK_IS_DEVICETYPE_INITED();
if (!VIRTUAL_DEVICE()) {
int pos = CAN_MASTER->proportionalReadPos(GET_BOARDID(), GET_SUBID());
pos = pos / 255.0 * 100;
@ -374,6 +417,8 @@ int DeviceIoControlService::PosiPressureProp_readPos() {
return 0;
}
bool DeviceIoControlService::PosiPressureProp_isBusy() {
CHECK_IS_DEVICETYPE_INITED();
if (!VIRTUAL_DEVICE()) return CAN_MASTER->proportionalIsBusy(GET_BOARDID(), GET_SUBID());
return false;
}
@ -381,12 +426,16 @@ bool DeviceIoControlService::PosiPressureProp_isBusy() {
#define COMPONENT HardwareComponent::NegativePressureProportional
int DeviceIoControlService::NegaPressureProp_setValve(int valveValue) {
CHECK_IS_DEVICETYPE_INITED();
valveValue = valveValue / 100.0 * 255;
logger->info(" NegaPressureProp_setValve, valveValue={}", valveValue);
if (!VIRTUAL_DEVICE()) CAN_MASTER->proportionalSetValve(GET_BOARDID(), GET_SUBID(), valveValue);
return 0;
}
int DeviceIoControlService::NegaPressureProp_readPos() {
CHECK_IS_DEVICETYPE_INITED();
if (!VIRTUAL_DEVICE()) {
int pos = CAN_MASTER->proportionalReadPos(GET_BOARDID(), GET_SUBID());
pos = pos / 255.0 * 100;
@ -395,6 +444,8 @@ int DeviceIoControlService::NegaPressureProp_readPos() {
return 0;
}
bool DeviceIoControlService::NegaPressureProp_isBusy() {
CHECK_IS_DEVICETYPE_INITED();
if (!VIRTUAL_DEVICE()) return CAN_MASTER->proportionalIsBusy(GET_BOARDID(), GET_SUBID());
return false;
}
@ -403,11 +454,15 @@ bool DeviceIoControlService::NegaPressureProp_isBusy() {
#define COMPONENT HardwareComponent::AirLeakDetectTestModeCtrl
int DeviceIoControlService::AirLeakDetectTestModeCtrl_setMode(AirLeakTestMode mode) {
CHECK_IS_DEVICETYPE_INITED();
logger->info(" AirLeakDetectTestModeCtrl_setMode, mode={}", mode);
if (!VIRTUAL_DEVICE()) CAN_MASTER->airLeakDetectTestSetMode(GET_BOARDID(), mode.getId());
return 0;
}
AirLeakTestMode DeviceIoControlService::AirLeakDetectTestModeCtrl_getMode() {
CHECK_IS_DEVICETYPE_INITED();
if (!VIRTUAL_DEVICE()) {
int val = CAN_MASTER->airLeakDetectTestGetMode(GET_BOARDID());
return AirLeakTestMode(val);
@ -420,12 +475,16 @@ AirLeakTestMode DeviceIoControlService::AirLeakDetectTestModeCtrl_getMode() {
// ExtChSelector
#define COMPONENT HardwareComponent::ExtChSelector
int DeviceIoControlService::ExtChSelector_selectCh(int ch) {
CHECK_IS_DEVICETYPE_INITED();
logger->info(" ExtChSelector_selectCh, ch={}", ch);
if (!VIRTUAL_DEVICE()) CAN_MASTER->extChSelectorSetCh(GET_BOARDID(), ch);
return 0;
}
bool DeviceIoControlService::ExtChSelector_isOnline() {
CHECK_IS_DEVICETYPE_INITED();
if (!VIRTUAL_DEVICE()) {
try {
CAN_MASTER->extChSelectorGetCh(GET_BOARDID());
@ -437,6 +496,8 @@ bool DeviceIoControlService::ExtChSelector_isOnline() {
return false;
}
int DeviceIoControlService::ExtChSelector_trySelectCh(int ch) {
CHECK_IS_DEVICETYPE_INITED();
logger->info(" ExtChSelector_trySelectCh, ch={}", ch);
if (!VIRTUAL_DEVICE()) {
try {
@ -454,6 +515,8 @@ int DeviceIoControlService::ExtChSelector_trySelectCh(int ch) {
// 蒸发仓水浸
#define COMPONENT HardwareComponent::EvaporationBinWS
bool DeviceIoControlService::WaterSensor_readEvaporationBin() {
CHECK_IS_DEVICETYPE_INITED();
if (!VIRTUAL_DEVICE()) return CAN_MASTER->evaporationTankWSReadState(GET_BOARDID());
return false;
}
@ -461,13 +524,17 @@ bool DeviceIoControlService::WaterSensor_readEvaporationBin() {
#define COMPONENT HardwareComponent::DeviceBottomWS
bool DeviceIoControlService::WaterSensor_readDeviceBottom() {
CHECK_IS_DEVICETYPE_INITED();
if (!VIRTUAL_DEVICE()) return CAN_MASTER->bottomWSReadState(GET_BOARDID());
return false;
} // 设备底部水浸
#undef COMPONENT
#define COMPONENT HardwareComponent::ACPostPS
int DeviceIoControlService::ACPostPS_readPa() { //
int DeviceIoControlService::ACPostPS_readPa() {
CHECK_IS_DEVICETYPE_INITED();
//
if (!VIRTUAL_DEVICE()) {
int32_t val = CAN_MASTER->psBusReadData(GET_BOARDID(), GET_SUBID());
return ProjectPort::ins().ACPostPS_To_Pa(val);
@ -477,7 +544,9 @@ int DeviceIoControlService::ACPostPS_readPa() { //
#undef COMPONENT
#define COMPONENT HardwareComponent::AirLeakDetectPS
int DeviceIoControlService::AirLeakDetectPS_readPa() { //
int DeviceIoControlService::AirLeakDetectPS_readPa() {
CHECK_IS_DEVICETYPE_INITED();
//
if (!VIRTUAL_DEVICE()) {
int32_t val = CAN_MASTER->psBusReadData(GET_BOARDID(), GET_SUBID());
return ProjectPort::ins().AirLeakDetectPS_To_Pa(val);
@ -487,7 +556,9 @@ int DeviceIoControlService::AirLeakDetectPS_readPa() { //
#undef COMPONENT
#define COMPONENT HardwareComponent::LiquidWeightPS
int DeviceIoControlService::LiquidWeightPS_readPa() { //
int DeviceIoControlService::LiquidWeightPS_readPa() {
CHECK_IS_DEVICETYPE_INITED();
//
if (!VIRTUAL_DEVICE()) {
int32_t val = CAN_MASTER->psBusReadData(GET_BOARDID(), GET_SUBID());
return ProjectPort::ins().LiquidWeightPS_To_Pa(val);

Loading…
Cancel
Save