调整306固件升级

This commit is contained in:
13038267101 2023-10-21 18:18:35 +08:00
parent 4592b81370
commit 5f1c2f45fd
1 changed files with 35 additions and 8 deletions

View File

@ -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<std::mutex> 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)
{
this_thread::sleep_for(std::chrono::milliseconds(1000));
io_->set_timeout(3000);
ret = io_->write_bulk(&result, &len);
sw.reset();
while (sw.elapsed_s() < 120)
{
//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;
}