diff --git a/hgdriver/hgdev/common_setting.h b/hgdriver/hgdev/common_setting.h index 57a2447..3b4095e 100644 --- a/hgdriver/hgdev/common_setting.h +++ b/hgdriver/hgdev/common_setting.h @@ -1110,6 +1110,8 @@ namespace setting3399 SR_GET_ARM_DATETIME=101, SR_GET_ARM_DATETIME_LENGHT=102, SR_SET_ARM_DATETIME=103, + SR_SET_LCD_LANGUAGE = 106, + SR_GET_LCD_LANGUAGE = 107, SR_UPDATA_START = 0x100, SR_UPDATA_STAUTUS = 0x101, SR_UPDATA_MD5_RELUST = 0x102, diff --git a/hgdriver/hgdev/hg_scanner.cpp b/hgdriver/hgdev/hg_scanner.cpp index 105f385..145b2a2 100644 --- a/hgdriver/hgdev/hg_scanner.cpp +++ b/hgdriver/hgdev/hg_scanner.cpp @@ -162,7 +162,7 @@ hg_scanner::hg_scanner(ScannerSerial serial, const char* dev_name, usb_io* io, i , firmware_sup_wait_paper_(false),firmware_sup_pick_strength_(false),firmware_sup_log_export_(false), firmware_sup_log_export_G300_(false),firmware_sup_color_corr_(false),firmware_sup_wake_device_(false) , firmware_sup_double_img(false),firmware_sup_devs_lock_(false),firmware_sup_dpi_300(false),firmware_sup_dpi_600(false),firmware_sup_auto_speed_(false),firmware_sup_morr_(false) , firmware_sup_color_fill_(false),firmware_sup_history_cnt(false), have_max_size(false), is_discardblank(false),firmware_sup_device_7010(false), firmware_sup_double_check(false) - , firmware_sup_dirty_check(false), firmware_sup_permeation_level(false) + , firmware_sup_dirty_check(false), firmware_sup_permeation_level(false), firmware_sup_firmware_language_(0) { #if !defined(_WIN32) && !defined(_WIN64) &&defined(x86_64) isx86_Advan_ = false; @@ -4885,6 +4885,19 @@ int hg_scanner::device_io_control(unsigned long code, void* data, unsigned* len) int ret = set_restore(); return ret; } + else if (code == IO_CTRL_CODE_SET_FIRMWARE_LANGUAGE) + { + int mode = *((int*)data); + int ret = set_firmware_language(mode); + return ret; + } + else if (code == IO_CTRL_CODE_GET_FIRMWARE_LANGUAGE) + { + int mode = 0; + int ret = get_firmware_language(mode); + (*(int*)data) = mode; + return ret; + } else if (code == IO_CTRL_CODE_GET_SCAN_WITH_HOLE) { *(SANE_Bool*)data = image_prc_param_.bits.rid_hole || isremove_left_hole || isremove_low_hole || isremove_right_hole || isremove_top_hole ? SANE_TRUE : SANE_FALSE; @@ -5079,6 +5092,14 @@ int hg_scanner::set_backup() { return SCANNER_ERR_DEVICE_NOT_SUPPORT; } +int hg_scanner::set_firmware_language(int language_mode) +{ + return SCANNER_ERR_DEVICE_NOT_SUPPORT; +} +int hg_scanner::get_firmware_language(int& language_mode) +{ + return SCANNER_ERR_DEVICE_NOT_SUPPORT; +} int hg_scanner::set_device_model(string sts) { return SCANNER_ERR_DEVICE_NOT_SUPPORT; diff --git a/hgdriver/hgdev/hg_scanner.h b/hgdriver/hgdev/hg_scanner.h index 911c804..094c114 100644 --- a/hgdriver/hgdev/hg_scanner.h +++ b/hgdriver/hgdev/hg_scanner.h @@ -378,6 +378,7 @@ protected: bool firmware_sup_boardTime; //固件支持 板级时间校验 231021 bool firmware_sup_permeation_level; //固件支持 防渗透等级 3399-3C1206 bool firmware_sup_device_7010; //G300 设备但是7010 2023/9/21 + bool firmware_sup_firmware_language_;//固件支持 设置或获取固件语言模式 仅139 239有固件语言功能,3D0115及之后支持 int mat_width; int mat_height; @@ -549,6 +550,8 @@ public: virtual int get_devs_disk(int& disk); //获取设备硬盘容量大小(kb) virtual int set_restore(); //还原文件 virtual int set_backup(); //备份文件 + virtual int set_firmware_language(int language_mode); // 设置固件语言模式 仅139、239设备支持; //0->简体中文; 1->繁体中文; 2->English + virtual int get_firmware_language(int& language_mode); // 获取固件语言模式 仅139、239设备支持; //0->简体中文; 1->繁体中文; 2->English }; diff --git a/hgdriver/hgdev/hg_scanner_239.cpp b/hgdriver/hgdev/hg_scanner_239.cpp index db4f3bb..f54fa18 100644 --- a/hgdriver/hgdev/hg_scanner_239.cpp +++ b/hgdriver/hgdev/hg_scanner_239.cpp @@ -177,8 +177,6 @@ hg_scanner_239::hg_scanner_239(const char* dev_name, int pid,usb_io* io) : hg_sc init_settings((jsontext4 + jsontext5 + jsontext6).c_str()); } - string str; - get_devs_time(str); #ifdef OEM_HUAGAO wait_devsislock_.notify(); #endif @@ -442,6 +440,26 @@ int hg_scanner_239::set_backup() int ret = write_register(setting3399::SR_BACKUP_RESTORES_HUAGODIR, 1); return ret; } +int hg_scanner_239::set_firmware_language(int language_mode) +{ + if (!firmware_sup_firmware_language_) + return SCANNER_ERR_DEVICE_NOT_SUPPORT; + + std::lock_guard lock(io_lock_); + + int ret = write_register(setting3399::SR_SET_LCD_LANGUAGE, language_mode); + return ret; +} +int hg_scanner_239::get_firmware_language(int& language_mode) +{ + if (!firmware_sup_firmware_language_) + return SCANNER_ERR_DEVICE_NOT_SUPPORT; + + std::lock_guard lock(io_lock_); + + int ret = read_register(setting3399::SR_GET_LCD_LANGUAGE, &language_mode); + return ret; +} int hg_scanner_239::get_status(void) { std::lock_guard lock(io_lock_); @@ -557,6 +575,7 @@ void hg_scanner_239::init_version(void) firmware_sup_auto_speed_ = year_date.compare("3B0318") >= 0 ? true : false; firmware_sup_morr_ = year_date.compare("3C0518") >= 0 ? true : false; firmware_sup_color_fill_ = year.compare("3C") >= 0 ? true : false; + firmware_sup_firmware_language_ = year_date.compare("3D0115") >= 0 ? true : false; } else { @@ -572,6 +591,7 @@ void hg_scanner_239::init_version(void) firmware_sup_auto_speed_ = year.compare("3C") >= 0 ? true : false; firmware_sup_morr_ = year_date.compare("3C0518") >= 0 ? true : false; firmware_sup_color_fill_ = year.compare("3C") >= 0 ? true : false; + firmware_sup_firmware_language_ = false; } VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "Firmware_sup_wait_paper_:%s\r\n", firmware_sup_wait_paper_ ? "enable" : "close"); diff --git a/hgdriver/hgdev/hg_scanner_239.h b/hgdriver/hgdev/hg_scanner_239.h index 10e0882..559cd5b 100644 --- a/hgdriver/hgdev/hg_scanner_239.h +++ b/hgdriver/hgdev/hg_scanner_239.h @@ -150,5 +150,7 @@ public: virtual int get_devs_disk(int& disk); //获取设备硬盘容量大小(kb) virtual int set_restore(); //还原文件 virtual int set_backup(); //备份文件 + virtual int set_firmware_language(int language_mode); // 设置固件语言模式 仅139、239设备支持; //0->简体中文; 1->繁体中文; 2->English + virtual int get_firmware_language(int& language_mode); // 获取固件语言模式 仅139、239设备支持; //0->简体中文; 1->繁体中文; 2->English };