diff --git a/README.md b/README.md index 75d84b6..4aa1334 100644 --- a/README.md +++ b/README.md @@ -162,6 +162,12 @@ VERSION 218 VERSION 2.1.9 1. 修复压力泄露状态切换过早的BUG +VERSION 2.3.0 + 1. 添加部分调试日志 + 2. 改进调试页面显示效果 + 3. 修复部分BUG + + TODO: 1.添加用户增加用户查重检查 2.测试如果数据库文件损坏,设备的执行逻辑 diff --git a/appdep/iflytop/core/components/zenum_template/zenum_template.hpp b/appdep/iflytop/core/components/zenum_template/zenum_template.hpp index a76f2e8..3e21a46 100644 --- a/appdep/iflytop/core/components/zenum_template/zenum_template.hpp +++ b/appdep/iflytop/core/components/zenum_template/zenum_template.hpp @@ -34,40 +34,41 @@ #define ZENUM_IMPL4(type, enumname) ret.push_back(#enumname); #define ZENUM_IMPL5(type, enumname) ret.push_back(enumname); -#define ZENUM_DECLAR(name, elist) \ - namespace iflytop { \ - using namespace std; \ - using namespace nlohmann; \ - class name { \ - public: \ - typedef enum { elist(name, ZENUM_IMPL1) kunkown } enum_val_t; \ - enum_val_t id; \ - elist(name, ZENUM_IMPL2) public : name() {} \ - name(enum_val_t id) : id(id) {} \ - name(int id) : id((enum_val_t)id) {} \ - name(string str) : id(toEnum(str)) {} \ - enum_val_t getId() const { return id; } \ - bool eq(string val) const { return (toString(id) == val); } \ - bool eq(enum_val_t id) const { return (this->id == id); } \ - bool eq(int id) const { return (this->id == id); } \ - static string toString(enum_val_t enu) { \ - switch (enu) { elist(name, ZENUM_TO_STR_IMPL) default : return "unknown"; } \ - } \ - static enum_val_t toEnum(string str) { elist(name, ZENUM_TO_ENUM_IMPL) return kunkown; } \ - operator string() const { return toString(id); } \ - operator int() const { return int(id); } \ - bool operator==(const name& setid) const { return id == setid.id; } \ - static vector getEnumStrList() { \ - vector ret; \ - elist(name, ZENUM_IMPL4) return ret; \ - } \ - static vector getEnumList() { \ - vector ret; \ - elist(name, ZENUM_IMPL5) return ret; \ - } \ - }; \ - static inline void to_json(json& j, const name& setid) { j = setid.toString(setid.getId()); } \ - static inline void from_json(const json& j, name& setid) { setid = name(string(j)); } \ +#define ZENUM_DECLAR(name, elist) \ + namespace iflytop { \ + using namespace std; \ + using namespace nlohmann; \ + class name { \ + public: \ + typedef enum { elist(name, ZENUM_IMPL1) kunkown } enum_val_t; \ + enum_val_t id; \ + elist(name, ZENUM_IMPL2) public : name() {} \ + name(enum_val_t id) : id(id) {} \ + name(int id) : id((enum_val_t)id) {} \ + name(string str) : id(toEnum(str)) {} \ + enum_val_t getId() const { return id; } \ + bool eq(string val) const { return (toString(id) == val); } \ + bool eq(enum_val_t id) const { return (this->id == id); } \ + bool eq(int id) const { return (this->id == id); } \ + string toString() const { return toString(id); } \ + static string toString(enum_val_t enu) { \ + switch (enu) { elist(name, ZENUM_TO_STR_IMPL) default : return "unknown"; } \ + } \ + static enum_val_t toEnum(string str) { elist(name, ZENUM_TO_ENUM_IMPL) return kunkown; } \ + operator string() const { return toString(id); } \ + operator int() const { return int(id); } \ + bool operator==(const name& setid) const { return id == setid.id; } \ + static vector getEnumStrList() { \ + vector ret; \ + elist(name, ZENUM_IMPL4) return ret; \ + } \ + static vector getEnumList() { \ + vector ret; \ + elist(name, ZENUM_IMPL5) return ret; \ + } \ + }; \ + static inline void to_json(json& j, const name& setid) { j = setid.toString(setid.getId()); } \ + static inline void from_json(const json& j, name& setid) { setid = name(string(j)); } \ } #define ZENUM_IMPL(name, elist) \ diff --git a/appsrc/appbase/appbean/project_type_enum.hpp b/appsrc/appbase/appbean/project_type_enum.hpp index acbe41d..903b9d3 100644 --- a/appsrc/appbase/appbean/project_type_enum.hpp +++ b/appsrc/appbase/appbean/project_type_enum.hpp @@ -10,4 +10,3 @@ marco(type, DT100N) /**/ ZENUM_DECLAR(ProjectTypeEnum, ProjectTypeEnumLIST); - diff --git a/appsrc/appcomponents/canchannel/com/zscanprotocol_com.cpp b/appsrc/appcomponents/canchannel/com/zscanprotocol_com.cpp index a694d31..3e7801d 100644 --- a/appsrc/appcomponents/canchannel/com/zscanprotocol_com.cpp +++ b/appsrc/appcomponents/canchannel/com/zscanprotocol_com.cpp @@ -115,7 +115,7 @@ shared_ptr ZSCanProtocolCom::callcmd(int32_t to, int32_t cmdid, uint8_t shared_ptr receipt; lock_guard lock(m_lock); usleep(10 * 1000); - logger->debug("tx [to:{}, cmd:{}, param:{}({}) ]", to, cmdid, StringUtils().bytesToString((uint8_t *)param, paramLen), paramLen); + logger->debug("tx [to:{}, cmd:{}, param:{}({}) ] overtime:{}", to, cmdid, StringUtils().bytesToString((uint8_t *)param, paramLen), paramLen,overtime); for (size_t i = 0; i <= 5; i++) { try { @@ -132,7 +132,7 @@ shared_ptr ZSCanProtocolCom::callcmd(int32_t to, int32_t cmdid, uint8_t continue; } else if (e.ecode == kerr_subdevice_overtime) { if (i != 0) { - logger->warn("tx [to:{}, cmd:{}, param:{}({}) ] subdevice overtime, try again %d", to, cmdid, StringUtils().bytesToString((uint8_t *)param, paramLen), paramLen, i); + logger->warn("tx [to:{}, cmd:{}, param:{}({}) ] subdevice overtime, try again {}", to, cmdid, StringUtils().bytesToString((uint8_t *)param, paramLen), paramLen, i); } usleep(1000 * 1000); continue; diff --git a/appsrc/appcomponents/canchannel/com/zscanprotocol_com.hpp b/appsrc/appcomponents/canchannel/com/zscanprotocol_com.hpp index 3fb424d..b5b471e 100644 --- a/appsrc/appcomponents/canchannel/com/zscanprotocol_com.hpp +++ b/appsrc/appcomponents/canchannel/com/zscanprotocol_com.hpp @@ -22,6 +22,7 @@ namespace iflytop { using namespace std; namespace zscanprotocol { +#define TDCAN_DEFUALT_OVERTIME 1000 typedef function ecode2str_t; @@ -83,13 +84,13 @@ class ZSCanProtocolCom { public: void initialize(); - shared_ptr callcmd(int32_t to, int32_t cmdid, uint8_t *param, int32_t paramLen, int32_t overtime = 100); - shared_ptr callcmd0(int32_t to, int32_t cmdid, int32_t overtime = 100); - shared_ptr callcmd1(int32_t to, int32_t cmdid, int32_t param0, int32_t overtime = 100); - shared_ptr callcmd2(int32_t to, int32_t cmdid, int32_t param0, int32_t param1, int32_t overtime = 100); - shared_ptr callcmd3(int32_t to, int32_t cmdid, int32_t param0, int32_t param1, int32_t param2, int32_t overtime = 100); - shared_ptr callcmd4(int32_t to, int32_t cmdid, int32_t param0, int32_t param1, int32_t param2, int32_t param3, int32_t overtime = 100); - shared_ptr callcmd5(int32_t to, int32_t cmdid, int32_t param0, int32_t param1, int32_t param2, int32_t param3, int32_t param4, int32_t overtime = 100); + shared_ptr callcmd(int32_t to, int32_t cmdid, uint8_t *param, int32_t paramLen, int32_t overtime = TDCAN_DEFUALT_OVERTIME); + shared_ptr callcmd0(int32_t to, int32_t cmdid, int32_t overtime = TDCAN_DEFUALT_OVERTIME); + shared_ptr callcmd1(int32_t to, int32_t cmdid, int32_t param0, int32_t overtime = TDCAN_DEFUALT_OVERTIME); + shared_ptr callcmd2(int32_t to, int32_t cmdid, int32_t param0, int32_t param1, int32_t overtime = TDCAN_DEFUALT_OVERTIME); + shared_ptr callcmd3(int32_t to, int32_t cmdid, int32_t param0, int32_t param1, int32_t param2, int32_t overtime = TDCAN_DEFUALT_OVERTIME); + shared_ptr callcmd4(int32_t to, int32_t cmdid, int32_t param0, int32_t param1, int32_t param2, int32_t param3, int32_t overtime = TDCAN_DEFUALT_OVERTIME); + shared_ptr callcmd5(int32_t to, int32_t cmdid, int32_t param0, int32_t param1, int32_t param2, int32_t param3, int32_t param4, int32_t overtime = TDCAN_DEFUALT_OVERTIME); void sendraw(int32_t from, int32_t to, uint8_t *data, size_t len); diff --git a/appsrc/appcomponents/canchannel/transmit_disinfection_can_master.cpp b/appsrc/appcomponents/canchannel/transmit_disinfection_can_master.cpp index df71552..9e7cb7f 100644 --- a/appsrc/appcomponents/canchannel/transmit_disinfection_can_master.cpp +++ b/appsrc/appcomponents/canchannel/transmit_disinfection_can_master.cpp @@ -12,26 +12,26 @@ void TransmitDisinfectionCanMaster::initialize() { ack_read_board_info_data_t TransmitDisinfectionCanMaster::readboardinfo(int to) { ack_read_board_info_data_t ack; - auto receipt = m_com->callcmd0(to, kfn_read_board_info, DEFUALT_OVERTIME); + auto receipt = m_com->callcmd0(to, kfn_read_board_info); memcpy(&ack, receipt->getPacket()->params, sizeof(ack)); return ack; } ack_sysinfo_t TransmitDisinfectionCanMaster::readsysinfo(int to) { ack_sysinfo_t ack; - auto receipt = m_com->callcmd0(to, kfn_read_sysinfo, DEFUALT_OVERTIME); + auto receipt = m_com->callcmd0(to, kfn_read_sysinfo); memcpy(&ack, receipt->getPacket()->params, sizeof(ack)); return ack; } ask_taskinfo_t TransmitDisinfectionCanMaster::readtaskinfo(int to, int32_t taskoff) { ask_taskinfo_t ack; - auto receipt = m_com->callcmd1(to, kfn_read_taskinfo, taskoff, DEFUALT_OVERTIME); + auto receipt = m_com->callcmd1(to, kfn_read_taskinfo, taskoff); memcpy(&ack, receipt->getPacket()->params, sizeof(ack)); return ack; } -void TransmitDisinfectionCanMaster::clearResetFlag(int to) { m_com->callcmd0(to, kfn_clear_reset_flag, DEFUALT_OVERTIME); } +void TransmitDisinfectionCanMaster::clearResetFlag(int to) { m_com->callcmd0(to, kfn_clear_reset_flag); } void TransmitDisinfectionCanMaster::pingAllBoard() { try { @@ -40,21 +40,21 @@ void TransmitDisinfectionCanMaster::pingAllBoard() { } return; } -void TransmitDisinfectionCanMaster::enableReport(int to, bool enable) { m_com->callcmd1(to, kfn_enable_report, enable, DEFUALT_OVERTIME); } +void TransmitDisinfectionCanMaster::enableReport(int to, bool enable) { m_com->callcmd1(to, kfn_enable_report, enable); } -void TransmitDisinfectionCanMaster::pumpRotate(int boardid, int subid, int rpm) { m_com->callcmd2(boardid, kfn_pump_rotate, subid, rpm, DEFUALT_OVERTIME); } -void TransmitDisinfectionCanMaster::pumpStop(int boardid, int subid) { m_com->callcmd1(boardid, kfn_pump_stop, subid, DEFUALT_OVERTIME); } +void TransmitDisinfectionCanMaster::pumpRotate(int boardid, int subid, int rpm) { m_com->callcmd2(boardid, kfn_pump_rotate, subid, rpm); } +void TransmitDisinfectionCanMaster::pumpStop(int boardid, int subid) { m_com->callcmd1(boardid, kfn_pump_stop, subid); } void TransmitDisinfectionCanMaster::pumpSetIholdIrunIdelay(int boardid, int subid, int ihold, int irun, int idelay) { - m_com->callcmd4(boardid, kfn_pump_set_ihold_irun_idelay, subid, irun, ihold, idelay, DEFUALT_OVERTIME); + m_com->callcmd4(boardid, kfn_pump_set_ihold_irun_idelay, subid, irun, ihold, idelay); } -void TransmitDisinfectionCanMaster::pumpSetRamp(int boardid, int index, int vs, int a1, int amx, int v1) { m_com->callcmd5(boardid, kfn_pump_set_ramp, index, vs, a1, amx, v1, DEFUALT_OVERTIME); } -void TransmitDisinfectionCanMaster::pumpSetTzw(int boardid, int index, int tzw) { m_com->callcmd2(boardid, kfn_pump_set_tzw, index, tzw, DEFUALT_OVERTIME); } -void TransmitDisinfectionCanMaster::pumpSetSubicReg(int boardid, int subid, int regadd, int val) { m_com->callcmd3(boardid, kfn_pump_set_subic_reg, subid, regadd, val, DEFUALT_OVERTIME); } +void TransmitDisinfectionCanMaster::pumpSetRamp(int boardid, int index, int vs, int a1, int amx, int v1) { m_com->callcmd5(boardid, kfn_pump_set_ramp, index, vs, a1, amx, v1); } +void TransmitDisinfectionCanMaster::pumpSetTzw(int boardid, int index, int tzw) { m_com->callcmd2(boardid, kfn_pump_set_tzw, index, tzw); } +void TransmitDisinfectionCanMaster::pumpSetSubicReg(int boardid, int subid, int regadd, int val) { m_com->callcmd3(boardid, kfn_pump_set_subic_reg, subid, regadd, val); } int TransmitDisinfectionCanMaster::pumpGetSubicReg(int boardid, int subid, int regadd) { - shared_ptr receipt = m_com->callcmd2(boardid, kfn_pump_get_subic_reg, subid, regadd, DEFUALT_OVERTIME); + shared_ptr receipt = m_com->callcmd2(boardid, kfn_pump_get_subic_reg, subid, regadd); return *(int32_t *)receipt->getPacket()->params; } -void TransmitDisinfectionCanMaster::pumpPing(int32_t boardid) { m_com->callcmd1(boardid, kfn_pump_ping, boardid, DEFUALT_OVERTIME); } +void TransmitDisinfectionCanMaster::pumpPing(int32_t boardid) { m_com->callcmd1(boardid, kfn_pump_ping, boardid); } /*********************************************************************************************************************** * blower * diff --git a/appsrc/appcomponents/canchannel/transmit_disinfection_can_master.hpp b/appsrc/appcomponents/canchannel/transmit_disinfection_can_master.hpp index 70b87b3..fd9e4f7 100644 --- a/appsrc/appcomponents/canchannel/transmit_disinfection_can_master.hpp +++ b/appsrc/appcomponents/canchannel/transmit_disinfection_can_master.hpp @@ -15,7 +15,6 @@ // #include "app_protocols/transmit_disfection_protocol/transmit_disfection_protocol.hpp" #include "appcomponents/canchannel/com/zscanprotocol_com.hpp" -#define DEFUALT_OVERTIME 500 namespace iflytop { using namespace std; @@ -46,7 +45,7 @@ class TransmitDisinfectionCanMaster { void clearResetFlag(int to); void pingAllBoard(); void enableReport(int to, bool enable); - void resetBoard(int to) { m_com->callcmd0(to, kfn_reset_board, DEFUALT_OVERTIME); } + void resetBoard(int to) { m_com->callcmd0(to, kfn_reset_board); } void h2o2SensorReadCalibrationDate(int boardid, int32_t *year, int32_t *month, int32_t *day) { // auto ret = m_com->callcmd0(boardid, kfn_h2o2_sensor_read_calibration_date); @@ -54,7 +53,7 @@ class TransmitDisinfectionCanMaster { *month = ret->getContent(1); *day = ret->getContent(2); } - int h2o2SensorReadSubIcErrorcode(int boardid) { return m_com->callcmd0(boardid, kfn_h2o2_sensor_read_sub_ic_errorcode, DEFUALT_OVERTIME)->getContent(0); } + int h2o2SensorReadSubIcErrorcode(int boardid) { return m_com->callcmd0(boardid, kfn_h2o2_sensor_read_sub_ic_errorcode)->getContent(0); } uint8_t *h2o2SensorReadSubIcReg(int boardid, int reg, int num) { return m_com->callcmd2(boardid, kfn_h2o2_sensor_read_sub_ic_reg, reg, num)->getByte(); } /*********************************************************************************************************************** @@ -68,7 +67,7 @@ class TransmitDisinfectionCanMaster { void pumpSetSubicReg(int boardid, int subid, int regadd, int val); int pumpGetSubicReg(int boardid, int subid, int regadd); void pumpPing(int32_t boardid); - int32_t pumpIsRun(int boardid, int subid) { return m_com->callcmd1(boardid, kfn_pump_is_run, subid, DEFUALT_OVERTIME)->getContent(0); } + int32_t pumpIsRun(int boardid, int subid) { return m_com->callcmd1(boardid, kfn_pump_is_run, subid)->getContent(0); } /*********************************************************************************************************************** * blower * @@ -79,7 +78,7 @@ class TransmitDisinfectionCanMaster { int blowerReadEI(int boardid); int blowerReadEIAdcRaw(int boardid); int blowerReadElectricIsError(int boardid); - int blowserIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_blower_is_open, DEFUALT_OVERTIME)->getContent(0); } + int blowserIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_blower_is_open)->getContent(0); } /*********************************************************************************************************************** * air_compressor * @@ -88,10 +87,10 @@ class TransmitDisinfectionCanMaster { void airCompressorCtrlSafeValve(int boardid, int valve_state); int airCompressorReadEI(int boardid); int airCompressorReadEIAdcRaw(int boardid); - int airCompressorIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_air_compressor_is_open, DEFUALT_OVERTIME)->getContent(0); } + int airCompressorIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_air_compressor_is_open)->getContent(0); } int airLeakDetectTestACCtrl(int boardid, int32_t val); - int airLeakDetectTestACIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_air_leak_detect_ac_is_open, DEFUALT_OVERTIME)->getContent(0); } + int airLeakDetectTestACIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_air_leak_detect_ac_is_open)->getContent(0); } /*********************************************************************************************************************** * heater * @@ -102,7 +101,7 @@ class TransmitDisinfectionCanMaster { int heaterReadTemperature(int boardid); int heaterReadEIAdcRaw(int boardid); int heaterReadTemperatureAdcRaw(int boardid); - int heaterIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_heater_is_open, DEFUALT_OVERTIME)->getContent(0); } + int heaterIsOpen(int boardid) { return m_com->callcmd0(boardid, kfn_heater_is_open)->getContent(0); } void warningLightSetState(int boardid, int r, int g, int b, int warning); void warningLightReadState(int boardid, int *r, int *g, int *b, int *warning) { @@ -118,24 +117,24 @@ class TransmitDisinfectionCanMaster { int32_t psBusReadData(int boardid, int subid); ack_psbus_scan_t psBusScan(int boardid); - void psBusStartReport(int boardid, int period) { m_com->callcmd1(boardid, kfn_psbus_start_report, period, DEFUALT_OVERTIME); } - void psBusStopReport(int boardid) { m_com->callcmd0(boardid, kfn_psbus_stop_report, DEFUALT_OVERTIME); } + void psBusStartReport(int boardid, int period) { m_com->callcmd1(boardid, kfn_psbus_start_report, period); } + void psBusStopReport(int boardid) { m_com->callcmd0(boardid, kfn_psbus_stop_report); } - void proportionalSetValve(int boardid, int valveId, int valveValue) { m_com->callcmd2(boardid, kfn_proportional_set_valve, valveId, valveValue, DEFUALT_OVERTIME); } - int proportionalReadPos(int boardid, int valveId) { return m_com->callcmd1(boardid, kfn_proportional_read_pos, valveId, DEFUALT_OVERTIME)->getContent(0); } - int proportionalIsBusy(int boardid, int valveId) { return m_com->callcmd1(boardid, kfn_proportional_is_busy, valveId, DEFUALT_OVERTIME)->getContent(0); } + void proportionalSetValve(int boardid, int valveId, int valveValue) { m_com->callcmd2(boardid, kfn_proportional_set_valve, valveId, valveValue); } + int proportionalReadPos(int boardid, int valveId) { return m_com->callcmd1(boardid, kfn_proportional_read_pos, valveId)->getContent(0); } + int proportionalIsBusy(int boardid, int valveId) { return m_com->callcmd1(boardid, kfn_proportional_is_busy, valveId)->getContent(0); } - void airLeakDetectTestSetMode(int boardid, int mode) { m_com->callcmd1(boardid, kfn_air_leak_test_set_mode, mode, DEFUALT_OVERTIME); } - int airLeakDetectTestGetMode(int boardid) { return m_com->callcmd0(boardid, kfn_air_leak_test_get_mode, DEFUALT_OVERTIME)->getContent(0); } + void airLeakDetectTestSetMode(int boardid, int mode) { m_com->callcmd1(boardid, kfn_air_leak_test_set_mode, mode); } + int airLeakDetectTestGetMode(int boardid) { return m_com->callcmd0(boardid, kfn_air_leak_test_get_mode)->getContent(0); } - void extChSelectorSetCh(int boardid, int ch) { m_com->callcmd1(boardid, kfn_ext_ch_selector_set_ch, ch, DEFUALT_OVERTIME); } - int extChSelectorGetCh(int boardid) { return m_com->callcmd0(boardid, kfn_ext_ch_selector_get_ch, DEFUALT_OVERTIME)->getContent(0); } + void extChSelectorSetCh(int boardid, int ch) { m_com->callcmd1(boardid, kfn_ext_ch_selector_set_ch, ch); } + int extChSelectorGetCh(int boardid) { return m_com->callcmd0(boardid, kfn_ext_ch_selector_get_ch)->getContent(0); } // cmd: state ,true打开进气阀,false关闭进气阀门 加液进气电磁阀(打开,可以正常加液排液,关闭后加液泵倒转可以排空管路 - void setAddFluidChannelSelectorValve(int boardid, bool val) { m_com->callcmd1(boardid, kfn_set_add_fluid_channel_selector_valve, val, DEFUALT_OVERTIME); } + void setAddFluidChannelSelectorValve(int boardid, bool val) { m_com->callcmd1(boardid, kfn_set_add_fluid_channel_selector_valve, val); } int liquidLevelReadIoState(int boardid) { - auto receipt = m_com->callcmd1(boardid, kfn_disinfectant_bucket_level_sensor_read_level, DEFUALT_OVERTIME); + auto receipt = m_com->callcmd0(boardid, kfn_disinfectant_bucket_level_sensor_read_level); return receipt->getContent(0); } }; diff --git a/appsrc/appconfig/basic/zappversion.hpp b/appsrc/appconfig/basic/zappversion.hpp index d08d8ec..ae98e9e 100644 --- a/appsrc/appconfig/basic/zappversion.hpp +++ b/appsrc/appconfig/basic/zappversion.hpp @@ -1,3 +1,3 @@ #pragma once -#define VERSION "2.2.7" +#define VERSION "2.3.0" #define PROJECT_NAME "TRANSMIT_DM" \ No newline at end of file diff --git a/appsrc/baseservice/front_msg_processer/front_msg_processer.cpp b/appsrc/baseservice/front_msg_processer/front_msg_processer.cpp index 4b77262..931b6a2 100644 --- a/appsrc/baseservice/front_msg_processer/front_msg_processer.cpp +++ b/appsrc/baseservice/front_msg_processer/front_msg_processer.cpp @@ -64,6 +64,7 @@ json FrontMsgProcesser::geFnList() { } void FrontMsgProcesser::processMsg(shared_ptr cxt) { + logger->debug("processMsg"); string className = cxt->cmd["className"]; string fnName = cxt->cmd["fnName"]; string key = className + "." + fnName; @@ -72,7 +73,7 @@ void FrontMsgProcesser::processMsg(shared_ptr cxt) { string fn = className + "." + fnName; string param = cxt->cmd["params"].dump(); - // logger->info("call: {}->({})", fn, param); + // logger->debug("call: {}->({})", fn, param); if (fn == "FNScheduler.geFnList") { cxt->receipt["ackcode"] = 0; @@ -87,7 +88,9 @@ void FrontMsgProcesser::processMsg(shared_ptr cxt) { cxt->receipt["fromFn"] = m_msgProcesserMap[key]->fnName; try { + logger->debug(" call: {}->({})", fn, param); m_msgProcesserMap[key]->fn(cxt); + logger->debug(" call: end"); if (cxt->ackcode != 0) cxt->receipt["ackcode"] = cxt->ackcode; if (int(cxt->receipt["ackcode"]) != 0) cxt->receipt["message"] = fmt::format("{}", ecode2str(cxt->receipt["ackcode"]) + cxt->ackcodeExtMessage); if (cxt->rely.empty() == false) cxt->receipt["rely"] = cxt->rely; @@ -103,4 +106,5 @@ void FrontMsgProcesser::processMsg(shared_ptr cxt) { cxt->receipt["ackcode"] = err::kappe_cmd_not_support; cxt->receipt["message"] = fmt::format("{}", ecode2str(cxt->receipt["ackcode"])); } + logger->debug("processMsg end"); } diff --git a/appsrc/baseservice/iflytop_front_end_service/iflytop_front_end_service.cpp b/appsrc/baseservice/iflytop_front_end_service/iflytop_front_end_service.cpp index 874524b..41122b9 100644 --- a/appsrc/baseservice/iflytop_front_end_service/iflytop_front_end_service.cpp +++ b/appsrc/baseservice/iflytop_front_end_service/iflytop_front_end_service.cpp @@ -78,9 +78,7 @@ void IflytopFrontEndService::sendReport(json reportType, json report) { auto clients = m_reportServer->getClients(); for (auto& each : clients) { - if (each) { each->sendText(report.dump()); - } } auto serverClients = m_server->getClients(); for (auto& each : serverClients) { @@ -114,22 +112,26 @@ void IflytopFrontEndService::onMessageCallback(weak_ptr webSocket, sh logger->info(" {}: {}", it.first, it.second); } - m_workQueue->enQueue([this, webSocket]() { onConnect(webSocket); }); + // m_workQueue->enQueue([this, webSocket]() { onConnect(webSocket); }); } else if (msg->type == ix::WebSocketMessageType::Message) { logger->debug("downlink msg: {}", msg->str); string msgtext = msg->str; m_workQueue->enQueue([this, webSocket, msgtext]() { + logger->debug(""); + logger->debug("------------->process rx"); try { processRxMessage(webSocket, msgtext); } catch (const std::exception& e) { logger->error("catch exception,processRxMessage error: {}", e.what()); } + logger->debug("<-------------process rx end\n"); + }); } else if (msg->type == ix::WebSocketMessageType::Close) { logger->info("{} Closed connection", msg->closeInfo.remote); - m_workQueue->enQueue([this, webSocket]() { onDisconnect(webSocket); }); + // m_workQueue->enQueue([this, webSocket]() { onDisconnect(webSocket); }); } } void IflytopFrontEndService::processRxMessage(weak_ptr webSocket, string rxmsg) { diff --git a/appsrc/baseservice/iflytop_front_end_service/iflytop_front_end_service.hpp b/appsrc/baseservice/iflytop_front_end_service/iflytop_front_end_service.hpp index 7b4d58a..6f4b873 100644 --- a/appsrc/baseservice/iflytop_front_end_service/iflytop_front_end_service.hpp +++ b/appsrc/baseservice/iflytop_front_end_service/iflytop_front_end_service.hpp @@ -37,8 +37,8 @@ class IflytopFrontEndService : public enable_shared_from_this webSocket, const ix::WebSocketMessagePtr& msg)> onMessage; - nod::signal webSocket)> onConnect; - nod::signal webSocket)> onDisconnect; + // nod::signal webSocket)> onConnect; + // nod::signal webSocket)> onDisconnect; nod::signal webSocket, json& cmd, json& receipt)> onMessage; private: diff --git a/appsrc/service/hardware/base/h2o2_sensor_data_mgr.cpp b/appsrc/service/hardware/base/h2o2_sensor_data_mgr.cpp index be354d8..2a0349f 100644 --- a/appsrc/service/hardware/base/h2o2_sensor_data_mgr.cpp +++ b/appsrc/service/hardware/base/h2o2_sensor_data_mgr.cpp @@ -99,6 +99,8 @@ void H2O2SensorDataMgr::updateH2o2SensorData(uint8_t sensorId, report_h2o2_data_ if (logcnt < 10 || GET_SERVICE(DeviceStateService)->getDeviceState() == DeviceState::Disinfection) { logger->info("update h2o2 : {} {}", sensorId, json(h2o2data).dump()); + } else { + logger->debug("update h2o2 : {} {}", sensorId, json(h2o2data).dump()); } if (zsteady_clock().gets() > SENSOR_PREHEART_TIME_S) { diff --git a/appsrc/service/hardware/device_io_ctrl_service.cpp b/appsrc/service/hardware/device_io_ctrl_service.cpp index 155e1fb..4b21b45 100644 --- a/appsrc/service/hardware/device_io_ctrl_service.cpp +++ b/appsrc/service/hardware/device_io_ctrl_service.cpp @@ -179,8 +179,6 @@ int DeviceIoControlService::processReportMsg(uint8_t from, uint8_t *hex, uint32_ if (DS->isTestMode()) return 0; tdcan_frame_t *packet = (tdcan_frame_t *)hex; - logger->info("Rx....."); - return 0; if (packet->fnid == kreport_h2o2_sensor_data) { report_h2o2_data_t *h2o2data = (report_h2o2_data_t *)packet->params; int sensorId = 0; diff --git a/appsrc/service/setting/ext_setting_mgr_service.cpp b/appsrc/service/setting/ext_setting_mgr_service.cpp index 9ec85ec..860e646 100644 --- a/appsrc/service/setting/ext_setting_mgr_service.cpp +++ b/appsrc/service/setting/ext_setting_mgr_service.cpp @@ -13,6 +13,7 @@ void ExtSettingMgrService::initialize() { // REG_EXTFN(setprojectType, void(ProjectTypeEnum)); // REG_EXTFN(setDeviceType, void(ProjectTypeEnum)); REG_EXTFN(setDeviceInfo, json(ProjectTypeEnum, int, int, int, int, int), deviceType, year, month, day, index); + REG_EXTFN(setDeviceInfo2, json(string), id); REG_EXTFN(setCanIF, void(string)); REG_EXTFN(setCanBitrate, void(int32_t)); @@ -85,28 +86,37 @@ void ExtSettingMgrService::setH2o2SensorExpireTimeMonth(shared_ptr cxt, int32_t val) { DeviceExtSettingDAO::ins()->setEmptyThePipeLineTimeS(val); } void ExtSettingMgrService::setEmptyingLiquidStorageTankCondtionG(shared_ptr cxt, int32_t val) { DeviceExtSettingDAO::ins()->setEmptyingLiquidStorageTankCondtionG(val); } void ExtSettingMgrService::setDeviceInfo(shared_ptr cxt, ProjectTypeEnum type, int year, int month, int day, int index) { - string deviceIdPrefix; - if (type == ProjectTypeEnum::DT600N) { - DeviceExtSettingDAO::ins()->setprojectType(ProjectTypeEnum::DT600N); - deviceIdPrefix = "DT600N"; - } else if (type == ProjectTypeEnum::DT600B) { - DeviceExtSettingDAO::ins()->setprojectType(ProjectTypeEnum::DT600B); - deviceIdPrefix = "DT600B"; - } else if (type == ProjectTypeEnum::DT300N) { - DeviceExtSettingDAO::ins()->setprojectType(ProjectTypeEnum::DT300N); - deviceIdPrefix = "DT300N"; - } else if (type == ProjectTypeEnum::DT300W) { - DeviceExtSettingDAO::ins()->setprojectType(ProjectTypeEnum::DT300W); - deviceIdPrefix = "DT300W"; - } else if (type == ProjectTypeEnum::DT100N) { - DeviceExtSettingDAO::ins()->setprojectType(ProjectTypeEnum::DT100N); - deviceIdPrefix = "DT100N"; - } - + DeviceExtSettingDAO::ins()->setprojectType(type); DeviceExtSettingDAO::ins()->setDeviceType(type); - DeviceExtSettingDAO::ins()->setDeviceId(fmt::format("{}{:0>2d}{:0>2d}{:0>2d}{:0>3d}", deviceIdPrefix, year, month, day, index)); + DeviceExtSettingDAO::ins()->setDeviceId(fmt::format("{}{:0>2d}{:0>2d}{:0>2d}{:0>3d}", type, year, month, day, index)); cxt->rely["extSettings"] = DeviceExtSettingDAO::ins()->getDeviceExtSettingAsJson(); } + +void ExtSettingMgrService::setDeviceInfo2(shared_ptr cxt, string id) { + // DT300N250403001 + // 解析DT300N250403001 + int deviceTypeLen = id.length() - 9; + if (deviceTypeLen < 6) { + cxt->rely["error"] = fmt::format("设备ID格式错误,设备ID长度{}<15", id.length()); + return; + } + string deviceType = id.substr(0, deviceTypeLen); + ProjectTypeEnum dtype = ProjectTypeEnum(deviceType); + if (dtype.getId() == ProjectTypeEnum::kunkown) { + cxt->rely["error"] = fmt::format("设备ID格式错误,不支持的设备类型:{}", deviceType); + return; + } + + int year = stoi(id.substr(deviceTypeLen, 2)); + int month = stoi(id.substr(deviceTypeLen + 2, 2)); + int day = stoi(id.substr(deviceTypeLen + 4, 2)); + int index = stoi(id.substr(deviceTypeLen + 6, 3)); + + DeviceExtSettingDAO::ins()->setprojectType(dtype); + DeviceExtSettingDAO::ins()->setDeviceType(dtype); + DeviceExtSettingDAO::ins()->setDeviceId(fmt::format("{}{:0>2d}{:0>2d}{:0>2d}{:0>3d}", dtype.toString(), year, month, day, index)); +} + void ExtSettingMgrService::rebootDevice(shared_ptr cxt) { system("reboot"); } void ExtSettingMgrService::restartProgram(shared_ptr cxt) { system("systemctl restart zapp &"); } diff --git a/appsrc/service/setting/ext_setting_mgr_service.hpp b/appsrc/service/setting/ext_setting_mgr_service.hpp index 4e3e4f7..3cf9c0d 100644 --- a/appsrc/service/setting/ext_setting_mgr_service.hpp +++ b/appsrc/service/setting/ext_setting_mgr_service.hpp @@ -26,6 +26,7 @@ class ExtSettingMgrService : public enable_shared_from_this cxt); void setDeviceInfo(shared_ptr cxt, ProjectTypeEnum type, int year, int month, int day, int index); + void setDeviceInfo2(shared_ptr cxt, string id); void setDeviceId(shared_ptr cxt, string deviceId); diff --git a/appsrc/service/setting_mgr_service.cpp b/appsrc/service/setting_mgr_service.cpp index 8caa0b0..c618481 100644 --- a/appsrc/service/setting_mgr_service.cpp +++ b/appsrc/service/setting_mgr_service.cpp @@ -41,12 +41,26 @@ void SettingMgrService::addNewFormula(shared_ptr cxt) { } void SettingMgrService::delFormula(shared_ptr cxt, string formula_id) { - auto oldformulaName = FORMULA_DB->getFormula(formula_id, "name"); + string formulaName; + try { + formulaName = FORMULA_DB->getFormula(formula_id, "name"); + } catch (const std::exception& e) { + } + FORMULA_DB->deleteFormula(formula_id); - ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("删除配方 {}", oldformulaName)); + if (!formulaName.empty()) { + ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("删除配方 {}", formulaName)); + } return; } void SettingMgrService::updateFormula(shared_ptr cxt, string formula_id, json formula) { + // 检查 formula中的所有字段是否都是string类型 + for (auto& item : formula.items()) { + if (!item.value().is_string()) { + THROW_APP_EXCEPTION(err::kappe_code_error, fmt::format("formula item {} is not string", item.key())); + } + } + FORMULA_DB->updateFormula(formula_id, formula); return; }