diff --git a/components/sensors/m3078/m3078_code_scaner.cpp b/components/sensors/m3078/m3078_code_scaner.cpp index 4f95274..328c3c9 100644 --- a/components/sensors/m3078/m3078_code_scaner.cpp +++ b/components/sensors/m3078/m3078_code_scaner.cpp @@ -34,13 +34,17 @@ void M3078CodeScanner::trigger() { ZLOGI(TAG, "trigger"); clearIdinfo(); m_triggerGpio.setState(0); - zos_delay(3); + zos_delay(10); m_uart.clearRxData(); m_triggerGpio.setState(1); + m_trigger = true; + creg.m_module_status = 1; } void M3078CodeScanner::stopTrigger() { ZLOGI(TAG, "stopTrigger"); m_triggerGpio.setState(0); + m_trigger = false; + creg.m_module_status = 0; } bool M3078CodeScanner::idInfoIsReady() { return m_codeisready; } char* M3078CodeScanner::getIdinfo() { return codecache; } @@ -79,6 +83,7 @@ int32_t M3078CodeScanner::code_scaner_read_scaner_result(uint8_t* result, int32_ } *len = codecachelen; memcpy(result, codecache, codecachelen); + ZLOGI(TAG, "code_scaner_read_scaner_result: %s(%d)", codecache, codecachelen); return 0; } int32_t M3078CodeScanner::get_id_info_len(int32_t* len) { @@ -99,11 +104,9 @@ int32_t M3078CodeScanner::module_xxx_reg(int32_t param_id, bool read, int32_t& v return 0; } int32_t M3078CodeScanner::read_status() { - if (m_triggerGpio.getState() == 0) { + if (creg.m_module_status == 0) { return 0; } - if (m_codeisready) { - return 0; - } - return 1; + + return m_codeisready; } diff --git a/components/sensors/m3078/m3078_code_scaner.hpp b/components/sensors/m3078/m3078_code_scaner.hpp index 72302d3..9d907c8 100644 --- a/components/sensors/m3078/m3078_code_scaner.hpp +++ b/components/sensors/m3078/m3078_code_scaner.hpp @@ -54,6 +54,7 @@ class M3078CodeScanner : public ZIModule, public ZICodeScaner { int32_t codecachelen = 0; bool m_codeisready = false; + public: M3078CodeScanner(){}; ~M3078CodeScanner(){}; @@ -90,6 +91,7 @@ class M3078CodeScanner : public ZIModule, public ZICodeScaner { virtual int32_t module_xxx_reg(int32_t param_id, bool read, int32_t& val) override; virtual int32_t module_stop() override; + public: virtual int32_t code_scaner_start_scan() override; virtual int32_t code_scaner_stop_scan() override; diff --git a/components/zcancmder/zcan_protocol_parser.cpp b/components/zcancmder/zcan_protocol_parser.cpp index a305b0b..7305d76 100644 --- a/components/zcancmder/zcan_protocol_parser.cpp +++ b/components/zcancmder/zcan_protocol_parser.cpp @@ -47,7 +47,13 @@ void ZCanProtocolParser::initialize(IZCanReceiver* cancmder) { REGFN(board_read_ext_io); REGFN(board_write_ext_io); + REGFN(board_read_muti_io); + REGFN(code_scaner_start_scan); + REGFN(code_scaner_stop_scan); + REGFN(code_scaner_result_is_ready); + REGFN(code_scaner_get_result_length); + REGFN(code_scaner_read_scaner_result); #if 0 REGFN(xymotor_enable); REGFN(xymotor_move_by); @@ -335,7 +341,7 @@ int32_t ZCanProtocolParser::code_scaner_stop_scan(cmdcontxt_t* cxt) { } int32_t ZCanProtocolParser::code_scaner_result_is_ready(cmdcontxt_t* cxt) { - CHECK_AND_GET_MODULE(1); + CHECK_AND_GET_MODULE(0); int32_t* ack = (int32_t*)cxt->ackbuf; cxt->acklen = 4; return module->code_scaner_result_is_ready(&ack[0]); @@ -350,7 +356,12 @@ int32_t ZCanProtocolParser::code_scaner_get_result_length(cmdcontxt_t* cxt) { int32_t ZCanProtocolParser::code_scaner_read_scaner_result(cmdcontxt_t* cxt) { CHECK_AND_GET_MODULE(0); - return module->code_scaner_read_scaner_result(cxt->ackbuf, &cxt->acklen); + cxt->acklen = ZCANCMD_READ_BUF_MAX_SIZE; + int32_t suc = module->code_scaner_read_scaner_result(cxt->ackbuf, &cxt->acklen); + if (suc != 0) { + cxt->acklen = 0; + } + return suc; } #undef MODULE_CLASS