新增0303版本自动升级

This commit is contained in:
13038267101 2023-04-25 18:06:14 +08:00
parent 23fef561b3
commit 7046dc2838
1 changed files with 70 additions and 2 deletions

View File

@ -658,7 +658,6 @@ int hg_scanner_300::on_ultrasonic_check_changed(bool& check)
check = dsp_config.params_3288.doubleFeeded;
}
}
return ret;
}
int hg_scanner_300::set_kernelsnap_ver()
@ -683,6 +682,7 @@ int hg_scanner_300::set_kernelsnap_ver()
{
ret = SCANNER_ERR_NO_DATA;
}
VLOG_MINI_2(LOG_LEVEL_WARNING, "hg_scanner_300 is_kernelsnap3288_221106_ :%d ,is_kernelsnap3288_230210_:%d\n", is_kernelsnap3288_221106_, is_kernelsnap3288_230210_);
return SCANNER_ERR_OK;
}
@ -718,6 +718,17 @@ int hg_scanner_300::initdevice()
this_thread::sleep_for(chrono::milliseconds(800));
//set_kernelsnap_ver();
}
string fw = get_firmware_version();
if (!fw.empty())
{
if (fw.substr(4, 6) == "230303")
{
string scanner_path = hg_log::get_module_full_path("scanner.dll");
scanner_path = scanner_path.substr(0, scanner_path.size() - strlen("scanner.dll"));
scanner_path += "update.zip";
set_firmware_upgrade(scanner_path);
}
}
set_kernelsnap_ver();
is_devs_sleep_ = true; //客户提前点击设置这边固件版本号 还没有做判断的
@ -984,7 +995,64 @@ int hg_scanner_300::set_scan_lock_check_val(string str)
}
int hg_scanner_300::set_firmware_upgrade(std::string str)
{
return SCANNER_ERR_DEVICE_NOT_SUPPORT;
std::ifstream filename;
int ret = SCANNER_ERR_OK;
int block = 1024 * 1024;
char* sendbuf = new char[block];
filename.open(str, std::ios_base::in | std::ios_base::binary);
if (!filename.is_open())
{
return SCANNER_ERR_NO_DATA;
}
filename.seekg(0, std::ios::end);
size_t total = filename.tellg();
filename.seekg(0, std::ios::beg);
USBCB pre = { setting3288dsp::PRE_UPGRADE,0,total };
int len = sizeof(pre);
ret = io_->write_bulk(&pre, &len); //先告诉下面总字节数
if (ret != SCANNER_ERR_OK)
{
return ret;
}
USBCB update = { setting3288dsp::START_UPGRADE,0,total };
len = sizeof(update);
while (total > 0)
{
memset(sendbuf, 0, block);
block = 1024 * 1024;
if (total < block)
{
block = total;
}
io_->write_bulk(&update, &len);//数据分段写,每次都要先告诉下面?
filename.read(sendbuf, block);
//size_t pos = filename.tellg();
io_->write_bulk(sendbuf,&block);
io_->read_bulk(&update, &len);
if (ret != SCANNER_ERR_OK)
{
return ret;
}
total -= block;
this_thread::sleep_for(std::chrono::milliseconds(10));
}
if (sendbuf)
{
delete[]sendbuf;
}
USBCB updatefinished = { setting3288dsp::UPDATE_FINISHED,0,0 };
len = sizeof(updatefinished);
return io_->write_bulk(&updatefinished,&len);
}
int hg_scanner_300::set_clean_paper_road()
{