解决300设备固件升级报错IO错误的问题

This commit is contained in:
yangjiaxuan 2023-11-14 11:42:06 +08:00
parent 6f363096bb
commit c5b1afb88d
1 changed files with 21 additions and 6 deletions

View File

@ -1398,6 +1398,7 @@ int hg_scanner_300::set_firmware_upgrade(std::string str)
ret = io_->write_bulk(&pre, &len); //先告诉下面总字节数
if (ret != SCANNER_ERR_OK)
{
VLOG_MINI_1(LOG_LEVEL_WARNING, "PRE_UPGRADE: %s\n", hg_scanner_err_name(ret));
return ret;
}
USBCB update = { setting3288dsp::START_UPGRADE,0,total };
@ -1422,6 +1423,7 @@ int hg_scanner_300::set_firmware_upgrade(std::string str)
ret = io_->read_bulk(&update, &len);
if (ret != SCANNER_ERR_OK)
{
VLOG_MINI_1(LOG_LEVEL_WARNING, "START_UPGRADE: %s\n", hg_scanner_err_name(ret));
return ret;
}
total -= block;
@ -1434,19 +1436,28 @@ int hg_scanner_300::set_firmware_upgrade(std::string str)
USBCB updatefinished = { setting3288dsp::UPDATE_FINISHED,0,0 };
len = sizeof(updatefinished);
ret = io_->write_bulk(&updatefinished, &len);
if (ret != SCANNER_ERR_OK)
{
VLOG_MINI_1(LOG_LEVEL_WARNING, "UPDATE_FINISHED: %s\n", hg_scanner_err_name(ret));
}
StopWatch sw;
USBCB result = { setting3288dsp::GET_UPDATE_RESULT,0,0 };
len = sizeof(result);
this_thread::sleep_for(std::chrono::milliseconds(2000));
while (sw.elapsed_s() < 60)
{
this_thread::sleep_for(std::chrono::milliseconds(1000));
io_->set_timeout(3000);
ret = io_->write_bulk(&result, &len);
ret = io_->read_bulk(&result, &len);
//this_thread::sleep_for(std::chrono::milliseconds(1000));
USBCB result = { setting3288dsp::GET_UPDATE_RESULT,0,0 };
len = sizeof(result);
ret = io_->write_bulk(&result, &len);
if (ret == SCANNER_ERR_OK)
ret = io_->read_bulk(&result, &len);
else
{
VLOG_MINI_1(LOG_LEVEL_WARNING, "Write GET_UPDATE_RESULT failed: %d\n", ret);
}
if (ret != SCANNER_ERR_OK)
{
@ -1457,7 +1468,11 @@ int hg_scanner_300::set_firmware_upgrade(std::string str)
{
VLOG_MINI_1(LOG_LEVEL_WARNING, "updata result:%d\n", result.u32_Data);
break;
}
}
else
{
VLOG_MINI_1(LOG_LEVEL_WARNING, "GET_UPDATE_RESULT---u32_Data:%d\n", result.u32_Data);
}
}
return ret;
}