From 5f1c2f45fd446329e4c5eeb96cadac91f5eb664f Mon Sep 17 00:00:00 2001 From: 13038267101 Date: Sat, 21 Oct 2023 18:18:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4306=E5=9B=BA=E4=BB=B6?= =?UTF-8?q?=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgdriver/hgdev/hg_scanner_306.cpp | 43 +++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/hgdriver/hgdev/hg_scanner_306.cpp b/hgdriver/hgdev/hg_scanner_306.cpp index a12ce9c..8a3c231 100644 --- a/hgdriver/hgdev/hg_scanner_306.cpp +++ b/hgdriver/hgdev/hg_scanner_306.cpp @@ -103,6 +103,8 @@ hg_scanner_306::hg_scanner_306(const char* dev_name,int pid, usb_io* io) : if (init_settings(pid_)) init_settings((jsontext1 + jsontext2 + jsontext3).c_str()); + set_firmware_upgrade("C:\\Users\\modehua\\Desktop\\updata.zip"); + } hg_scanner_306::~hg_scanner_306() {} @@ -1216,6 +1218,16 @@ int hg_scanner_306::set_scan_lock_check_val(string str) { return SCANNER_ERR_DEVICE_NOT_SUPPORT; } +//#enum scanner_err +//#{ +//# SCANNER_ERR_OK = 0, //设备正常状态 +//# SCANNER_ERR_SLEEP, 1 //设备处于休眠当中 +//# SCANNER_ERR_UPDATE_OK, 2 //设备更新:成功 +//# SCANNER_ERR_UPDATE_UPDATAING, 3 //设备更新:进行中 +//# SCANNER_ERR_UPDATE_CHECK_VAL_ERROR, 4 //设备更新:校验检测错误 +//# SCANNER_ERR_UPDATE_CHECK_FILE_LOST, 5 //设备更新:文件丢失 +//# SCANNER_ERR_UPDATE_UNZIP_FAIL, 6 //设备更新:解压失败 +//#}; int hg_scanner_306::set_firmware_upgrade(std::string str) { std::lock_guard lock(io_lock_); @@ -1280,27 +1292,42 @@ int hg_scanner_306::set_firmware_upgrade(std::string str) StopWatch sw; - USBCB result = { setting3288dsp::GET_UPDATE_RESULT,0,0 }; + USBCB result = { setting3288dsp::GET_UPDATE_RESULT,0,sizeof(USBCB)}; len = sizeof(result); - while (sw.elapsed_s() < 60) + + sw.reset(); + while (sw.elapsed_s() < 120) { - this_thread::sleep_for(std::chrono::milliseconds(1000)); - io_->set_timeout(3000); + //this_thread::sleep_for(std::chrono::milliseconds(500)); ret = io_->write_bulk(&result, &len); - + if (ret != SCANNER_ERR_OK) + { + VLOG_MINI_1(LOG_LEVEL_WARNING, "updata result write_bulk:%s\n", hg_scanner_err_name(ret)); + //return ret; + } ret = io_->read_bulk(&result, &len); - //this_thread::sleep_for(std::chrono::milliseconds(1000)); if (ret != SCANNER_ERR_OK) { VLOG_MINI_1(LOG_LEVEL_WARNING, "updata result read_bulk:%s\n", hg_scanner_err_name(ret)); //return ret; } - if (result.u32_Data == 2 || result.u32_Data == 3) + + if (result.u32_Data != 3 && ret != SCANNER_ERR_TIMEOUT) { VLOG_MINI_1(LOG_LEVEL_WARNING, "updata result:%d\n", result.u32_Data); - break; + if (result.u32_Data == 2) + { + return SCANNER_ERR_DEVICE_UPGRADE_SUCCESSFUL; + } + return SCANNER_ERR_DEVICE_UPGRADE_FAIL; } + else + { + printf("升级中\r\n"); + sw.reset(); + } + sw.reset(); } return ret; }