为双张处理功能,调整三方启动逻辑
This commit is contained in:
parent
483703fa95
commit
af593e3376
|
@ -3384,8 +3384,10 @@ int hg_scanner::try_third_app_handle_start(bool& handled)
|
||||||
while (wait_usb_result_.try_wait())
|
while (wait_usb_result_.try_wait())
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(3));
|
std::this_thread::sleep_for(std::chrono::milliseconds(3));
|
||||||
|
|
||||||
|
// 工作线程还未退出,或者图片未取完,则不做实质性的启动操作,继续保持现状
|
||||||
if (!wait_img_.is_waiting() || !wait_usb_.is_waiting() || final_imgs_.size())
|
if (!wait_img_.is_waiting() || !wait_usb_.is_waiting() || final_imgs_.size())
|
||||||
{
|
{
|
||||||
|
// 有图片,直接返回让APP取图片;没有图片则等待线程工作结束
|
||||||
while (final_imgs_.size() == 0)
|
while (final_imgs_.size() == 0)
|
||||||
{
|
{
|
||||||
if (wait_img_.is_waiting() && wait_usb_.is_waiting())
|
if (wait_img_.is_waiting() && wait_usb_.is_waiting())
|
||||||
|
@ -3393,31 +3395,34 @@ int hg_scanner::try_third_app_handle_start(bool& handled)
|
||||||
|
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(3));
|
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)
|
if (final_imgs_.size() == 0)
|
||||||
{
|
{
|
||||||
final_img_index_ = 0;
|
final_img_index_ = 0;
|
||||||
|
|
||||||
if (user_cancel_)
|
//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)
|
||||||
handled = false;
|
handled = false;
|
||||||
else if (status_ == SCANNER_ERR_OK)
|
|
||||||
ret = SCANNER_ERR_DEVICE_NO_PAPER;
|
|
||||||
else
|
else
|
||||||
ret = status_;
|
ret = status_;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (final_img_index_)
|
else
|
||||||
{
|
{
|
||||||
|
// 一轮扫描已经完成,重新开始新一轮扫描
|
||||||
final_img_index_ = 0;
|
final_img_index_ = 0;
|
||||||
|
|
||||||
if (user_cancel_)
|
|
||||||
handled = false;
|
handled = false;
|
||||||
else if (status_ == SCANNER_ERR_OK)
|
|
||||||
ret = SCANNER_ERR_DEVICE_NO_PAPER;
|
|
||||||
else
|
|
||||||
ret = status_;
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
handled = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -4114,7 +4119,7 @@ int hg_scanner::read_image_data(unsigned char* buf, int* len)
|
||||||
return SCANNER_ERR_NO_DATA;
|
return SCANNER_ERR_NO_DATA;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int hg_scanner::stop(void)
|
int hg_scanner::stop(bool from_user)
|
||||||
{
|
{
|
||||||
user_cancel_ = true;
|
user_cancel_ = true;
|
||||||
|
|
||||||
|
|
|
@ -480,7 +480,7 @@ public:
|
||||||
virtual int start(void);
|
virtual int start(void);
|
||||||
virtual int get_image_info(SANE_Parameters* ii, int len);
|
virtual int get_image_info(SANE_Parameters* ii, int len);
|
||||||
virtual int read_image_data(unsigned char* buf, int* len);
|
virtual int read_image_data(unsigned char* buf, int* len);
|
||||||
virtual int stop(void);
|
virtual int stop(bool from_user = false);
|
||||||
virtual int reset(void);
|
virtual int reset(void);
|
||||||
virtual int device_io_control(unsigned long code, void* data, unsigned* len);
|
virtual int device_io_control(unsigned long code, void* data, unsigned* len);
|
||||||
virtual int discard_all_images(void) = 0;
|
virtual int discard_all_images(void) = 0;
|
||||||
|
|
|
@ -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;
|
dsp_config_.value = 0;
|
||||||
#ifndef MAPPING_FUNCTION_IN_BASE
|
#ifndef MAPPING_FUNCTION_IN_BASE
|
||||||
init_setting_map(setting_map_, ARRAY_SIZE(setting_map_));//优先初始化
|
init_setting_map(setting_map_, ARRAY_SIZE(setting_map_));//优先åˆ<EFBFBD>始åŒ?
|
||||||
#endif
|
#endif
|
||||||
if (init_settings(0x200))
|
if (init_settings(0x200))
|
||||||
init_settings((jsontext1 + jsontext2 + jsontext3).c_str());
|
init_settings((jsontext1 + jsontext2 + jsontext3).c_str());
|
||||||
|
@ -318,7 +318,7 @@ int hg_scanner_200::start(void)
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
int hg_scanner_200::stop(void)
|
int hg_scanner_200::stop(bool from_user)
|
||||||
{
|
{
|
||||||
int ret = SCANNER_ERR_OK;
|
int ret = SCANNER_ERR_OK;
|
||||||
|
|
||||||
|
@ -327,7 +327,7 @@ int hg_scanner_200::stop(void)
|
||||||
std::lock_guard<std::mutex> lock(io_lock_);
|
std::lock_guard<std::mutex> lock(io_lock_);
|
||||||
ret = writeusb(usbcb);
|
ret = writeusb(usbcb);
|
||||||
}
|
}
|
||||||
user_cancel_ = true;
|
user_cancel_ = from_user;
|
||||||
if (ret == SCANNER_ERR_DEVICE_BUSY)
|
if (ret == SCANNER_ERR_DEVICE_BUSY)
|
||||||
{
|
{
|
||||||
LOG_INFO(LOG_LEVEL_DEBUG_INFO,"stop status is busy\r\n");
|
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,
|
int ret = SCANNER_ERR_OK,
|
||||||
len = 0;
|
len = 0;
|
||||||
|
|
||||||
setting_hardware::HGSCANCONF_DSP p = dsp_config_; //不得改变外部的值
|
setting_hardware::HGSCANCONF_DSP p = dsp_config_; //ä¸<EFBFBD>得改å<EFBFBD>˜å¤–部的å€?
|
||||||
|
|
||||||
if (!d)
|
if (!d)
|
||||||
d = &dsp_config_;
|
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)
|
int hg_scanner_200::on_cis_get_image(bool isautopaper)
|
||||||
{
|
{
|
||||||
is_cis_image = isautopaper;
|
is_cis_image = isautopaper;
|
||||||
dsp_config_.params_dsp.isCorrect = isautopaper == true ? 0 : 1; //0设置获取cis原图,1校正之后的图
|
dsp_config_.params_dsp.isCorrect = isautopaper == true ? 0 : 1; //0设置获å<EFBFBD>–cis原图ï¼?æ ¡æ£ä¹‹å<E280B9>Žçš„图
|
||||||
return writedown_device_configuration();
|
return writedown_device_configuration();
|
||||||
}
|
}
|
||||||
int hg_scanner_200::on_process_double_paper(bool type)
|
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.skrewdetectlevel = dsp_config_.params_dsp.screw_detect_level;
|
||||||
// ic.hardwarecaps.is_autopaper = dsp_config_.params_dsp.is_autopaper;
|
// ic.hardwarecaps.is_autopaper = dsp_config_.params_dsp.is_autopaper;
|
||||||
ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型
|
ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型
|
||||||
ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用
|
ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //æš‚æ— å<EFBFBD>‚æ•° è®¾ç½®ä¼‘çœ æ—¶é—´ 两个å<C2AA>‚æ•°3399未使ç”?
|
||||||
|
|
||||||
image_configuration(ic);
|
image_configuration(ic);
|
||||||
//agreement();
|
//agreement();
|
||||||
|
@ -747,7 +747,7 @@ std::string hg_scanner_200::get_firmware_version()
|
||||||
{
|
{
|
||||||
char buf[20] = { 0 };
|
char buf[20] = { 0 };
|
||||||
int ret = SCANNER_ERR_OK,
|
int ret = SCANNER_ERR_OK,
|
||||||
len = 8; //协议定义长度为8 300 400 =10
|
len = 8; //å<EFBFBD><EFBFBD>议定义长度ä¸? 300 400 =10
|
||||||
USBCB cmd = { setting3288dsp::GET_FW_VERSION, len, 0 };
|
USBCB cmd = { setting3288dsp::GET_FW_VERSION, len, 0 };
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -765,7 +765,7 @@ std::string hg_scanner_200::get_serial_num()
|
||||||
{
|
{
|
||||||
char buf[20] = { 0 };
|
char buf[20] = { 0 };
|
||||||
int ret = SCANNER_ERR_OK,
|
int ret = SCANNER_ERR_OK,
|
||||||
len = 12; //协议定义长度为8 300 400 =10
|
len = 12; //å<EFBFBD><EFBFBD>议定义长度ä¸? 300 400 =10
|
||||||
USBCB cmd = { setting3288dsp::GET_SERIAL, len, 0 };
|
USBCB cmd = { setting3288dsp::GET_SERIAL, len, 0 };
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,9 +39,9 @@ protected:
|
||||||
virtual int on_skew_check_level_changed(int& check) override;
|
virtual int on_skew_check_level_changed(int& check) override;
|
||||||
virtual int on_get_feedmode(int& feedmode) override; //获取分纸强度
|
virtual int on_get_feedmode(int& feedmode) override; //获取分纸强度
|
||||||
virtual int on_set_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; //照片模å¼<EFBFBD>或者文本模å¼?
|
||||||
virtual int on_pick_paper(bool autostrength)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; //设置æ<EFBFBD>“纸阈å€?
|
||||||
virtual int on_is_auto_paper(bool isautopaper) override; //待纸扫描
|
virtual int on_is_auto_paper(bool isautopaper) override; //待纸扫描
|
||||||
virtual int on_cis_get_image(bool isautopaper) override; //获取cis原图
|
virtual int on_cis_get_image(bool isautopaper) override; //获取cis原图
|
||||||
virtual int on_process_double_paper(bool type) override; //双张图像校验
|
virtual int on_process_double_paper(bool type) override; //双张图像校验
|
||||||
|
@ -51,7 +51,7 @@ public:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual int start(void)override;
|
virtual int start(void)override;
|
||||||
virtual int stop(void)override;
|
virtual int stop(bool from_user = false)override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int initdevice();
|
int initdevice();
|
||||||
|
@ -73,43 +73,43 @@ public:
|
||||||
virtual std::string get_serial_num(void)override;
|
virtual std::string get_serial_num(void)override;
|
||||||
virtual std::string get_ip(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; //设置åº<EFBFBD>列å<EFBFBD>?
|
||||||
virtual int set_vid_pid(int data) override; //设置vidpid
|
virtual int set_vid_pid(int data) override; //设置vidpid
|
||||||
virtual int get_vid_pid(int& data)override; //获取vidpid
|
virtual int get_vid_pid(int& data)override; //获取vidpid
|
||||||
|
|
||||||
/////////////////成功返回:SCANNER_ERR_OK /////////////
|
/////////////////成功返回:SCANNER_ERR_OK /////////////
|
||||||
/////////////////失败返回:IO错误码 /////////////
|
/////////////////失败返回:IO错误ç ? /////////////
|
||||||
virtual int set_leaflet_scan(void) override; //单张扫描
|
virtual int set_leaflet_scan(void) override; //单张扫描
|
||||||
|
|
||||||
|
|
||||||
virtual int set_clear_roller_num(void) override; //清除滚轴计数
|
virtual int set_clear_roller_num(void) override; //清除滚轴计数
|
||||||
virtual int set_clear_history_num(void) override; //清除历史张数
|
virtual int set_clear_history_num(void) override; //清除历史张数
|
||||||
|
|
||||||
virtual int get_device_code(void); //获取设备编码 不支持
|
virtual int get_device_code(void); //获å<EFBFBD>–设备编ç <EFBFBD> ä¸<C3A4>支æŒ?
|
||||||
|
|
||||||
virtual int get_scanner_paperon(SANE_Bool& type) override; //获取设备有无纸张 /*/ type : 0无纸 1有纸 */
|
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_scan_is_sleep(SANE_Bool& type) override; //获å<EFBFBD>–设备是å<EFBFBD>¦ä¼‘çœ å½“ä¸ /*/ type : 0ä¼‘çœ 1唤醒状æ€?/
|
||||||
virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠) /*/ data > 0*/
|
virtual int get_sleep_time(int& data) override; //获å<EFBFBD>–功耗模å¼<EFBFBD>ï¼ˆä¼‘çœ ï¼? /*/ data > 0*/
|
||||||
virtual int set_sleep_time(int data) override; //设置功耗模式(休眠) /*/ data > 0*/
|
virtual int set_sleep_time(int data) override; //设置功耗模å¼<EFBFBD>ï¼ˆä¼‘çœ ï¼? /*/ data > 0*/
|
||||||
virtual int get_history_scan_count(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 get_roller_num(int& data) override; //获取滚轮张数 /*/ data > 0*/
|
||||||
virtual int set_notify_sleep(void) override; //唤醒设备
|
virtual int set_notify_sleep(void) override; //唤醒设备
|
||||||
virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/
|
virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/
|
||||||
virtual int set_devreboot(int data) override; //设置设备重启
|
virtual int set_devreboot(int data) override; //设置设备重启
|
||||||
virtual int set_devshtudown() override; //设置设备关机
|
virtual int set_devshtudown() override; //设置设备关机
|
||||||
virtual int set_scan_islock(SANE_Bool type) override; //设置设备是否锁定 /*/ type:0解锁,1锁定*/
|
virtual int set_scan_islock(SANE_Bool type) override; //设置设备是å<EFBFBD>¦é”<EFBFBD>定 /*/ type:0解é”<C3A9>ï¼?é”<C3A9>定*/
|
||||||
virtual int get_scan_islock(SANE_Bool& type) override; //获取设备是否锁定 /*/ type:0解锁,1锁定*/
|
virtual int get_scan_islock(SANE_Bool& type) override; //获å<EFBFBD>–设备是å<EFBFBD>¦é”<EFBFBD>定 /*/ type:0解é”<C3A9>ï¼?é”<C3A9>定*/
|
||||||
virtual int set_scan_lock_check_val(string str) override; //获取设备是否锁定 /*/ str:校验码*/
|
virtual int set_scan_lock_check_val(string str) override; //获å<EFBFBD>–设备是å<EFBFBD>¦é”<EFBFBD>定 /*/ str:æ ¡éªŒç ?/
|
||||||
virtual int set_firmware_upgrade(std::string str) override; //固件升级 /*/ str:文件名路径*/
|
virtual int set_firmware_upgrade(std::string str) override; //固件å<EFBFBD>‡çº§ /*/ str:文件å<C2B6><C3A5>è·¯å¾?/
|
||||||
virtual int set_clean_paper_road() override; //清理纸道
|
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; //获å<EFBFBD>–设备文件 /*/ data:0 未上é”<C3A9>,1 上é”<C3A9>ã€?1 未å<C2AA>‘现黑å<E28098><C3A5>å<EFBFBD>•åˆ—表 -2列表没有信æ<C2A1>¯*/
|
||||||
virtual int set_dev_islock_file(int data) override; //设置设备文件 /*/ data:0 未上锁,1 上锁*/
|
virtual int set_dev_islock_file(int data) override; //设置设备文件 /*/ data:0 未上锁,1 上锁*/
|
||||||
virtual int set_speed_mode(int data) override; //设置速度模式 /*/ 不支持
|
virtual int set_speed_mode(int data) override; //设置速度模å¼<EFBFBD> /*/ ä¸<C3A4>支æŒ?
|
||||||
virtual int get_speed_mode(int &data) override; //设置速度模式 /*/ 不支持
|
virtual int get_speed_mode(int &data) override; //设置速度模å¼<EFBFBD> /*/ ä¸<C3A4>支æŒ?
|
||||||
|
|
||||||
virtual int set_devs_distortion_check_val(float 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; //获å<EFBFBD>–设备畸å<EFBFBD>˜å€?
|
||||||
|
|
||||||
virtual int set_auto_flat(int data); //设置自动平场校正
|
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)
|
// data:0(ALL) 1(200dpi、gray) 2(200dpi、color) 3(300dpi、gray) 4(300dpi、color) 5(600dpi、gray) 6(600dpi、color)
|
||||||
|
|
|
@ -1542,11 +1542,11 @@ int hg_scanner_239::start(void)
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
int hg_scanner_239::stop(void)
|
int hg_scanner_239::stop(bool from_user)
|
||||||
{
|
{
|
||||||
int ret = SCANNER_ERR_OK;
|
int ret = SCANNER_ERR_OK;
|
||||||
|
|
||||||
user_cancel_ = true;
|
user_cancel_ = from_user;
|
||||||
|
|
||||||
ret = write_command(setting3399::SC_STOP);
|
ret = write_command(setting3399::SC_STOP);
|
||||||
io_->set_timeout(500);
|
io_->set_timeout(500);
|
||||||
|
|
|
@ -84,7 +84,7 @@ public:
|
||||||
//virtual int get_image_info(IMG_PARAM* ii) override;
|
//virtual int get_image_info(IMG_PARAM* ii) override;
|
||||||
//virtual int read_image_data(unsigned char* buf, int* len) override;
|
//virtual int read_image_data(unsigned char* buf, int* len) override;
|
||||||
virtual int start(void) override;
|
virtual int start(void) override;
|
||||||
virtual int stop(void) override;
|
virtual int stop(bool from_user = false) override;
|
||||||
virtual int reset(void) override;
|
virtual int reset(void) override;
|
||||||
virtual int device_io_control(unsigned long code, void* data, unsigned* len) override;
|
virtual int device_io_control(unsigned long code, void* data, unsigned* len) override;
|
||||||
virtual int get_roller_life(void) override;
|
virtual int get_roller_life(void) override;
|
||||||
|
|
|
@ -86,7 +86,7 @@ hg_scanner_300::hg_scanner_300(const char* dev_name,int pid, usb_io* io) :
|
||||||
, last_frame_total(0)
|
, last_frame_total(0)
|
||||||
{
|
{
|
||||||
dsp_config.value = 0;
|
dsp_config.value = 0;
|
||||||
dsp_config.params_3288.enableLed = 1; //默认值
|
dsp_config.params_3288.enableLed = 1; //暺䁅恕<EFBFBD>?
|
||||||
dsp_config.params_3288.isCorrect = 1;
|
dsp_config.params_3288.isCorrect = 1;
|
||||||
|
|
||||||
int ret = get_device_type(firmware_sup_device_7010);
|
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
|
#ifndef MAPPING_FUNCTION_IN_BASE
|
||||||
init_setting_map(setting_map_, ARRAY_SIZE(setting_map_));//优先初始化
|
init_setting_map(setting_map_, ARRAY_SIZE(setting_map_));//隡睃<EFBFBD><EFBFBD>嘥<EFBFBD><EFBFBD>?
|
||||||
#endif
|
#endif
|
||||||
if (init_settings(pid_))
|
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);
|
//printf("usb.u32_Data = %d ret = %d\r\n",usb.u32_Data,ret);
|
||||||
//如果设备出现卡纸 或者双张等设备信息问题,需要等到设备进行发送stop才能停止。 所以始终以 "停止" 消息为结束信号
|
//憒<EFBFBD><EFBFBD>霈曉<EFBFBD><EFBFBD>箇緵<EFBFBD>∠爾 <20>𤥁<EFBFBD><F0A4A581><EFBFBD>撘删<E69298>霈曉<E99C88>靽⊥<E99DBD><E28AA5>桅<EFBFBD>嚗屸<E59A97>閬<EFBFBD><E996AC><EFBFBD>啗挽憭<E68CBD><E686AD>銵<EFBFBD><E98AB5><EFBFBD><EFBFBD>top<6F>滩<EFBFBD><E6BBA9>𨀣迫<F0A880A3>?<3F><>隞亙<E99A9E>蝏<EFBFBD>誑 "<22>𨀣迫" 瘨<><E798A8>銝箇<E98A9D><E7AE87>煺縑<E785BA>?
|
||||||
//如果有图的情况下,并且卡纸或双张等,设备会先发送卡纸双张信息。所以接受到错误信息之后,仍需要把图像取出来。
|
//憒<EFBFBD><EFBFBD><EFBFBD>匧㦛<EFBFBD><EFBFBD><EFBFBD><EFBFBD>萎<EFBFBD>嚗<EFBFBD>僎銝𥪜㨃蝥豢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝑㚁<EFBFBD>霈曉<EFBFBD>隡𡁜<EFBFBD><EFBFBD>煾<EFBFBD><EFBFBD>㨃蝥詨<EFBFBD>撘牐縑<EFBFBD>胯<EFBFBD><EFBFBD><EFBFBD>隞交𦻖<EFBFBD>堒<EFBFBD><EFBFBD>躰秤靽⊥<EFBFBD>銋见<EFBFBD>嚗䔶<EFBFBD><EFBFBD><EFBFBD>閬<EFBFBD><EFBFBD><EFBFBD>曉<EFBFBD><EFBFBD>硋枂<EFBFBD>乓<EFBFBD>?
|
||||||
if (ret == SCANNER_ERR_DEVICE_STOPPED)
|
if (ret == SCANNER_ERR_DEVICE_STOPPED)
|
||||||
{
|
{
|
||||||
status_ = !savestatus_.empty() ? savestatus_[0] : SCANNER_ERR_OK;//以第一个消息为准
|
status_ = !savestatus_.empty() ? savestatus_[0] : SCANNER_ERR_OK;//隞亦洵銝<EFBFBD>銝芣<EFBFBD><EFBFBD>臭蛹<EFBFBD>?
|
||||||
savestatus_.clear();
|
savestatus_.clear();
|
||||||
if (user_cancel_)
|
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_));
|
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "%s\n", hg_scanner_err_description(status_));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (sw.elapsed_ms() > 30000 && img_conf_.resolution_dst != 600)//防止状态信息一直取不上来导致卡死
|
if (sw.elapsed_ms() > 30000 && img_conf_.resolution_dst != 600)//<EFBFBD>脫迫<EFBFBD>嗆<EFBFBD><EFBFBD>縑<EFBFBD>臭<EFBFBD><EFBFBD>游<EFBFBD>銝滢<EFBFBD><EFBFBD>亙紡<EFBFBD>游㨃甇?
|
||||||
{
|
{
|
||||||
if ((img_conf_.papertype == TwSS::MaxSize || img_conf_.papertype == TwSS::USStatement) && pid_ == 0x0300 && firmware_sup_dpi_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
|
else
|
||||||
{
|
{
|
||||||
if (!savestatus_.empty())//以第一个消息为准
|
if (!savestatus_.empty())//隞亦洵銝<EFBFBD>銝芣<EFBFBD><EFBFBD>臭蛹<EFBFBD>?
|
||||||
{
|
{
|
||||||
status_ = savestatus_[0];
|
status_ = savestatus_[0];
|
||||||
}
|
}
|
||||||
savestatus_.clear();
|
savestatus_.clear();
|
||||||
hg_log::log(LOG_LEVEL_WARNING, "Get Status TimeOut,get image out 30S\n");
|
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_); // <EFBFBD>蹱𡵆瘚㗛𢥫瘞思<EFBFBD><EFBFBD>鍦䴴璊?
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (sw.elapsed_s() > 130)
|
if (sw.elapsed_s() > 130)
|
||||||
{
|
{
|
||||||
if (!savestatus_.empty())//以第一个消息为准
|
if (!savestatus_.empty())//隞亦洵銝<EFBFBD>銝芣<EFBFBD><EFBFBD>臭蛹<EFBFBD>?
|
||||||
{
|
{
|
||||||
status_ = savestatus_[0];
|
status_ = savestatus_[0];
|
||||||
}
|
}
|
||||||
savestatus_.clear();
|
savestatus_.clear();
|
||||||
hg_log::log(LOG_LEVEL_WARNING, "MaxSize TimeOut,Get Image 130s\n");
|
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_); // <EFBFBD>蹱𡵆瘚㗛𢥫瘞思<EFBFBD><EFBFBD>鍦䴴璊?
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (ret == SCANNER_ERR_OK && usb.u32_Count > 0)
|
if (ret == SCANNER_ERR_OK && usb.u32_Count > 0)
|
||||||
|
@ -283,7 +283,7 @@ void hg_scanner_300::thread_handle_usb_read(void)
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
int totalNum = usb.u32_Count & 0x3fffffff; // 2022-08-04: 兼容Android,默认图片大小均在1GB以内
|
int totalNum = usb.u32_Count & 0x3fffffff; // 2022-08-04: <EFBFBD>澆捆Android嚗屸<EFBFBD>霈文㦛<EFBFBD><EFBFBD>之撠誩<EFBFBD><EFBFBD>?GB隞亙<E99A9E>
|
||||||
VLOG_MINI_2(LOG_LEVEL_WARNING, "Get Scaner Image Size:%d bytes,Image Num[%d]\n", totalNum,img_num);
|
VLOG_MINI_2(LOG_LEVEL_WARNING, "Get Scaner Image Size:%d bytes,Image Num[%d]\n", totalNum,img_num);
|
||||||
img_num++;
|
img_num++;
|
||||||
if (totalNum)
|
if (totalNum)
|
||||||
|
@ -394,7 +394,7 @@ int hg_scanner_300::start(void)
|
||||||
{
|
{
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
if (is_devs_sleep_)//设备在睡眠的状态当中获取固件是失败的,所以在这个地方进行标志位设置。(总感觉不保险)
|
if (is_devs_sleep_)//霈曉<EFBFBD><EFBFBD>函辺<EFBFBD>删<EFBFBD><EFBFBD>嗆<EFBFBD><EFBFBD><EFBFBD>銝剛繮<EFBFBD>硋𤐄隞嗆糓憭梯揖<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>隞亙銁餈嗘葵<EFBFBD>唳䲮餈𥡝<EFBFBD><EFBFBD><EFBFBD><EFBFBD>雿滩挽蝵柴<EFBFBD><EFBFBD><EFBFBD><EFBFBD>餅<EFBFBD>閫劐<EFBFBD>靽嗪埯嚗?
|
||||||
{
|
{
|
||||||
is_devs_sleep_ = false;
|
is_devs_sleep_ = false;
|
||||||
set_kernelsnap_ver();
|
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));
|
VLOG_MINI_1(LOG_LEVEL_WARNING, "----------Main start scan status : %s----------\n", hg_scanner_err_description(ret));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
int hg_scanner_300::stop(void)
|
int hg_scanner_300::stop(bool from_user)
|
||||||
{
|
{
|
||||||
int ret = SCANNER_ERR_OK;
|
int ret = SCANNER_ERR_OK;
|
||||||
|
|
||||||
|
@ -445,7 +445,7 @@ int hg_scanner_300::stop(void)
|
||||||
LOG_INFO(LOG_LEVEL_DEBUG_INFO,"stop status is busy\r\n");
|
LOG_INFO(LOG_LEVEL_DEBUG_INFO,"stop status is busy\r\n");
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
|
||||||
}
|
}
|
||||||
user_cancel_ = true;
|
user_cancel_ = from_user;
|
||||||
if (ret == SCANNER_ERR_OK)
|
if (ret == SCANNER_ERR_OK)
|
||||||
{
|
{
|
||||||
status_ = SCANNER_ERR_DEVICE_STOPPED;
|
status_ = SCANNER_ERR_DEVICE_STOPPED;
|
||||||
|
@ -877,7 +877,7 @@ int hg_scanner_300::initdevice()
|
||||||
if (status_ != SCANNER_ERR_DEVICE_SLEEPING)
|
if (status_ != SCANNER_ERR_DEVICE_SLEEPING)
|
||||||
{
|
{
|
||||||
set_kernelsnap_ver();
|
set_kernelsnap_ver();
|
||||||
is_devs_sleep_ = false; // 睡眠唤醒 客户提前点击设置这边固件版本号 还没有做判断的
|
is_devs_sleep_ = false; // <EFBFBD>∠<EFBFBD><EFBFBD>日<EFBFBD> 摰X<E691B0><EFBCB8>𣂼<EFBFBD><F0A382BC>孵稬霈曄蔭餈躰器<E8BAB0>箔辣<E7AE94><E8BEA3>𧋦<EFBFBD>?餈䀹瓷<E480B9>匧<EFBFBD><E58CA7>斗鱏<E69697>?
|
||||||
}
|
}
|
||||||
return SCANNER_ERR_OK;
|
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.is_autopaper = dsp_config_.params_dsp.is_autopaper;
|
||||||
ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型
|
ic.hardwarecaps.capturepixtype = 0; //暂无参数 获取图像类型
|
||||||
ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //暂无参数 设置休眠时间 两个参数3399未使用
|
ic.hardwarecaps.lowpowermode = LowPowerMode::Min_None; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㺭 霈曄蔭隡𤑳<E99AA1><F0A491B3>園𡢿 銝支葵<E694AF><E891B5>㺭3399<39>芯蝙<E88AAF>?
|
||||||
image_configuration(ic);
|
image_configuration(ic);
|
||||||
}
|
}
|
||||||
void hg_scanner_300::printf_devconfig(setting_hardware::HGSCANCONF_3288 *d)
|
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 white_mat;
|
||||||
cv::Mat black_mat;;
|
cv::Mat black_mat;;
|
||||||
for (size_t i = 0; i < 2; i++) //黑白一起保存下来
|
for (size_t i = 0; i < 2; i++) //暺𤑳蒾銝<EFBFBD>韏瑚<EFBFBD>摮䀝<EFBFBD><EFBFBD>?
|
||||||
{
|
{
|
||||||
vector<unsigned char> imagedata;
|
vector<unsigned char> imagedata;
|
||||||
|
|
||||||
|
@ -1032,7 +1032,7 @@ int hg_scanner_300::get_correction_image(int inx , int dpi, int mode)
|
||||||
if (mat.empty())
|
if (mat.empty())
|
||||||
{
|
{
|
||||||
VLOG_MINI_1(LOG_LEVEL_WARNING, "get_correction_image image is NULL:%d\n", image_info.info.params.status);
|
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; //<EFBFBD>芾<EFBFBD><EFBFBD>劐<EFBFBD>撘惩㦛瘝⊥<EFBFBD> <20>湔𦻖<E6B994><F0A6BB96>鈭?
|
||||||
}
|
}
|
||||||
float f = 0.0;
|
float f = 0.0;
|
||||||
|
|
||||||
|
@ -1065,7 +1065,7 @@ std::string hg_scanner_300::get_firmware_version()
|
||||||
{
|
{
|
||||||
char buf[20] = { 0 };
|
char buf[20] = { 0 };
|
||||||
int ret = SCANNER_ERR_OK,
|
int ret = SCANNER_ERR_OK,
|
||||||
len = 10; //协议定义长度为10 100 200 =8
|
len = 10; //<EFBFBD>讛悅摰帋<EFBFBD><EFBFBD>踹漲銝?0 100 200 =8
|
||||||
USBCB cmd = { setting3288dsp::GET_FW_VERSION,len,0,};
|
USBCB cmd = { setting3288dsp::GET_FW_VERSION,len,0,};
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -31,15 +31,15 @@ protected:
|
||||||
protected:
|
protected:
|
||||||
virtual int on_color_mode_changed(int& color_mode) override; //颜色切换
|
virtual int on_color_mode_changed(int& color_mode) override; //颜色切换
|
||||||
virtual int on_paper_changed(int& paper) override; //纸张大小设置
|
virtual int on_paper_changed(int& paper) override; //纸张大小设置
|
||||||
virtual int on_paper_check_changed(bool& check) override; //尺寸检测
|
virtual int on_paper_check_changed(bool& check) override; //尺寸检�
|
||||||
virtual int on_resolution_changed(int& dpi) override; //分辨率设置
|
virtual int on_resolution_changed(int& dpi) override; //分辨率设�
|
||||||
virtual int on_ultrasonic_check_changed(bool& check) override; //设置超声波检测
|
virtual int on_ultrasonic_check_changed(bool& check) override; //设置超声波检�
|
||||||
virtual int on_staple_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_changed(bool& check) override; //设置æªæ–œæ£€æµ?
|
||||||
virtual int on_skew_check_level_changed(int& check) override; //设置歪斜检测强度
|
virtual int on_skew_check_level_changed(int& check) override; //设置æªæ–œæ£€æµ‹å¼ºåº?
|
||||||
virtual int on_get_feedmode(int& feedmode) override; //获取分纸强度
|
virtual int on_get_feedmode(int& feedmode) override; //获取分纸强度
|
||||||
virtual int on_set_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; //照片模å¼<EFBFBD>或者文本模å¼?
|
||||||
virtual int on_pick_paper(bool autostrength)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_is_auto_paper(bool isautopaper)override; //待纸扫描
|
||||||
|
@ -51,7 +51,7 @@ public:
|
||||||
~hg_scanner_300();
|
~hg_scanner_300();
|
||||||
public:
|
public:
|
||||||
virtual int start(void)override;
|
virtual int start(void)override;
|
||||||
virtual int stop(void)override;
|
virtual int stop(bool from_user = false)override;
|
||||||
private:
|
private:
|
||||||
int set_kernelsnap_ver();
|
int set_kernelsnap_ver();
|
||||||
int agreement(TwSS tw,int align);
|
int agreement(TwSS tw,int align);
|
||||||
|
@ -66,10 +66,10 @@ private:
|
||||||
void writedown_image_configuration(void);
|
void writedown_image_configuration(void);
|
||||||
void printf_devconfig(setting_hardware::HGSCANCONF_3288 *d = NULL);
|
void printf_devconfig(setting_hardware::HGSCANCONF_3288 *d = NULL);
|
||||||
int get_device_type(bool &type);
|
int get_device_type(bool &type);
|
||||||
int get_devs_distortion_check_val(float& data, int dpi, int dir);//获取设备畸变值 DPI=1、2、3; dir = 0,1;
|
int get_devs_distortion_check_val(float& data, int dpi, int dir);//获å<EFBFBD>–设备畸å<EFBFBD>˜å€?DPI=1ã€?ã€?ï¼?dir = 0,1;
|
||||||
|
|
||||||
setting3288dsp::HG_JpegCompressInfo frame_info_;
|
setting3288dsp::HG_JpegCompressInfo frame_info_;
|
||||||
///////////////////////7010专有协议,获取校正数据//////////////////////
|
///////////////////////7010专有å<EFBFBD><EFBFBD>议,获å<EFBFBD>–æ ¡æ£æ•°æ<EFBFBD>?/////////////////////
|
||||||
//inx:序号//
|
//inx:序号//
|
||||||
//dpi:1--->200 2--->300 3--->600//
|
//dpi:1--->200 2--->300 3--->600//
|
||||||
//mode:0 灰度 1彩色
|
//mode:0 灰度 1彩色
|
||||||
|
@ -81,8 +81,8 @@ private:
|
||||||
bool is_devs_sleep_;
|
bool is_devs_sleep_;
|
||||||
|
|
||||||
|
|
||||||
int first_frame_total; //设置的帧数
|
int first_frame_total; //设置的帧�
|
||||||
int last_frame_total; //实际采集的帧数
|
int last_frame_total; //实际采集的帧�
|
||||||
|
|
||||||
|
|
||||||
std::vector<unsigned char> jpgdata_;
|
std::vector<unsigned char> jpgdata_;
|
||||||
|
@ -94,42 +94,42 @@ public:
|
||||||
virtual std::string get_serial_num(void)override;
|
virtual std::string get_serial_num(void)override;
|
||||||
virtual std::string get_ip(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; //设置åº<EFBFBD>列å<EFBFBD>?
|
||||||
virtual int set_vid_pid(int data) override; //设置vidpid
|
virtual int set_vid_pid(int data) override; //设置vidpid
|
||||||
virtual int get_vid_pid(int& data)override; //获取vidpid
|
virtual int get_vid_pid(int& data)override; //获取vidpid
|
||||||
|
|
||||||
/////////////////成功返回:SCANNER_ERR_OK /////////////
|
/////////////////成功返回:SCANNER_ERR_OK /////////////
|
||||||
/////////////////失败返回:IO错误码 /////////////
|
/////////////////失败返回:IO错误ç ? /////////////
|
||||||
virtual int set_leaflet_scan(void) override; //单张扫描
|
virtual int set_leaflet_scan(void) override; //单张扫描
|
||||||
|
|
||||||
|
|
||||||
virtual int set_clear_roller_num(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; //清除历å<EFBFBD>²å¼ æ•° 0303固件版本æ‰<C3A6>支æŒ?
|
||||||
|
|
||||||
virtual int get_device_code(void); //获取设备编码 不支持
|
virtual int get_device_code(void); //获å<EFBFBD>–设备编ç <EFBFBD> ä¸<C3A4>支æŒ?
|
||||||
|
|
||||||
virtual int get_scanner_paperon(SANE_Bool& type) override; //获取设备有无纸张 /*/ type : 0无纸 1有纸 */
|
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_scan_is_sleep(SANE_Bool& type) override; //获å<EFBFBD>–设备是å<EFBFBD>¦ä¼‘çœ å½“ä¸ /*/ type : 0ä¼‘çœ 1唤醒状æ€?/
|
||||||
virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠) /*/ data > 0*/
|
virtual int get_sleep_time(int& data) override; //获å<EFBFBD>–功耗模å¼<EFBFBD>ï¼ˆä¼‘çœ ï¼? /*/ data > 0*/
|
||||||
virtual int set_sleep_time(int data) override; //设置功耗模式(休眠) /*/ data > 0*/
|
virtual int set_sleep_time(int data) override; //设置功耗模å¼<EFBFBD>ï¼ˆä¼‘çœ ï¼? /*/ data > 0*/
|
||||||
virtual int get_history_scan_count(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 get_roller_num(int& data) override; //获取滚轮张数 /*/ data > 0*/
|
||||||
virtual int set_notify_sleep(void) override; //唤醒设备
|
virtual int set_notify_sleep(void) override; //唤醒设备
|
||||||
virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/
|
virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/
|
||||||
virtual int set_devreboot(int data) override; //设置设备重启
|
virtual int set_devreboot(int data) override; //设置设备重启
|
||||||
virtual int set_devshtudown() override; //设置设备关机
|
virtual int set_devshtudown() override; //设置设备关机
|
||||||
virtual int set_scan_islock(SANE_Bool type) override; //设置设备是否锁定 /*/ type:0解锁,1锁定*/
|
virtual int set_scan_islock(SANE_Bool type) override; //设置设备是å<EFBFBD>¦é”<EFBFBD>定 /*/ type:0解é”<C3A9>ï¼?é”<C3A9>定*/
|
||||||
virtual int get_scan_islock(SANE_Bool& type) override; //获取设备是否锁定 /*/ type:0解锁,1锁定*/
|
virtual int get_scan_islock(SANE_Bool& type) override; //获å<EFBFBD>–设备是å<EFBFBD>¦é”<EFBFBD>定 /*/ type:0解é”<C3A9>ï¼?é”<C3A9>定*/
|
||||||
virtual int set_scan_lock_check_val(string str) override; //获取设备是否锁定 /*/ str:校验码*/
|
virtual int set_scan_lock_check_val(string str) override; //获å<EFBFBD>–设备是å<EFBFBD>¦é”<EFBFBD>定 /*/ str:æ ¡éªŒç ?/
|
||||||
virtual int set_firmware_upgrade(std::string str) override; //固件升级 /*/ str:文件名路径*/
|
virtual int set_firmware_upgrade(std::string str) override; //固件å<EFBFBD>‡çº§ /*/ str:文件å<C2B6><C3A5>è·¯å¾?/
|
||||||
virtual int set_clean_paper_road() override; //清理纸道
|
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; //获å<EFBFBD>–设备文件 /*/ data:0 未上é”<C3A9>,1 上é”<C3A9>ã€?1 未å<C2AA>‘现黑å<E28098><C3A5>å<EFBFBD>•åˆ—表 -2列表没有信æ<C2A1>¯*/
|
||||||
virtual int set_dev_islock_file(int data) override; //设置设备文件 /*/ data:0 未上锁,1 上锁*
|
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 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 get_speed_mode(int& data)override; //获取速度模式 /*/ data:40,50,60,70
|
||||||
virtual int set_devs_distortion_check_val(float data) override; //设置畸变矫正
|
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;//获å<EFBFBD>–设备畸å<EFBFBD>˜å€? float to int;
|
||||||
virtual int set_auto_flat(int 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)
|
// 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;
|
virtual int set_updata0303(void)override;
|
||||||
|
|
|
@ -1129,12 +1129,12 @@ int hg_scanner_302::start(void)
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
int hg_scanner_302::stop(void)
|
int hg_scanner_302::stop(bool from_user)
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lock(io_lock_);
|
std::lock_guard<std::mutex> lock(io_lock_);
|
||||||
int ret = SCANNER_ERR_OK;
|
int ret = SCANNER_ERR_OK;
|
||||||
|
|
||||||
user_cancel_ = true;
|
user_cancel_ = from_user;
|
||||||
ret = write_command(setting3399::SC_STOP);
|
ret = write_command(setting3399::SC_STOP);
|
||||||
// io_->set_timeout(500);
|
// io_->set_timeout(500);
|
||||||
//final_imgs_.clear();
|
//final_imgs_.clear();
|
||||||
|
|
|
@ -62,15 +62,15 @@ protected:
|
||||||
protected:
|
protected:
|
||||||
virtual int on_color_mode_changed(int& color_mode) override; //颜色切换
|
virtual int on_color_mode_changed(int& color_mode) override; //颜色切换
|
||||||
virtual int on_paper_changed(int& paper) override; //纸张大小设置
|
virtual int on_paper_changed(int& paper) override; //纸张大小设置
|
||||||
virtual int on_paper_check_changed(bool& check) override; //尺寸检测
|
virtual int on_paper_check_changed(bool& check) override; //尺寸检�
|
||||||
virtual int on_resolution_changed(int& dpi) override; //分辨率设置
|
virtual int on_resolution_changed(int& dpi) override; //分辨率设�
|
||||||
virtual int on_ultrasonic_check_changed(bool& check) override; //设置超声波检测
|
virtual int on_ultrasonic_check_changed(bool& check) override; //设置超声波检�
|
||||||
virtual int on_staple_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_changed(bool& check) override; //设置æªæ–œæ£€æµ?
|
||||||
virtual int on_skew_check_level_changed(int& check) override; //设置歪斜检测强度
|
virtual int on_skew_check_level_changed(int& check) override; //设置æªæ–œæ£€æµ‹å¼ºåº?
|
||||||
virtual int on_get_feedmode(int& feedmode) override; //获取分纸强度
|
virtual int on_get_feedmode(int& feedmode) override; //获取分纸强度
|
||||||
virtual int on_set_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; //照片模å¼<EFBFBD>或者文本模å¼?
|
||||||
virtual int on_pick_paper(bool autostrength)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_is_auto_paper(bool isautopaper)override; //待纸扫描
|
||||||
|
@ -86,7 +86,7 @@ public:
|
||||||
virtual int start(void) override;
|
virtual int start(void) override;
|
||||||
//virtual int get_image_info(IMG_PARAM* ii) override;
|
//virtual int get_image_info(IMG_PARAM* ii) override;
|
||||||
//virtual int read_image_data(unsigned char* buf, int* len) override;
|
//virtual int read_image_data(unsigned char* buf, int* len) override;
|
||||||
virtual int stop(void) override;
|
virtual int stop(bool from_user = false) override;
|
||||||
virtual int reset(void) override;
|
virtual int reset(void) override;
|
||||||
virtual int device_io_control(unsigned long code, void* data, unsigned* len) 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_serial_num(void)override;
|
||||||
virtual std::string get_ip(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; //设置åº<EFBFBD>列å<EFBFBD>?
|
||||||
virtual int set_vid_pid(int data) override; //设置vidpid
|
virtual int set_vid_pid(int data) override; //设置vidpid
|
||||||
virtual int get_vid_pid(int& data)override; //获取vidpid
|
virtual int get_vid_pid(int& data)override; //获取vidpid
|
||||||
|
|
||||||
/////////////////成功返回:SCANNER_ERR_OK /////////////
|
/////////////////成功返回:SCANNER_ERR_OK /////////////
|
||||||
/////////////////失败返回:IO错误码 /////////////
|
/////////////////失败返回:IO错误ç ? /////////////
|
||||||
virtual int set_leaflet_scan(void) override; //单张扫描
|
virtual int set_leaflet_scan(void) override; //单张扫描
|
||||||
|
|
||||||
virtual int set_clear_roller_num(void) override; //清除滚轴计数
|
virtual int set_clear_roller_num(void) override; //清除滚轴计数
|
||||||
virtual int set_clear_history_num(void) override; //清除历史张数
|
virtual int set_clear_history_num(void) override; //清除历史张数
|
||||||
|
|
||||||
virtual int get_device_code(void); //获取设备编码 不支持
|
virtual int get_device_code(void); //获å<EFBFBD>–设备编ç <EFBFBD> ä¸<C3A4>支æŒ?
|
||||||
|
|
||||||
virtual int get_scanner_paperon(SANE_Bool& type) override; //获取设备有无纸张 /*/ type : 0无纸 1有纸 */
|
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_scan_is_sleep(SANE_Bool& type) override; //获å<EFBFBD>–设备是å<EFBFBD>¦ä¼‘çœ å½“ä¸ /*/ type : 0ä¼‘çœ 1唤醒状æ€?/
|
||||||
virtual int get_sleep_time(int& data) override; //获取功耗模式(休眠) /*/ data > 0*/
|
virtual int get_sleep_time(int& data) override; //获å<EFBFBD>–功耗模å¼<EFBFBD>ï¼ˆä¼‘çœ ï¼? /*/ data > 0*/
|
||||||
virtual int set_sleep_time(int data) override; //设置功耗模式(休眠) /*/ data > 0*/
|
virtual int set_sleep_time(int data) override; //设置功耗模å¼<EFBFBD>ï¼ˆä¼‘çœ ï¼? /*/ data > 0*/
|
||||||
virtual int get_history_scan_count(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 get_roller_num(int& data) override; //获取滚轮张数 /*/ data > 0*/
|
||||||
virtual int set_notify_sleep(void) override; //唤醒设备
|
virtual int set_notify_sleep(void) override; //唤醒设备
|
||||||
virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/
|
virtual int get_device_log(string& log) override; //获取设备日志 /*/ log :储存路径*/
|
||||||
virtual int set_devreboot(int data) override; //设置设备重启
|
virtual int set_devreboot(int data) override; //设置设备重启
|
||||||
virtual int set_devshtudown() override; //设置设备关机
|
virtual int set_devshtudown() override; //设置设备关机
|
||||||
virtual int set_scan_islock(SANE_Bool type) override; //设置设备是否锁定 /*/ type:0解锁,1锁定*/
|
virtual int set_scan_islock(SANE_Bool type) override; //设置设备是å<EFBFBD>¦é”<EFBFBD>定 /*/ type:0解é”<C3A9>ï¼?é”<C3A9>定*/
|
||||||
virtual int get_scan_islock(SANE_Bool& type) override; //获取设备是否锁定 /*/ type:0解锁,1锁定*/
|
virtual int get_scan_islock(SANE_Bool& type) override; //获å<EFBFBD>–设备是å<EFBFBD>¦é”<EFBFBD>定 /*/ type:0解é”<C3A9>ï¼?é”<C3A9>定*/
|
||||||
virtual int set_scan_lock_check_val(string str) override; //获取设备是否锁定 /*/ str:校验码*/
|
virtual int set_scan_lock_check_val(string str) override; //获å<EFBFBD>–设备是å<EFBFBD>¦é”<EFBFBD>定 /*/ str:æ ¡éªŒç ?/
|
||||||
virtual int set_firmware_upgrade(std::string str) override; //固件升级 /*/ str:文件名路径*/
|
virtual int set_firmware_upgrade(std::string str) override; //固件å<EFBFBD>‡çº§ /*/ str:文件å<C2B6><C3A5>è·¯å¾?/
|
||||||
virtual int set_clean_paper_road() override; //清理纸道
|
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; //获å<EFBFBD>–设备文件 /*/ data:0 未上é”<C3A9>,1 上é”<C3A9>ã€?1 未å<C2AA>‘现黑å<E28098><C3A5>å<EFBFBD>•åˆ—表 -2列表没有信æ<C2A1>¯*/
|
||||||
virtual int set_dev_islock_file(int data) override; //设置设备文件 /*/ data:0 未上锁,1 上锁*/
|
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 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 get_speed_mode(int& data)override; //获取速度模式 /*/ data:40,50,60,70
|
||||||
virtual int set_devs_distortion_check_val(float 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; //获å<EFBFBD>–设备畸å<EFBFBD>˜å€?
|
||||||
virtual int set_auto_flat(int 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)
|
// data:0(ALL) 1(200dpi、gray) 2(200dpi、color) 3(300dpi、gray) 4(300dpi、color) 5(600dpi、gray) 6(600dpi、color)
|
||||||
|
|
||||||
|
|
|
@ -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 hg_scanner_mgr::hg_scanner_stop(scanner_handle h)
|
||||||
{
|
{
|
||||||
scanner_err err = (scanner_err)SCAN_PTR(h)->stop();
|
scanner_err err = (scanner_err)SCAN_PTR(h)->stop(true);
|
||||||
|
|
||||||
// call from APP, block when all working-threads stopped - added on 2023-10-18 when handled double-feeding in SANE
|
// 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)
|
while (SCAN_PTR(h)->is_running() != hg_scanner::THREAD_RUNNING_IDLE)
|
||||||
|
|
Loading…
Reference in New Issue