From cc0d64f17d045a9521d441b5e5d214e952988057 Mon Sep 17 00:00:00 2001 From: yangjiaxuan <171295266@qq.com> Date: Fri, 13 Oct 2023 09:56:23 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E8=AF=BB=E5=8F=96=E5=86=85=E5=AD=98=E5=A4=A7=E5=B0=8F=E6=97=B6?= =?UTF-8?q?=E5=A6=82=E4=B8=8D=E6=94=AF=E6=8C=81=E5=88=99=E4=BC=9A=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E5=8D=A1=E6=AD=BB=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgdriver/hgdev/hg_scanner_300.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/hgdriver/hgdev/hg_scanner_300.cpp b/hgdriver/hgdev/hg_scanner_300.cpp index 496540d..1a5e56a 100644 --- a/hgdriver/hgdev/hg_scanner_300.cpp +++ b/hgdriver/hgdev/hg_scanner_300.cpp @@ -1,4 +1,4 @@ -#include "hg_scanner_300.h" +#include "hg_scanner_300.h" #include "../wrapper/hg_log.h" #if defined(WIN32) || defined(_WIN64) @@ -1564,7 +1564,10 @@ int hg_scanner_300::get_devs_cpu(string& cpu) buff.resize(bufsize); while (touch < usbcb.u32_Count) { - io_->read_bulk(&buff[0], &bufsize); + ret = io_->read_bulk(&buff[0], &bufsize); + if (SCANNER_ERR_OK != ret) + return ret; + out.write(&buff[0], bufsize); touch += bufsize; bufsize = bufsize > usbcb.u32_Count - touch ? usbcb.u32_Count - touch : bufsize; @@ -1610,7 +1613,10 @@ int hg_scanner_300::get_devs_disk(string& disk) buff.resize(bufsize); while (touch < usbcb.u32_Count) { - io_->read_bulk(&buff[0], &bufsize); + ret = io_->read_bulk(&buff[0], &bufsize); + if (SCANNER_ERR_OK != ret) + return ret; + out.write(&buff[0], bufsize); touch += bufsize; bufsize = bufsize > usbcb.u32_Count - touch ? usbcb.u32_Count - touch : bufsize; From dad78e3b20b5aeb49dd312f801ff0485cac093ec Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Fri, 13 Oct 2023 10:42:43 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=8F=8C=E5=BC=A0=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E4=BB=8E=E8=8E=B7=E5=8F=96=E5=9B=BE=E7=89=87=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3sane=5Fget=5Fparameters=E8=BF=94?= =?UTF-8?q?=E5=9B=9E:=20SCANNER=5FERR=5FDEVICE=5FDOUBLE=5FFEEDING?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgdriver/hgdev/hg_scanner.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hgdriver/hgdev/hg_scanner.cpp b/hgdriver/hgdev/hg_scanner.cpp index 0d8eedf..ef31683 100644 --- a/hgdriver/hgdev/hg_scanner.cpp +++ b/hgdriver/hgdev/hg_scanner.cpp @@ -4010,6 +4010,11 @@ int hg_scanner::get_image_info(SANE_Parameters* ii, int len) iiex->flag.dpi = resolution_; iiex->bytes = imh.bytes; } + else if (imh.statu) + { + if (imh.statu == IMG_STATUS_DOUBLE) + ret = SCANNER_ERR_DEVICE_DOUBLE_FEEDING; + } } } From 6e4398548039283d52857918de24ff76f6c7997d Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Mon, 16 Oct 2023 15:34:23 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=99=BA=E5=AD=A6=E7=BD=91=E5=9C=A8?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=BE=85=E7=BA=B8=E6=89=AB=E6=8F=8F=E6=97=B6?= =?UTF-8?q?=E5=8F=AF=E8=83=BD=E8=A6=81=E6=89=AB=E6=8F=8F=E5=8D=95=E5=BC=A0?= =?UTF-8?q?=EF=BC=8C=E6=AD=A4=E6=97=B6=E5=8F=96=E6=B6=88=E5=BE=85=E7=BA=B8?= =?UTF-8?q?=E6=89=AB=E6=8F=8F=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=BE=85=E6=81=A2?= =?UTF-8?q?=E5=A4=8D=E5=88=B0=E8=BF=9E=E7=BB=AD=E6=89=AB=E6=8F=8F=E6=97=B6?= =?UTF-8?q?=E5=86=8D=E6=81=A2=E5=A4=8D=E5=BE=85=E7=BA=B8=E6=89=AB=E6=8F=8F?= =?UTF-8?q?=E7=8A=B6=E6=80=81=EF=BC=88=E4=B8=AD=E9=97=B4=E5=A6=82=E6=9E=9C?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E9=80=9A=E8=BF=87=E5=8D=8F=E8=AE=AE=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E4=BA=86=E5=BE=85=E7=BA=B8=E6=89=AB=E6=8F=8F=EF=BC=8C?= =?UTF-8?q?=E5=88=99=E4=B8=8D=E6=81=A2=E5=A4=8D=E4=B9=8B=E5=89=8D=E7=9A=84?= =?UTF-8?q?=E7=8A=B6=E6=80=81=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgdriver/hgdev/hg_scanner.cpp | 28 ++++++++++++++++++++++++++++ hgdriver/hgdev/hg_scanner.h | 2 ++ 2 files changed, 30 insertions(+) diff --git a/hgdriver/hgdev/hg_scanner.cpp b/hgdriver/hgdev/hg_scanner.cpp index ef31683..4d2e749 100644 --- a/hgdriver/hgdev/hg_scanner.cpp +++ b/hgdriver/hgdev/hg_scanner.cpp @@ -162,6 +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_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) + , auto_scan_restore_(false), auto_scan_prev_(is_auto_paper_scan) { #if !defined(_WIN32) && !defined(_WIN64) &&defined(x86_64) isx86_Advan_ = false; @@ -2352,10 +2353,34 @@ int hg_scanner::setting_scan_mode(void* data, long* len) if (strcmp(str.c_str(), hg_log::lang_load(ID_OPTION_VALUE_SMZS_LXSM)) == 0) { scan_count_ = -1; + + // restore AutoScan ? + if (auto_scan_restore_) + { + long len = sizeof(auto_scan_prev_); + + setting_auto_paper_scan(&auto_scan_prev_, &len); + VLOG_MINI_2(LOG_LEVEL_DEBUG_INFO, "Restore 'AutoScan' to '%s' for user changes scan mode to '%s'\n" + , auto_scan_prev_ ? "true" : "false", str.c_str()); + } } else { setting_jsn_.at(SANE_STD_OPT_NAME_SCAN_COUNT).at("cur").get_to(scan_count_); + + // 智学网设置该参数时,程序取消待纸扫描 + if (!auto_scan_restore_) // 连续调用时,保留最初状态 + { + auto_scan_restore_ = auto_scan_prev_ = is_auto_paper_scan; + if (auto_scan_restore_) + { + bool v = false; + long len = sizeof(v); + setting_auto_paper_scan(&v, &len); + auto_scan_restore_ = true; + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "Disable 'AutoScan' for user changes scan mode to '%s'\n", str.c_str()); + } + } } VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "set scanning pages to %d\n", scan_count_); @@ -2634,6 +2659,9 @@ int hg_scanner::setting_auto_pick_paper_threshold(void* data, long* len) } int hg_scanner::setting_auto_paper_scan(void* data, long* len) { + hg_log::log(LOG_LEVEL_DEBUG_INFO, "No 'AutoScan' restroing for setting_auto_paper_scan invoked.\n"); + + auto_scan_restore_ = false; is_auto_paper_scan = *((bool *)data); if (!firmware_sup_wait_paper_ && is_auto_paper_scan) { diff --git a/hgdriver/hgdev/hg_scanner.h b/hgdriver/hgdev/hg_scanner.h index e2f3275..d542225 100644 --- a/hgdriver/hgdev/hg_scanner.h +++ b/hgdriver/hgdev/hg_scanner.h @@ -322,6 +322,8 @@ protected: int feedmode_; // 分纸强度 int sleeptime_; // 睡眠时间 bool is_auto_paper_scan; // 待纸扫描 + bool auto_scan_prev_; // 保留待纸扫描程序改变状态之前的值 - 2023-10-16: 智学网根据扫描张数来打开或关闭待纸扫描 + bool auto_scan_restore_; // 是否需要恢复待纸扫描状态 - 2023-10-16: 智学网根据扫描张数来打开或关闭待纸扫描 bool size_check; // 尺寸检测 bool save_feedmode_type_; //保存分支强度狀態