3399、3288设备默认板级时间校验,微调备份还原

This commit is contained in:
yangjiaxuan 2023-10-26 17:26:13 +08:00
parent ee35cf042f
commit 382ef8be76
5 changed files with 59 additions and 22 deletions

View File

@ -1097,6 +1097,9 @@ namespace setting3399
SR_SET_H_600_RATIO,
SR_GET_V_600_RATIO,
SR_SET_V_600_RATIO,
SR_GET_ARM_DATETIME=101,
SR_GET_ARM_DATETIME_LENGHT=102,
SR_SET_ARM_DATETIME=103,
SR_UPDATA_START = 0x100,
SR_UPDATA_STAUTUS = 0x101,
SR_UPDATA_MD5_RELUST = 0x102,

View File

@ -391,10 +391,10 @@ protected:
bool firmware_sup_morr_; //固件支持 摩尔纹 139 239-3C0518
bool firmware_sup_color_fill_; //固件支持 色彩填充 139 239 439 -3C
bool firmware_sup_history_cnt; //固件支持 清除历史张数 3288 G300 220303
bool firmware_sup_double_check; //固件支持 双张校验 139 239-231017 300-231021
bool firmware_sup_double_check; //固件支持 双张校验 231021
bool firmware_sup_dirty_check; //固件支持 脏污检测 231021
bool firmware_sup_backup_restore; //固件支持 备份还原 231021
bool firmware_sup_boardTime; //固件支持 板级时间校验 231022
bool firmware_sup_boardTime; //固件支持 板级时间校验 231021
bool firmware_sup_device_7010; //G300 设备但是7010 2023/9/21
int mat_width;
int mat_height;

View File

@ -184,6 +184,8 @@ hg_scanner_239::hg_scanner_239(const char* dev_name, int pid,usb_io* io) : hg_sc
wait_devsislock_.notify();
#endif
//wait_read_int.notify();
update_boarddatetime();
}
hg_scanner_239::~hg_scanner_239()
{
@ -542,10 +544,10 @@ void hg_scanner_239::init_version(void)
string devType;
string year_date = fv.substr(4, 6);
firmware_sup_double_check = year_date.compare("231017") >= 0 ? true : false;
firmware_sup_double_check = year_date.compare("231021") >= 0 ? true : false;
firmware_sup_dirty_check = year_date.compare("231021") >= 0 ? true : false;
firmware_sup_backup_restore = year_date.compare("231021") >= 0 ? true : false;
firmware_sup_boardTime = year_date.compare("231022") >= 0 ? true : false;
firmware_sup_boardTime = year_date.compare("231021") >= 0 ? true : false;
if (dev == "G1" || dev == "G2")
{
@ -1243,6 +1245,34 @@ int hg_scanner_239::read_control_device_files(std::string file_path, std::string
}
return ret;
}
int hg_scanner_239::update_boarddatetime()
{
int len = 0;
int ret = read_register(setting3399::SR_GET_ARM_DATETIME_LENGHT, &len);
std::string datenow;
datenow.resize(len);
auto t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
std::cout << std::put_time(std::localtime(&t), "%F %T") << std::endl;
std::stringstream ss;
ss << std::put_time(std::localtime(&t), "%F %T");
std::string str = ss.str();
ret = write_register(setting3399::SR_SET_ARM_DATETIME, len);
if (ret != SCANNER_ERR_OK)
{
LOG_INFO(LOG_LEVEL_DEBUG_INFO, "write_control_device_files write_register [SR_SET_ARM_DATETIME] is fail \n");
return ret;
}
ret = io_->write_bulk(&str[0], &len);
if (ret != SCANNER_ERR_OK)
{
LOG_INFO(LOG_LEVEL_DEBUG_INFO, "write_control_device_files write_bulk str is fail \n");
return ret;
}
return SCANNER_ERR_OK;
}
int hg_scanner_239::write_control_device_files(std::string file_path, std::string file_str)
{
std::lock_guard<std::mutex> lock(io_lock_);

View File

@ -1,4 +1,4 @@
#pragma once
#pragma once
// hg_scanner is the base class of kinds of scanners
//
@ -51,6 +51,8 @@ class hg_scanner_239 : public hg_scanner
int write_control_device_files(std::string file_path,std::string file_str);
int read_control_device_files(std::string file_path, std::string &file_str);
int update_boarddatetime();
protected:
virtual void on_device_reconnected(void) override;
virtual int on_scanner_closing(bool force) override;

View File

@ -106,10 +106,10 @@ hg_scanner_300::hg_scanner_300(const char* dev_name,int pid, usb_io* io) :
string year_date = fv.substr(4, 6);
firmware_sup_morr_ = year_date.compare("230724") >= 0 ? true : false;
firmware_sup_double_check = year_date.compare("231017") >= 0 ? true : false;
firmware_sup_double_check = year_date.compare("231021") >= 0 ? true : false;
firmware_sup_dirty_check = year_date.compare("231021") >= 0 ? true : false;
firmware_sup_backup_restore = year_date.compare("231021") >= 0 ? true : false;
firmware_sup_boardTime = year_date.compare("231022") >= 0 ? true : false;
firmware_sup_boardTime = year_date.compare("231021") >= 0 ? true : false;
#ifndef MAPPING_FUNCTION_IN_BASE
init_setting_map(setting_map_, ARRAY_SIZE(setting_map_));//优先初始化
@ -121,7 +121,7 @@ hg_scanner_300::hg_scanner_300(const char* dev_name,int pid, usb_io* io) :
else
init_settings((jsontext4 + jsontext5 + jsontext6).c_str());
}
//update_boarddatetime();//暂未考虑版本兼容情况
update_boarddatetime();//暂未考虑版本兼容情况
//wait_read_int.notify();
}
hg_scanner_300::~hg_scanner_300()
@ -876,6 +876,7 @@ int hg_scanner_300::update_boarddatetime()
USBCB usbcb = { setting3288dsp::GET_DATETIME,0,0 };
int len = sizeof(usbcb);
int size = 0;
int ret = io_->write_bulk(&usbcb, &len);
if (ret == SCANNER_ERR_OK)
{
@ -888,7 +889,8 @@ int hg_scanner_300::update_boarddatetime()
}
std::string datenow;
datenow.resize(usbcb.u32_Count);
io_->read_bulk(&datenow[0], &len);
size = datenow.size();
io_->read_bulk(&datenow[0], &size);
VLOG_MINI_1(LOG_LEVEL_FATAL, "Boardtime : %s \n", datenow.c_str());
}
else
@ -897,22 +899,19 @@ int hg_scanner_300::update_boarddatetime()
return SCANNER_ERR_ACCESS_DENIED;
}
auto now = std::chrono::system_clock::now();
auto timet = std::chrono::system_clock::to_time_t(now);
auto localTime = *std::gmtime(&timet);
//获取当前系统时间
auto t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
std::cout << std::put_time(std::localtime(&t), "%F %T") << std::endl;
std::stringstream ss;
std::string str;
ss << std::put_time(&localTime, "%Y-%m-%dT%H:%M:%S");
ss >> str;
replace(str.begin(),str.end(),'T', ' ');
ss << std::put_time(std::localtime(&t), "%F %T");
std::string str = ss.str();
usbcb.u32_CMD = setting3288dsp::SET_DATETIME;
usbcb.u32_Count = str.length();
ret = io_->write_bulk(&usbcb, &len);
if (ret == SCANNER_ERR_OK)
ret = io_->read_bulk(&usbcb, &len);
else
size = str.size();
ret = io_->write_bulk(&str[0], &size);
if (ret != SCANNER_ERR_OK)
{
VLOG_MINI_1(LOG_LEVEL_FATAL, "GET_DATETIME failed \n", 0);
return SCANNER_ERR_ACCESS_DENIED;
@ -931,7 +930,8 @@ int hg_scanner_300::update_boarddatetime()
}
std::string datenow;
datenow.resize(usbcb2.u32_Count);
io_->read_bulk(&datenow[0], &len);
int size = datenow.size();
io_->read_bulk(&datenow[0], &size);
VLOG_MINI_1(LOG_LEVEL_FATAL, "After update board time : %s \n", datenow.c_str());
}
else
@ -1661,7 +1661,9 @@ int hg_scanner_300::set_restore()
StopWatch sw;
while (sw.elapsed_ms()< 5000.0)
{
len = sizeof(USBCB);
ret = io_->write_bulk(&usbcb, &len);
len = sizeof(USBCB);
ret = io_->read_bulk(&usbcb, &len);
if (usbcb.u32_Data == 2)
break;
@ -1670,7 +1672,7 @@ int hg_scanner_300::set_restore()
std::string log_info = usbcb.u32_Data == 2 ? "RECOVERY success " : " RECOVERY failed " + std::to_string(usbcb.u32_Data);
VLOG_MINI_1(LOG_LEVEL_FATAL, log_info.c_str(), 0);
return usbcb.u32_Data == 2? SCANNER_ERR_OK: SCANNER_ERR_INVALID_PARAMETER;
return usbcb.u32_Data == 2? SCANNER_ERR_OK: SCANNER_ERR_ACCESS_DENIED;
}
int hg_scanner_300::set_backup()