From 07d094acd0ab5047879501eeeb600d0bc75e664f Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Wed, 18 Oct 2023 17:09:34 +0800 Subject: [PATCH] =?UTF-8?q?Revert=20"=E4=B8=BA=E5=8F=8C=E5=BC=A0=E5=A4=84?= =?UTF-8?q?=E7=90=86=E5=8A=9F=E8=83=BD=EF=BC=8C=E8=B0=83=E6=95=B4=E4=B8=89?= =?UTF-8?q?=E6=96=B9=E5=90=AF=E5=8A=A8=E9=80=BB=E8=BE=91"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit af593e33765f4f24132cd14c0f2916065354e284. --- hgdriver/hgdev/hg_scanner.cpp | 33 +++++++++----------- hgdriver/hgdev/hg_scanner.h | 2 +- hgdriver/hgdev/hg_scanner_200.cpp | 16 +++++----- hgdriver/hgdev/hg_scanner_200.h | 34 ++++++++++---------- hgdriver/hgdev/hg_scanner_239.cpp | 4 +-- hgdriver/hgdev/hg_scanner_239.h | 2 +- hgdriver/hgdev/hg_scanner_300.cpp | 38 +++++++++++------------ hgdriver/hgdev/hg_scanner_300.h | 50 +++++++++++++++--------------- hgdriver/hgdev/hg_scanner_302.cpp | 4 +-- hgdriver/hgdev/hg_scanner_302.h | 40 ++++++++++++------------ hgdriver/hgdev/scanner_manager.cpp | 2 +- 11 files changed, 110 insertions(+), 115 deletions(-) diff --git a/hgdriver/hgdev/hg_scanner.cpp b/hgdriver/hgdev/hg_scanner.cpp index 9571c91..42ccd67 100644 --- a/hgdriver/hgdev/hg_scanner.cpp +++ b/hgdriver/hgdev/hg_scanner.cpp @@ -3384,10 +3384,8 @@ int hg_scanner::try_third_app_handle_start(bool& handled) while (wait_usb_result_.try_wait()) std::this_thread::sleep_for(std::chrono::milliseconds(3)); - // 工作线程还未退出,或者图片未取完,则不做实质性的启动操作,继续保持现状 if (!wait_img_.is_waiting() || !wait_usb_.is_waiting() || final_imgs_.size()) { - // 有图片,直接返回让APP取图片;没有图片则等待线程工作结束 while (final_imgs_.size() == 0) { if (wait_img_.is_waiting() && wait_usb_.is_waiting()) @@ -3395,34 +3393,31 @@ int hg_scanner::try_third_app_handle_start(bool& handled) std::this_thread::sleep_for(std::chrono::milliseconds(3)); } - - // user_cancel_ has waited for all worker threads exit - added on 2023-10-18 for double-handling - if (user_cancel_ && final_imgs_.size() == 1 && status_ == SCANNER_ERR_DEVICE_DOUBLE_FEEDING) - final_imgs_.clear(); - - // 如果图片为空,扫描结束。正常结束则尝试新一轮扫描;异常结束则返回异常代码 if (final_imgs_.size() == 0) { final_img_index_ = 0; - //if (user_cancel_) - // handled = false; - //else if (status_ == SCANNER_ERR_OK) - // ret = SCANNER_ERR_DEVICE_NO_PAPER; - //else - // ret = status_; - if (user_cancel_ || status_ == SCANNER_ERR_OK) + if (user_cancel_) handled = false; + else if (status_ == SCANNER_ERR_OK) + ret = SCANNER_ERR_DEVICE_NO_PAPER; else ret = status_; } } - else + else if (final_img_index_) { - // 一轮扫描已经完成,重新开始新一轮扫描 final_img_index_ = 0; - handled = false; + + if (user_cancel_) + handled = false; + else if (status_ == SCANNER_ERR_OK) + ret = SCANNER_ERR_DEVICE_NO_PAPER; + else + ret = status_; } + else + handled = false; } return ret; @@ -4119,7 +4114,7 @@ int hg_scanner::read_image_data(unsigned char* buf, int* len) return SCANNER_ERR_NO_DATA; } } -int hg_scanner::stop(bool from_user) +int hg_scanner::stop(void) { user_cancel_ = true; diff --git a/hgdriver/hgdev/hg_scanner.h b/hgdriver/hgdev/hg_scanner.h index 060df64..8a8efb7 100644 --- a/hgdriver/hgdev/hg_scanner.h +++ b/hgdriver/hgdev/hg_scanner.h @@ -480,7 +480,7 @@ public: virtual int start(void); virtual int get_image_info(SANE_Parameters* ii, int len); virtual int read_image_data(unsigned char* buf, int* len); - virtual int stop(bool from_user = false); + virtual int stop(void); virtual int reset(void); virtual int device_io_control(unsigned long code, void* data, unsigned* len); virtual int discard_all_images(void) = 0; diff --git a/hgdriver/hgdev/hg_scanner_200.cpp b/hgdriver/hgdev/hg_scanner_200.cpp index 7a6382f..a837056 100644 --- a/hgdriver/hgdev/hg_scanner_200.cpp +++ b/hgdriver/hgdev/hg_scanner_200.cpp @@ -86,7 +86,7 @@ hg_scanner_200::hg_scanner_200(const char* dev_name,int pid, usb_io* io) : hg_sc dsp_config_.value = 0; #ifndef MAPPING_FUNCTION_IN_BASE - init_setting_map(setting_map_, ARRAY_SIZE(setting_map_));//优先初始? + init_setting_map(setting_map_, ARRAY_SIZE(setting_map_));//优先初始化 #endif if (init_settings(0x200)) init_settings((jsontext1 + jsontext2 + jsontext3).c_str()); @@ -318,7 +318,7 @@ int hg_scanner_200::start(void) return ret; } -int hg_scanner_200::stop(bool from_user) +int hg_scanner_200::stop(void) { int ret = SCANNER_ERR_OK; @@ -327,7 +327,7 @@ int hg_scanner_200::stop(bool from_user) std::lock_guard lock(io_lock_); ret = writeusb(usbcb); } - user_cancel_ = from_user; + user_cancel_ = true; if (ret == SCANNER_ERR_DEVICE_BUSY) { LOG_INFO(LOG_LEVEL_DEBUG_INFO,"stop status is busy\r\n"); @@ -464,7 +464,7 @@ int hg_scanner_200::writedown_device_configuration(bool type,setting_hardware::H int ret = SCANNER_ERR_OK, len = 0; - setting_hardware::HGSCANCONF_DSP p = dsp_config_; //不得改变外部的? + setting_hardware::HGSCANCONF_DSP p = dsp_config_; //不得改变外部的值 if (!d) d = &dsp_config_; @@ -661,7 +661,7 @@ int hg_scanner_200::on_is_auto_paper(bool isautopaper) int hg_scanner_200::on_cis_get_image(bool isautopaper) { is_cis_image = isautopaper; - dsp_config_.params_dsp.isCorrect = isautopaper == true ? 0 : 1; //0设置获取cis原图?校正之后的图 + dsp_config_.params_dsp.isCorrect = isautopaper == true ? 0 : 1; //0设置获取cis原图,1校正之后的图 return writedown_device_configuration(); } int hg_scanner_200::on_process_double_paper(bool type) @@ -719,7 +719,7 @@ void hg_scanner_200::writedown_image_configuration(void) ic.hardwarecaps.skrewdetectlevel = dsp_config_.params_dsp.screw_detect_level; // ic.hardwarecaps.is_autopaper = dsp_config_.params_dsp.is_autopaper; ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型 - ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使? + ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用 image_configuration(ic); //agreement(); @@ -747,7 +747,7 @@ std::string hg_scanner_200::get_firmware_version() { char buf[20] = { 0 }; int ret = SCANNER_ERR_OK, - len = 8; //协议定义长度? 300 400 =10 + len = 8; //协议定义长度为8 300 400 =10 USBCB cmd = { setting3288dsp::GET_FW_VERSION, len, 0 }; { @@ -765,7 +765,7 @@ std::string hg_scanner_200::get_serial_num() { char buf[20] = { 0 }; int ret = SCANNER_ERR_OK, - len = 12; //协议定义长度? 300 400 =10 + len = 12; //协议定义长度为8 300 400 =10 USBCB cmd = { setting3288dsp::GET_SERIAL, len, 0 }; { diff --git a/hgdriver/hgdev/hg_scanner_200.h b/hgdriver/hgdev/hg_scanner_200.h index d85f12a..5779b02 100644 --- a/hgdriver/hgdev/hg_scanner_200.h +++ b/hgdriver/hgdev/hg_scanner_200.h @@ -39,9 +39,9 @@ protected: virtual int on_skew_check_level_changed(int& check) override; virtual int on_get_feedmode(int& feedmode) override; //获取分纸强度 virtual int on_set_feedmode(int feedmode) override; //设置分纸强度 - virtual int on_pic_type(bool& pic) override; //照片模式或者文本模? + virtual int on_pic_type(bool& pic) override; //照片模式或者文本模式 virtual int on_pick_paper(bool autostrength)override; //设置搓纸使能 - virtual int on_pick_paper_threshold(double threshold) override; //设置搓纸阈? + virtual int on_pick_paper_threshold(double threshold) override; //设置搓纸阈值 virtual int on_is_auto_paper(bool isautopaper) override; //待纸扫描 virtual int on_cis_get_image(bool isautopaper) override; //获取cis原图 virtual int on_process_double_paper(bool type) override; //双张图像校验 @@ -51,7 +51,7 @@ public: public: virtual int start(void)override; - virtual int stop(bool from_user = false)override; + virtual int stop(void)override; private: int initdevice(); @@ -73,43 +73,43 @@ public: virtual std::string get_serial_num(void)override; virtual std::string get_ip(void)override; - virtual int set_serial_num(string str) override; //设置序列? + virtual int set_serial_num(string str) override; //设置序列号 virtual int set_vid_pid(int data) override; //设置vidpid virtual int get_vid_pid(int& data)override; //获取vidpid /////////////////成功返回:SCANNER_ERR_OK ///////////// - /////////////////失败返回:IO错误? ///////////// + /////////////////失败返回:IO错误码 ///////////// virtual int set_leaflet_scan(void) override; //单张扫描 virtual int set_clear_roller_num(void) override; //清除滚轴计数 virtual int set_clear_history_num(void) override; //清除历史张数 - virtual int get_device_code(void); //获取设备编码 不支? + virtual int get_device_code(void); //获取设备编码 不支持 virtual int get_scanner_paperon(SANE_Bool& type) override; //获取设备有无纸张 /*/ type : 0无纸 1有纸 */ - virtual int get_scan_is_sleep(SANE_Bool& type) override; //获取设备是否休眠当中 /*/ type : 0休眠 1唤醒状?/ - virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠? /*/ data > 0*/ - virtual int set_sleep_time(int data) override; //设置功耗模式(休眠? /*/ data > 0*/ + virtual int get_scan_is_sleep(SANE_Bool& type) override; //获取设备是否休眠当中 /*/ type : 0休眠 1唤醒状态*/ + virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠) /*/ data > 0*/ + virtual int set_sleep_time(int data) override; //设置功耗模式(休眠) /*/ data > 0*/ virtual int get_history_scan_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/ virtual int get_roller_num(int& data) override; //获取滚轮张数 /*/ data > 0*/ virtual int set_notify_sleep(void) override; //唤醒设备 virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/ virtual int set_devreboot(int data) override; //设置设备重启 virtual int set_devshtudown() override; //设置设备关机 - virtual int set_scan_islock(SANE_Bool type) override; //设置设备是否锁定 /*/ type:0解锁?锁定*/ - virtual int get_scan_islock(SANE_Bool& type) override; //获取设备是否锁定 /*/ type:0解锁?锁定*/ - virtual int set_scan_lock_check_val(string str) override; //获取设备是否锁定 /*/ str:校验?/ - virtual int set_firmware_upgrade(std::string str) override; //固件升级 /*/ str:文件名路?/ + virtual int set_scan_islock(SANE_Bool type) override; //设置设备是否锁定 /*/ type:0解锁,1锁定*/ + virtual int get_scan_islock(SANE_Bool& type) override; //获取设备是否锁定 /*/ type:0解锁,1锁定*/ + virtual int set_scan_lock_check_val(string str) override; //获取设备是否锁定 /*/ str:校验码*/ + virtual int set_firmware_upgrade(std::string str) override; //固件升级 /*/ str:文件名路径*/ virtual int set_clean_paper_road() override; //清理纸道 - virtual int get_dev_islock_file(int& data) override; //获取设备文件 /*/ data:0 未上锁,1 上锁?1 未发现黑名单列表 -2列表没有信息*/ + virtual int get_dev_islock_file(int& data) override; //获取设备文件 /*/ data:0 未上锁,1 上锁。-1 未发现黑名单列表 -2列表没有信息*/ virtual int set_dev_islock_file(int data) override; //设置设备文件 /*/ data:0 未上锁,1 上锁*/ - virtual int set_speed_mode(int data) override; //设置速度模式 /*/ 不支? - virtual int get_speed_mode(int &data) override; //设置速度模式 /*/ 不支? + virtual int set_speed_mode(int data) override; //设置速度模式 /*/ 不支持 + virtual int get_speed_mode(int &data) override; //设置速度模式 /*/ 不支持 virtual int set_devs_distortion_check_val(float data) override; //设置畸变矫正 - virtual int get_devs_distortion_check_val(float& data) override; //获取设备畸变? + virtual int get_devs_distortion_check_val(float& data) override; //获取设备畸变值 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) diff --git a/hgdriver/hgdev/hg_scanner_239.cpp b/hgdriver/hgdev/hg_scanner_239.cpp index 388cebf..ff3a977 100644 --- a/hgdriver/hgdev/hg_scanner_239.cpp +++ b/hgdriver/hgdev/hg_scanner_239.cpp @@ -1542,11 +1542,11 @@ int hg_scanner_239::start(void) return ret; } -int hg_scanner_239::stop(bool from_user) +int hg_scanner_239::stop(void) { int ret = SCANNER_ERR_OK; - user_cancel_ = from_user; + user_cancel_ = true; ret = write_command(setting3399::SC_STOP); io_->set_timeout(500); diff --git a/hgdriver/hgdev/hg_scanner_239.h b/hgdriver/hgdev/hg_scanner_239.h index 3e13e4c..2542e63 100644 --- a/hgdriver/hgdev/hg_scanner_239.h +++ b/hgdriver/hgdev/hg_scanner_239.h @@ -84,7 +84,7 @@ public: //virtual int get_image_info(IMG_PARAM* ii) override; //virtual int read_image_data(unsigned char* buf, int* len) override; virtual int start(void) override; - virtual int stop(bool from_user = false) override; + virtual int stop(void) override; virtual int reset(void) override; virtual int device_io_control(unsigned long code, void* data, unsigned* len) override; virtual int get_roller_life(void) override; diff --git a/hgdriver/hgdev/hg_scanner_300.cpp b/hgdriver/hgdev/hg_scanner_300.cpp index 3bbabdb..2e38fd8 100644 --- a/hgdriver/hgdev/hg_scanner_300.cpp +++ b/hgdriver/hgdev/hg_scanner_300.cpp @@ -86,7 +86,7 @@ hg_scanner_300::hg_scanner_300(const char* dev_name,int pid, usb_io* io) : , last_frame_total(0) { dsp_config.value = 0; - dsp_config.params_3288.enableLed = 1; //默认? + dsp_config.params_3288.enableLed = 1; //默认值 dsp_config.params_3288.isCorrect = 1; int ret = get_device_type(firmware_sup_device_7010); @@ -122,7 +122,7 @@ hg_scanner_300::hg_scanner_300(const char* dev_name,int pid, usb_io* io) : #ifndef MAPPING_FUNCTION_IN_BASE - init_setting_map(setting_map_, ARRAY_SIZE(setting_map_));//优先初始? + init_setting_map(setting_map_, ARRAY_SIZE(setting_map_));//优先初始化 #endif if (init_settings(pid_)) { @@ -159,11 +159,11 @@ void hg_scanner_300::thread_handle_usb_read(void) } //printf("usb.u32_Data = %d ret = %d\r\n",usb.u32_Data,ret); - //如果设备出现卡纸 或者双张等设备信息问题,需要等到设备进行发送stop才能停止?所以始终以 "停止" 消息为结束信? - //如果有图的情况下,并且卡纸或双张等,设备会先发送卡纸双张信息。所以接受到错误信息之后,仍需要把图像取出来? + //如果设备出现卡纸 或者双张等设备信息问题,需要等到设备进行发送stop才能停止。 所以始终以 "停止" 消息为结束信号 + //如果有图的情况下,并且卡纸或双张等,设备会先发送卡纸双张信息。所以接受到错误信息之后,仍需要把图像取出来。 if (ret == SCANNER_ERR_DEVICE_STOPPED) { - status_ = !savestatus_.empty() ? savestatus_[0] : SCANNER_ERR_OK;//以第一个消息为? + status_ = !savestatus_.empty() ? savestatus_[0] : SCANNER_ERR_OK;//以第一个消息为准 savestatus_.clear(); if (user_cancel_) { @@ -240,7 +240,7 @@ void hg_scanner_300::thread_handle_usb_read(void) VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "%s\n", hg_scanner_err_description(status_)); break; } - if (sw.elapsed_ms() > 30000 && img_conf_.resolution_dst != 600)//防止状态信息一直取不上来导致卡? + if (sw.elapsed_ms() > 30000 && img_conf_.resolution_dst != 600)//防止状态信息一直取不上来导致卡死 { if ((img_conf_.papertype == TwSS::MaxSize || img_conf_.papertype == TwSS::USStatement) && pid_ == 0x0300 && firmware_sup_dpi_600) { @@ -248,25 +248,25 @@ void hg_scanner_300::thread_handle_usb_read(void) } else { - if (!savestatus_.empty())//以第一个消息为? + if (!savestatus_.empty())//以第一个消息为准 { status_ = savestatus_[0]; } savestatus_.clear(); hg_log::log(LOG_LEVEL_WARNING, "Get Status TimeOut,get image out 30S\n"); - notify_ui_working_status(hg_log::lang_load(ID_STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME), SANE_EVENT_ERROR, status_); // 鍙栧浘閫氫俊瓒呮? + notify_ui_working_status(hg_log::lang_load(ID_STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME), SANE_EVENT_ERROR, status_); // 鍙栧浘閫氫俊瓒呮椂 break; } } if (sw.elapsed_s() > 130) { - if (!savestatus_.empty())//以第一个消息为? + if (!savestatus_.empty())//以第一个消息为准 { status_ = savestatus_[0]; } savestatus_.clear(); hg_log::log(LOG_LEVEL_WARNING, "MaxSize TimeOut,Get Image 130s\n"); - notify_ui_working_status(hg_log::lang_load(ID_STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME), SANE_EVENT_ERROR, status_); // 鍙栧浘閫氫俊瓒呮? + notify_ui_working_status(hg_log::lang_load(ID_STATU_DESC_SCANNER_ERR_DEVICE_GET_IMAGE_OUTTIME), SANE_EVENT_ERROR, status_); // 鍙栧浘閫氫俊瓒呮椂 break; } if (ret == SCANNER_ERR_OK && usb.u32_Count > 0) @@ -283,7 +283,7 @@ void hg_scanner_300::thread_handle_usb_read(void) } continue; } - int totalNum = usb.u32_Count & 0x3fffffff; // 2022-08-04: 兼容Android,默认图片大小均?GB以内 + int totalNum = usb.u32_Count & 0x3fffffff; // 2022-08-04: 兼容Android,默认图片大小均在1GB以内 VLOG_MINI_2(LOG_LEVEL_WARNING, "Get Scaner Image Size:%d bytes,Image Num[%d]\n", totalNum,img_num); img_num++; if (totalNum) @@ -394,7 +394,7 @@ int hg_scanner_300::start(void) { return ret; } - if (is_devs_sleep_)//设备在睡眠的状态当中获取固件是失败的,所以在这个地方进行标志位设置。(总感觉不保险? + if (is_devs_sleep_)//设备在睡眠的状态当中获取固件是失败的,所以在这个地方进行标志位设置。(总感觉不保险) { is_devs_sleep_ = false; set_kernelsnap_ver(); @@ -429,7 +429,7 @@ int hg_scanner_300::start(void) VLOG_MINI_1(LOG_LEVEL_WARNING, "----------Main start scan status : %s----------\n", hg_scanner_err_description(ret)); return ret; } -int hg_scanner_300::stop(bool from_user) +int hg_scanner_300::stop(void) { int ret = SCANNER_ERR_OK; @@ -445,7 +445,7 @@ int hg_scanner_300::stop(bool from_user) LOG_INFO(LOG_LEVEL_DEBUG_INFO,"stop status is busy\r\n"); std::this_thread::sleep_for(std::chrono::milliseconds(2000)); } - user_cancel_ = from_user; + user_cancel_ = true; if (ret == SCANNER_ERR_OK) { status_ = SCANNER_ERR_DEVICE_STOPPED; @@ -877,7 +877,7 @@ int hg_scanner_300::initdevice() if (status_ != SCANNER_ERR_DEVICE_SLEEPING) { set_kernelsnap_ver(); - is_devs_sleep_ = false; // 睡眠唤醒 客户提前点击设置这边固件版本?还没有做判断? + is_devs_sleep_ = false; // 睡眠唤醒 客户提前点击设置这边固件版本号 还没有做判断的 } return SCANNER_ERR_OK; } @@ -909,7 +909,7 @@ void hg_scanner_300::writedown_image_configuration(void) // ic.hardwarecaps.is_autopaper = dsp_config_.params_dsp.is_autopaper; ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型 - ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使? + ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用 image_configuration(ic); } void hg_scanner_300::printf_devconfig(setting_hardware::HGSCANCONF_3288 *d) @@ -990,7 +990,7 @@ int hg_scanner_300::get_correction_image(int inx , int dpi, int mode) cv::Mat white_mat; cv::Mat black_mat;; - for (size_t i = 0; i < 2; i++) //黑白一起保存下? + for (size_t i = 0; i < 2; i++) //黑白一起保存下来 { vector imagedata; @@ -1032,7 +1032,7 @@ int hg_scanner_300::get_correction_image(int inx , int dpi, int mode) if (mat.empty()) { VLOG_MINI_1(LOG_LEVEL_WARNING, "get_correction_image image is NULL:%d\n", image_info.info.params.status); - return SCANNER_ERR_NO_DATA; //只要有一张图没有 直接退? + return SCANNER_ERR_NO_DATA; //只要有一张图没有 直接退了 } float f = 0.0; @@ -1065,7 +1065,7 @@ std::string hg_scanner_300::get_firmware_version() { char buf[20] = { 0 }; int ret = SCANNER_ERR_OK, - len = 10; //协议定义长度?0 100 200 =8 + len = 10; //协议定义长度为10 100 200 =8 USBCB cmd = { setting3288dsp::GET_FW_VERSION,len,0,}; { diff --git a/hgdriver/hgdev/hg_scanner_300.h b/hgdriver/hgdev/hg_scanner_300.h index dbd5646..5b879a9 100644 --- a/hgdriver/hgdev/hg_scanner_300.h +++ b/hgdriver/hgdev/hg_scanner_300.h @@ -31,15 +31,15 @@ protected: protected: virtual int on_color_mode_changed(int& color_mode) override; //颜色切换 virtual int on_paper_changed(int& paper) override; //纸张大小设置 - virtual int on_paper_check_changed(bool& check) override; //尺寸检? - virtual int on_resolution_changed(int& dpi) override; //分辨率设? - virtual int on_ultrasonic_check_changed(bool& check) override; //设置超声波检? - virtual int on_staple_check_changed(bool& check) override; //设置订书针检? - virtual int on_skew_check_changed(bool& check) override; //设置歪斜检? - virtual int on_skew_check_level_changed(int& check) override; //设置歪斜检测强? + virtual int on_paper_check_changed(bool& check) override; //尺寸检测 + virtual int on_resolution_changed(int& dpi) override; //分辨率设置 + virtual int on_ultrasonic_check_changed(bool& check) override; //设置超声波检测 + virtual int on_staple_check_changed(bool& check) override; //设置订书针检测 + virtual int on_skew_check_changed(bool& check) override; //设置歪斜检测 + virtual int on_skew_check_level_changed(int& check) override; //设置歪斜检测强度 virtual int on_get_feedmode(int& feedmode) override; //获取分纸强度 virtual int on_set_feedmode(int feedmode) override; //设置分纸强度 - virtual int on_pic_type(bool& pic)override; //照片模式或者文本模? + virtual int on_pic_type(bool& pic)override; //照片模式或者文本模式 virtual int on_pick_paper(bool autostrength)override; //自动分纸强度 virtual int on_pick_paper_threshold(double threshold)override; virtual int on_is_auto_paper(bool isautopaper)override; //待纸扫描 @@ -51,7 +51,7 @@ public: ~hg_scanner_300(); public: virtual int start(void)override; - virtual int stop(bool from_user = false)override; + virtual int stop(void)override; private: int set_kernelsnap_ver(); int agreement(TwSS tw,int align); @@ -66,10 +66,10 @@ private: void writedown_image_configuration(void); void printf_devconfig(setting_hardware::HGSCANCONF_3288 *d = NULL); int get_device_type(bool &type); - int get_devs_distortion_check_val(float& data, int dpi, int dir);//获取设备畸变?DPI=1???dir = 0,1; + int get_devs_distortion_check_val(float& data, int dpi, int dir);//获取设备畸变值 DPI=1、2、3; dir = 0,1; setting3288dsp::HG_JpegCompressInfo frame_info_; - ///////////////////////7010专有协议,获取校正数?///////////////////// + ///////////////////////7010专有协议,获取校正数据////////////////////// //inx:序号// //dpi:1--->200 2--->300 3--->600// //mode:0 灰度 1彩色 @@ -81,8 +81,8 @@ private: bool is_devs_sleep_; - int first_frame_total; //设置的帧? - int last_frame_total; //实际采集的帧? + int first_frame_total; //设置的帧数 + int last_frame_total; //实际采集的帧数 std::vector jpgdata_; @@ -94,42 +94,42 @@ public: virtual std::string get_serial_num(void)override; virtual std::string get_ip(void)override; - virtual int set_serial_num(string str) override; //设置序列? + virtual int set_serial_num(string str) override; //设置序列号 virtual int set_vid_pid(int data) override; //设置vidpid virtual int get_vid_pid(int& data)override; //获取vidpid /////////////////成功返回:SCANNER_ERR_OK ///////////// - /////////////////失败返回:IO错误? ///////////// + /////////////////失败返回:IO错误码 ///////////// virtual int set_leaflet_scan(void) override; //单张扫描 virtual int set_clear_roller_num(void) override; //清除滚轴计数 - virtual int set_clear_history_num(void) override; //清除历史张数 0303固件版本才支? + virtual int set_clear_history_num(void) override; //清除历史张数 0303固件版本才支持 - virtual int get_device_code(void); //获取设备编码 不支? + virtual int get_device_code(void); //获取设备编码 不支持 virtual int get_scanner_paperon(SANE_Bool& type) override; //获取设备有无纸张 /*/ type : 0无纸 1有纸 */ - virtual int get_scan_is_sleep(SANE_Bool& type) override; //获取设备是否休眠当中 /*/ type : 0休眠 1唤醒状?/ - virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠? /*/ data > 0*/ - virtual int set_sleep_time(int data) override; //设置功耗模式(休眠? /*/ data > 0*/ + virtual int get_scan_is_sleep(SANE_Bool& type) override; //获取设备是否休眠当中 /*/ type : 0休眠 1唤醒状态*/ + virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠) /*/ data > 0*/ + virtual int set_sleep_time(int data) override; //设置功耗模式(休眠) /*/ data > 0*/ virtual int get_history_scan_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/ virtual int get_roller_num(int& data) override; //获取滚轮张数 /*/ data > 0*/ virtual int set_notify_sleep(void) override; //唤醒设备 virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/ virtual int set_devreboot(int data) override; //设置设备重启 virtual int set_devshtudown() override; //设置设备关机 - virtual int set_scan_islock(SANE_Bool type) override; //设置设备是否锁定 /*/ type:0解锁?锁定*/ - virtual int get_scan_islock(SANE_Bool& type) override; //获取设备是否锁定 /*/ type:0解锁?锁定*/ - virtual int set_scan_lock_check_val(string str) override; //获取设备是否锁定 /*/ str:校验?/ - virtual int set_firmware_upgrade(std::string str) override; //固件升级 /*/ str:文件名路?/ + virtual int set_scan_islock(SANE_Bool type) override; //设置设备是否锁定 /*/ type:0解锁,1锁定*/ + virtual int get_scan_islock(SANE_Bool& type) override; //获取设备是否锁定 /*/ type:0解锁,1锁定*/ + virtual int set_scan_lock_check_val(string str) override; //获取设备是否锁定 /*/ str:校验码*/ + virtual int set_firmware_upgrade(std::string str) override; //固件升级 /*/ str:文件名路径*/ virtual int set_clean_paper_road() override; //清理纸道 - virtual int get_dev_islock_file(int& data) override; //获取设备文件 /*/ data:0 未上锁,1 上锁?1 未发现黑名单列表 -2列表没有信息*/ + virtual int get_dev_islock_file(int& data) override; //获取设备文件 /*/ data:0 未上锁,1 上锁。-1 未发现黑名单列表 -2列表没有信息*/ virtual int set_dev_islock_file(int data) override; //设置设备文件 /*/ data:0 未上锁,1 上锁* virtual int set_speed_mode(int data) override; //设置速度模式 /*/ data:40,50,60,70 virtual int get_speed_mode(int& data)override; //获取速度模式 /*/ data:40,50,60,70 virtual int set_devs_distortion_check_val(float data) override; //设置畸变矫正 - virtual int get_devs_distortion_check_val(float& data)override;//获取设备畸变? float to int; + virtual int get_devs_distortion_check_val(float& data)override;//获取设备畸变值 float to int; virtual int set_auto_flat(int data)override; //设置自动平场校正 // 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)override; diff --git a/hgdriver/hgdev/hg_scanner_302.cpp b/hgdriver/hgdev/hg_scanner_302.cpp index 23f992a..fdb1668 100644 --- a/hgdriver/hgdev/hg_scanner_302.cpp +++ b/hgdriver/hgdev/hg_scanner_302.cpp @@ -1129,12 +1129,12 @@ int hg_scanner_302::start(void) return ret; } -int hg_scanner_302::stop(bool from_user) +int hg_scanner_302::stop(void) { std::lock_guard lock(io_lock_); int ret = SCANNER_ERR_OK; - user_cancel_ = from_user; + user_cancel_ = true; ret = write_command(setting3399::SC_STOP); // io_->set_timeout(500); //final_imgs_.clear(); diff --git a/hgdriver/hgdev/hg_scanner_302.h b/hgdriver/hgdev/hg_scanner_302.h index 405e5ed..9cd5af8 100644 --- a/hgdriver/hgdev/hg_scanner_302.h +++ b/hgdriver/hgdev/hg_scanner_302.h @@ -62,15 +62,15 @@ protected: protected: virtual int on_color_mode_changed(int& color_mode) override; //颜色切换 virtual int on_paper_changed(int& paper) override; //纸张大小设置 - virtual int on_paper_check_changed(bool& check) override; //尺寸检? - virtual int on_resolution_changed(int& dpi) override; //分辨率设? - virtual int on_ultrasonic_check_changed(bool& check) override; //设置超声波检? - virtual int on_staple_check_changed(bool& check) override; //设置订书针检? - virtual int on_skew_check_changed(bool& check) override; //设置歪斜检? - virtual int on_skew_check_level_changed(int& check) override; //设置歪斜检测强? + virtual int on_paper_check_changed(bool& check) override; //尺寸检测 + virtual int on_resolution_changed(int& dpi) override; //分辨率设置 + virtual int on_ultrasonic_check_changed(bool& check) override; //设置超声波检测 + virtual int on_staple_check_changed(bool& check) override; //设置订书针检测 + virtual int on_skew_check_changed(bool& check) override; //设置歪斜检测 + virtual int on_skew_check_level_changed(int& check) override; //设置歪斜检测强度 virtual int on_get_feedmode(int& feedmode) override; //获取分纸强度 virtual int on_set_feedmode(int feedmode) override; //设置分纸强度 - virtual int on_pic_type(bool& pic)override; //照片模式或者文本模? + virtual int on_pic_type(bool& pic)override; //照片模式或者文本模式 virtual int on_pick_paper(bool autostrength)override; //自动分纸强度 virtual int on_pick_paper_threshold(double threshold)override; virtual int on_is_auto_paper(bool isautopaper)override; //待纸扫描 @@ -86,7 +86,7 @@ public: virtual int start(void) override; //virtual int get_image_info(IMG_PARAM* ii) override; //virtual int read_image_data(unsigned char* buf, int* len) override; - virtual int stop(bool from_user = false) override; + virtual int stop(void) override; virtual int reset(void) override; virtual int device_io_control(unsigned long code, void* data, unsigned* len) override; @@ -96,41 +96,41 @@ public: virtual std::string get_serial_num(void)override; virtual std::string get_ip(void)override; - virtual int set_serial_num(string str) override; //设置序列? + virtual int set_serial_num(string str) override; //设置序列号 virtual int set_vid_pid(int data) override; //设置vidpid virtual int get_vid_pid(int& data)override; //获取vidpid /////////////////成功返回:SCANNER_ERR_OK ///////////// - /////////////////失败返回:IO错误? ///////////// + /////////////////失败返回:IO错误码 ///////////// virtual int set_leaflet_scan(void) override; //单张扫描 virtual int set_clear_roller_num(void) override; //清除滚轴计数 virtual int set_clear_history_num(void) override; //清除历史张数 - virtual int get_device_code(void); //获取设备编码 不支? + virtual int get_device_code(void); //获取设备编码 不支持 virtual int get_scanner_paperon(SANE_Bool& type) override; //获取设备有无纸张 /*/ type : 0无纸 1有纸 */ - virtual int get_scan_is_sleep(SANE_Bool& type) override; //获取设备是否休眠当中 /*/ type : 0休眠 1唤醒状?/ - virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠? /*/ data > 0*/ - virtual int set_sleep_time(int data) override; //设置功耗模式(休眠? /*/ data > 0*/ + virtual int get_scan_is_sleep(SANE_Bool& type) override; //获取设备是否休眠当中 /*/ type : 0休眠 1唤醒状态*/ + virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠) /*/ data > 0*/ + virtual int set_sleep_time(int data) override; //设置功耗模式(休眠) /*/ data > 0*/ virtual int get_history_scan_count(int& data) override; //获取历史扫描张数 /*/ data > 0*/ virtual int get_roller_num(int& data) override; //获取滚轮张数 /*/ data > 0*/ virtual int set_notify_sleep(void) override; //唤醒设备 virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/ virtual int set_devreboot(int data) override; //设置设备重启 virtual int set_devshtudown() override; //设置设备关机 - virtual int set_scan_islock(SANE_Bool type) override; //设置设备是否锁定 /*/ type:0解锁?锁定*/ - virtual int get_scan_islock(SANE_Bool& type) override; //获取设备是否锁定 /*/ type:0解锁?锁定*/ - virtual int set_scan_lock_check_val(string str) override; //获取设备是否锁定 /*/ str:校验?/ - virtual int set_firmware_upgrade(std::string str) override; //固件升级 /*/ str:文件名路?/ + virtual int set_scan_islock(SANE_Bool type) override; //设置设备是否锁定 /*/ type:0解锁,1锁定*/ + virtual int get_scan_islock(SANE_Bool& type) override; //获取设备是否锁定 /*/ type:0解锁,1锁定*/ + virtual int set_scan_lock_check_val(string str) override; //获取设备是否锁定 /*/ str:校验码*/ + virtual int set_firmware_upgrade(std::string str) override; //固件升级 /*/ str:文件名路径*/ virtual int set_clean_paper_road() override; //清理纸道 - virtual int get_dev_islock_file(int& data) override; //获取设备文件 /*/ data:0 未上锁,1 上锁?1 未发现黑名单列表 -2列表没有信息*/ + virtual int get_dev_islock_file(int& data) override; //获取设备文件 /*/ data:0 未上锁,1 上锁。-1 未发现黑名单列表 -2列表没有信息*/ virtual int set_dev_islock_file(int data) override; //设置设备文件 /*/ data:0 未上锁,1 上锁*/ virtual int set_speed_mode(int data) override; //设置速度模式 /*/ data:40,50,60,70 virtual int get_speed_mode(int& data)override; //获取速度模式 /*/ data:40,50,60,70 virtual int set_devs_distortion_check_val(float data) override; //设置畸变矫正 - virtual int get_devs_distortion_check_val(float& data) override; //获取设备畸变? + virtual int get_devs_distortion_check_val(float& data) override; //获取设备畸变值 virtual int set_auto_flat(int data) override; //设置自动平场校正 // data:0(ALL) 1(200dpi、gray) 2(200dpi、color) 3(300dpi、gray) 4(300dpi、color) 5(600dpi、gray) 6(600dpi、color) diff --git a/hgdriver/hgdev/scanner_manager.cpp b/hgdriver/hgdev/scanner_manager.cpp index 52de89e..445177e 100644 --- a/hgdriver/hgdev/scanner_manager.cpp +++ b/hgdriver/hgdev/scanner_manager.cpp @@ -1056,7 +1056,7 @@ scanner_err hg_scanner_mgr::hg_scanner_start(scanner_handle h, void* async_event } scanner_err hg_scanner_mgr::hg_scanner_stop(scanner_handle h) { - scanner_err err = (scanner_err)SCAN_PTR(h)->stop(true); + scanner_err err = (scanner_err)SCAN_PTR(h)->stop(); // call from APP, block when all working-threads stopped - added on 2023-10-18 when handled double-feeding in SANE while (SCAN_PTR(h)->is_running() != hg_scanner::THREAD_RUNNING_IDLE)