From c44a7bad03d6b5022cbd31723202a5dde2cd965f Mon Sep 17 00:00:00 2001 From: 13038267101 Date: Fri, 16 Jun 2023 18:01:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=8F=96=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E7=94=B5=E6=9C=BA=E5=9B=BA=E4=BB=B6=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgdriver/hgdev/hg_scanner.cpp | 17 ++++++++++++++++- hgdriver/hgdev/hg_scanner.h | 7 ++++++- hgdriver/hgdev/hg_scanner_239.cpp | 21 +++++++++++++++------ hgdriver/hgdev/hg_scanner_239.h | 1 + 4 files changed, 38 insertions(+), 8 deletions(-) diff --git a/hgdriver/hgdev/hg_scanner.cpp b/hgdriver/hgdev/hg_scanner.cpp index 67d985b..b5bbe94 100644 --- a/hgdriver/hgdev/hg_scanner.cpp +++ b/hgdriver/hgdev/hg_scanner.cpp @@ -669,6 +669,7 @@ void hg_scanner::init_setting_func_map(void) setting_map_[SANE_STD_OPT_NAME_TOTAL_COUNT] = &hg_scanner::setting_get_history_count; setting_map_[SANE_STD_OPT_NAME_GET_DEVS_L0G] = &hg_scanner::setting_get_devs_log; setting_map_[SANE_STD_OPT_NAME_LANGUAGE] = &hg_scanner::setting_set_language; + setting_map_[SANE_STD_OPT_NAME_MOTOR_VER] = &hg_scanner::setting_get_motor_ver; } std::string hg_scanner::setting_name_from(const char* n_or_id, int* id) { @@ -2296,7 +2297,7 @@ int hg_scanner::setting_auto_pick_paper_threshold(void* data, long* len) int hg_scanner::setting_auto_paper_scan(void* data, long* len) { is_auto_paper_scan = *((bool *)data); - if (!is_kernelsnap_439_220430_ && is_auto_paper_scan) + if (!is_kernelsnap_239_220430_ && is_auto_paper_scan) { is_auto_paper_scan = *(bool*)data = false; //notify_ui_working_status(hg_log::lang_load(ID_STATU_DESC_SCANNER_ERR_DEVICE_NOT_SUPPORTED), SANE_EVENT_ERROR, SCANNER_ERR_DEVICE_NOT_SUPPORT); @@ -2530,6 +2531,16 @@ int hg_scanner::setting_set_language(void* data, long* len) return err; } +int hg_scanner::setting_get_motor_ver(void* data, long* len) +{ + string str; + int ret = get_motor_board_ver(str); + if (ret == SCANNER_ERR_OK) + { + strcpy((char*)data, str.c_str()); + } + return ret; +} int hg_scanner::on_color_mode_changed(int& color_mode) { return SCANNER_ERR_DEVICE_NOT_SUPPORT; @@ -4190,6 +4201,10 @@ int hg_scanner::set_updata0303(void) { return SCANNER_ERR_DEVICE_NOT_SUPPORT; } +int hg_scanner::get_motor_board_ver(string& ver) +{ + 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 4c58017..7ec846a 100644 --- a/hgdriver/hgdev/hg_scanner.h +++ b/hgdriver/hgdev/hg_scanner.h @@ -234,6 +234,8 @@ protected: int setting_get_history_count(void* data, long* len); int setting_get_devs_log(void* data, long* len); int setting_set_language(void* data, long* len); + int setting_get_motor_ver(void* data, long* len); + virtual void on_device_reconnected(void); virtual int on_scanner_closing(bool force); @@ -349,12 +351,14 @@ protected: bool is_kernelsnap3288_221106_; //G300 3288 在221106版本支持真实300dpi bool is_kernelsnap3288_230210_; //G300 3288 在230210版本支持真实600dpi bool is_kernelsnap3288_230303_; //G300 3288 支持清除历史扫描张数 - bool is_kernelsnap_439_220430_; //待纸扫描 + bool is_kernelsnap_devsislock; //支持设备锁的版本 bool is_kernelsnap_239_3C_; //支持偏色校正的版本,自适应配置 bool is_kernelsnap_439_3C0606; //支持偏色校正的版本 bool is_kernelsnap_239_220500_; //支持双张保留的版本 + bool is_kernelsnap_239_220429_; //第一个安陆版本,支持设备日志导出 + bool is_kernelsnap_239_220430_; //待纸扫描 bool is_kernelsnap_211227_; //此版本以下,不支持真实dpi ,只设置1下去 @@ -517,6 +521,7 @@ public: virtual int set_auto_flat(int data) = 0; //设置自动平场校正 // data:0(ALL) 1(200dpi、gray) 2(200dpi、color) 3(300dpi、gray) 4(300dpi、color) 5(600dpi、gray) 6(600dpi、color) virtual int set_updata0303(void) ; + virtual int get_motor_board_ver(string &ver); //获取G239电机板的固件号 }; diff --git a/hgdriver/hgdev/hg_scanner_239.cpp b/hgdriver/hgdev/hg_scanner_239.cpp index 489884c..95f479b 100644 --- a/hgdriver/hgdev/hg_scanner_239.cpp +++ b/hgdriver/hgdev/hg_scanner_239.cpp @@ -335,6 +335,15 @@ int hg_scanner_239::set_auto_flat(int data) VLOG_MINI_1(LOG_LEVEL_WARNING, "set_auto_flat ret: %s\n", hg_scanner_err_name(ret)); return ret; } +int hg_scanner_239::get_motor_board_ver(string &ver) +{ + std::lock_guard lock(io_lock_); + int val = 0, + ret = read_register(setting3399::SR_GET_MBVERSION_LENGHT, &val); + + ver = control_fetch(setting3399::SR_GET_MBVERSION, 0, val); + return ret; +} int hg_scanner_239::get_status(void) { std::lock_guard lock(io_lock_); @@ -470,7 +479,7 @@ void hg_scanner_239::init_version(void) VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "Firmware version: %s\n", fv.c_str()); is_kernelsnap_239_220429_ = date >= "B0429" ? true : false; - is_kernelsnap_439_220430_ = date >= "B0430" ? true : false; + is_kernelsnap_239_220430_ = date >= "B0430" ? true : false; if (dev == "G1" || dev == "G2" ) { @@ -487,13 +496,13 @@ void hg_scanner_239::init_version(void) ,is_kernelsnap_239_211209_:%d \ ,is_kernelsnap_239_220830_:%d \ ,is_kernelsnap_239_221027_:%d \ - ,is_kernelsnap_439_220430_:%d \ + ,is_kernelsnap_239_220430_:%d \ ,is_kernelsnap_239_3C_:%d\n" , fv.c_str() , is_kernelsnap_239_211209_ , is_kernelsnap_239_220830_ , is_kernelsnap_239_221027_ - , is_kernelsnap_439_220430_ + , is_kernelsnap_239_220430_ , is_kernelsnap_239_3C_); } else @@ -503,9 +512,9 @@ void hg_scanner_239::init_version(void) VLOG_MINI_2(LOG_LEVEL_DEBUG_INFO \ , "is_kernelsnap_239_3C_:%d \ - , is_kernelsnap_439_220430_:%d\r\n" \ + , is_kernelsnap_239_220430_:%d\r\n" \ , is_kernelsnap_239_3C_ \ - , is_kernelsnap_439_220430_); + , is_kernelsnap_239_220430_); } @@ -1012,7 +1021,7 @@ int hg_scanner_239::on_is_auto_paper(bool isautopaper) { int val = 0, ret = SCANNER_ERR_OK; - if (is_kernelsnap_439_220430_ || !isautopaper) + if (is_kernelsnap_239_220430_ || !isautopaper) { dev_conf_.params_3399.is_autopaper = isautopaper; diff --git a/hgdriver/hgdev/hg_scanner_239.h b/hgdriver/hgdev/hg_scanner_239.h index d602dc6..c16733d 100644 --- a/hgdriver/hgdev/hg_scanner_239.h +++ b/hgdriver/hgdev/hg_scanner_239.h @@ -135,5 +135,6 @@ public: virtual int set_auto_flat(int data); //设置自动平场校正 // data:0(ALL) 1(200dpi、gray) 2(200dpi、color) 3(300dpi、gray) 4(300dpi、color) 5(600dpi、gray) 6(600dpi、color) + virtual int get_motor_board_ver(string &ver); };