This commit is contained in:
13038267101 2023-10-16 16:25:12 +08:00
commit 5aecdef38a
3 changed files with 44 additions and 3 deletions

View File

@ -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_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_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_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) #if !defined(_WIN32) && !defined(_WIN64) &&defined(x86_64)
isx86_Advan_ = false; 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) if (strcmp(str.c_str(), hg_log::lang_load(ID_OPTION_VALUE_SMZS_LXSM)) == 0)
{ {
scan_count_ = -1; 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 else
{ {
setting_jsn_.at(SANE_STD_OPT_NAME_SCAN_COUNT).at("cur").get_to(scan_count_); 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_); 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) 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); is_auto_paper_scan = *((bool *)data);
if (!firmware_sup_wait_paper_ && is_auto_paper_scan) if (!firmware_sup_wait_paper_ && is_auto_paper_scan)
{ {
@ -4010,6 +4038,11 @@ int hg_scanner::get_image_info(SANE_Parameters* ii, int len)
iiex->flag.dpi = resolution_; iiex->flag.dpi = resolution_;
iiex->bytes = imh.bytes; iiex->bytes = imh.bytes;
} }
else if (imh.statu)
{
if (imh.statu == IMG_STATUS_DOUBLE)
ret = SCANNER_ERR_DEVICE_DOUBLE_FEEDING;
}
} }
} }

View File

@ -322,6 +322,8 @@ protected:
int feedmode_; // 分纸强度 int feedmode_; // 分纸强度
int sleeptime_; // 睡眠时间 int sleeptime_; // 睡眠时间
bool is_auto_paper_scan; // 待纸扫描 bool is_auto_paper_scan; // 待纸扫描
bool auto_scan_prev_; // 保留待纸扫描程序改变状态之前的值 - 2023-10-16: 智学网根据扫描张数来打开或关闭待纸扫描
bool auto_scan_restore_; // 是否需要恢复待纸扫描状态 - 2023-10-16: 智学网根据扫描张数来打开或关闭待纸扫描
bool size_check; // 尺寸检测 bool size_check; // 尺寸检测
bool save_feedmode_type_; //保存分支强度狀態 bool save_feedmode_type_; //保存分支强度狀態

View File

@ -1,4 +1,4 @@
#include "hg_scanner_300.h" #include "hg_scanner_300.h"
#include "../wrapper/hg_log.h" #include "../wrapper/hg_log.h"
#if defined(WIN32) || defined(_WIN64) #if defined(WIN32) || defined(_WIN64)
@ -1590,7 +1590,10 @@ int hg_scanner_300::get_devs_cpu(string& cpu)
buff.resize(bufsize); buff.resize(bufsize);
while (touch < usbcb.u32_Count) 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); out.write(&buff[0], bufsize);
touch += bufsize; touch += bufsize;
bufsize = bufsize > usbcb.u32_Count - touch ? usbcb.u32_Count - touch : bufsize; bufsize = bufsize > usbcb.u32_Count - touch ? usbcb.u32_Count - touch : bufsize;
@ -1636,7 +1639,10 @@ int hg_scanner_300::get_devs_disk(string& disk)
buff.resize(bufsize); buff.resize(bufsize);
while (touch < usbcb.u32_Count) 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); out.write(&buff[0], bufsize);
touch += bufsize; touch += bufsize;
bufsize = bufsize > usbcb.u32_Count - touch ? usbcb.u32_Count - touch : bufsize; bufsize = bufsize > usbcb.u32_Count - touch ? usbcb.u32_Count - touch : bufsize;