From 382ef8be76528146c587dc6e7ebe479f7a236eee Mon Sep 17 00:00:00 2001 From: yangjiaxuan <171295266@qq.com> Date: Thu, 26 Oct 2023 17:26:13 +0800 Subject: [PATCH] =?UTF-8?q?3399=E3=80=813288=E8=AE=BE=E5=A4=87=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E6=9D=BF=E7=BA=A7=E6=97=B6=E9=97=B4=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=EF=BC=8C=E5=BE=AE=E8=B0=83=E5=A4=87=E4=BB=BD=E8=BF=98=E5=8E=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgdriver/hgdev/common_setting.h | 3 +++ hgdriver/hgdev/hg_scanner.h | 4 ++-- hgdriver/hgdev/hg_scanner_239.cpp | 34 +++++++++++++++++++++++++++-- hgdriver/hgdev/hg_scanner_239.h | 4 +++- hgdriver/hgdev/hg_scanner_300.cpp | 36 ++++++++++++++++--------------- 5 files changed, 59 insertions(+), 22 deletions(-) diff --git a/hgdriver/hgdev/common_setting.h b/hgdriver/hgdev/common_setting.h index 5697c91..2fddf19 100644 --- a/hgdriver/hgdev/common_setting.h +++ b/hgdriver/hgdev/common_setting.h @@ -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, diff --git a/hgdriver/hgdev/hg_scanner.h b/hgdriver/hgdev/hg_scanner.h index 54e64cb..8aaa90b 100644 --- a/hgdriver/hgdev/hg_scanner.h +++ b/hgdriver/hgdev/hg_scanner.h @@ -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; diff --git a/hgdriver/hgdev/hg_scanner_239.cpp b/hgdriver/hgdev/hg_scanner_239.cpp index bc46c1c..d55012c 100644 --- a/hgdriver/hgdev/hg_scanner_239.cpp +++ b/hgdriver/hgdev/hg_scanner_239.cpp @@ -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 lock(io_lock_); diff --git a/hgdriver/hgdev/hg_scanner_239.h b/hgdriver/hgdev/hg_scanner_239.h index 75819e4..e35a103 100644 --- a/hgdriver/hgdev/hg_scanner_239.h +++ b/hgdriver/hgdev/hg_scanner_239.h @@ -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; diff --git a/hgdriver/hgdev/hg_scanner_300.cpp b/hgdriver/hgdev/hg_scanner_300.cpp index 481fcfa..5ec1bdd 100644 --- a/hgdriver/hgdev/hg_scanner_300.cpp +++ b/hgdriver/hgdev/hg_scanner_300.cpp @@ -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()