From f1e43a197f7fa1867843deb4e9656529c75dd80f Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Thu, 18 Aug 2022 14:50:43 +0800 Subject: [PATCH] =?UTF-8?q?fix=20BUG-264:=E8=B6=85=E6=97=B6=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E4=B8=8D=E5=86=8D=E6=94=B9=E4=B8=BA=E6=AD=A3=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgdriver/hgdev/hg_scanner_239.cpp | 6 +----- hgdriver/hgdev/hg_scanner_439.cpp | 6 +----- hgdriver/hgdev/scanner_manager.cpp | 14 ++++++++++++-- hgdriver/hgdev/scanner_manager.h | 21 +++++++++++---------- hgdriver/hgdev/usb_manager.cpp | 5 +++-- 5 files changed, 28 insertions(+), 24 deletions(-) diff --git a/hgdriver/hgdev/hg_scanner_239.cpp b/hgdriver/hgdev/hg_scanner_239.cpp index 29100e9..a35284c 100644 --- a/hgdriver/hgdev/hg_scanner_239.cpp +++ b/hgdriver/hgdev/hg_scanner_239.cpp @@ -1155,11 +1155,7 @@ int hg_scanner_239::read_one_image_from_usb(SANE_Image_Statu statu) } else { - char msg[128]; - sprintf(msg, "Read image data from USB err: %s\n", hg_scanner_err_name(ret)); - LOG_INFO(LOG_LEVEL_DEBUG_INFO, msg); - notify_ui_working_status(msg); - notify_ui_working_status(STATU_DESC_SCANNER_ERR_TIMEOUT, SANE_EVENT_ERROR); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "Read image data from USB err: %s\n", hg_scanner_err_name(ret)); } } } diff --git a/hgdriver/hgdev/hg_scanner_439.cpp b/hgdriver/hgdev/hg_scanner_439.cpp index bd40647..91fabfb 100644 --- a/hgdriver/hgdev/hg_scanner_439.cpp +++ b/hgdriver/hgdev/hg_scanner_439.cpp @@ -1125,11 +1125,7 @@ int hg_scanner_439::read_one_image_from_usb(void) } else { - char msg[128]; - sprintf(msg, "Read image data from USB err: %s\n", hg_scanner_err_name(ret)); - LOG_INFO(LOG_LEVEL_DEBUG_INFO, msg); - notify_ui_working_status(msg); - notify_ui_working_status(STATU_DESC_SCANNER_ERR_TIMEOUT, SANE_EVENT_ERROR); + VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "Read image data from USB err: %s\n", hg_scanner_err_name(ret)); } } } diff --git a/hgdriver/hgdev/scanner_manager.cpp b/hgdriver/hgdev/scanner_manager.cpp index 25be681..5ebf2e7 100644 --- a/hgdriver/hgdev/scanner_manager.cpp +++ b/hgdriver/hgdev/scanner_manager.cpp @@ -12,6 +12,7 @@ #include "hg_scanner_239.h" #include "hg_scanner_300.h" #include "hg_scanner_400.h" +#include "hg_scanner_302.h" #include "hg_scanner_402.h" /// @@ -41,7 +42,7 @@ g_supporting_devices[] = { {0x2903, 0x7000, SCANNER_NAME_HW_7000, "HW-74x0WA", "", &hg_scanner_mgr::create_scanner_g400} , {0x2903, 0x7002, SCANNER_NAME_HW_7002, "HW-7002", "", &hg_scanner_mgr::create_scanner_g402} , {0x2903, 0x1000, SCANNER_NAME_HW_1060A, "HW-1060A", "", &hg_scanner_mgr::create_scanner_g300} - , {0x2903, 0x1002, SCANNER_NAME_HW_1060A, "HW-1060A", "", &hg_scanner_mgr::create_scanner_g402} + , {0x2903, 0x1002, SCANNER_NAME_HW_1060A, "HW-1060A", "", &hg_scanner_mgr::create_scanner_g302} , {0x2903, 0x8000, SCANNER_NAME_HW_8090F, "HW-8090F", "", &hg_scanner_mgr::create_scanner_g239} , {0x2903, 0x9000, SCANNER_NAME_HW_9110F, "HW-9110F", "", &hg_scanner_mgr::create_scanner_g239} , {0x2903, 0x7039, SCANNER_NAME_HW_7039F, "HW-7039F", "", &hg_scanner_mgr::create_scanner_g239} @@ -55,7 +56,7 @@ g_supporting_devices[] = { , {0x3072, 0x339, SCANNER_NAME_HG_G339, "GScanO1003399", "", &hg_scanner_mgr::create_scanner_empty} , {0x3072, 0x439, SCANNER_NAME_HG_G439, "GScanO1003399", "", &hg_scanner_mgr::create_scanner_g239} , {0x064B, 0x7823, SCANNER_NAME_HG_G200, "GScanO200", "", &hg_scanner_mgr::create_scanner_empty} - , {0x3072, 0x302, SCANNER_NAME_HG_G300, "GScanO400", "", &hg_scanner_mgr::create_scanner_g402} + , {0x3072, 0x302, SCANNER_NAME_HG_G300, "GScanO400", "", &hg_scanner_mgr::create_scanner_g302} , {0x3072, 0x402, SCANNER_NAME_HG_G402, "GScanO4003399", "", &hg_scanner_mgr::create_scanner_g402} #endif }; @@ -168,6 +169,15 @@ hg_scanner* hg_scanner_mgr::create_scanner_g300(const char* name, usb_io* io, sc return dynamic_cast(s); } +hg_scanner* hg_scanner_mgr::create_scanner_g302(const char* name, usb_io* io, scanner_handle* h) +{ + hg_scanner_302* s = new hg_scanner_302(name, 0x402, io); // image_process needs PID 402, we should add 302 ... + + if (h) + *h = s; + + return dynamic_cast(s); +} hg_scanner* hg_scanner_mgr::create_scanner_g400(const char* name, usb_io* io, scanner_handle* h) { hg_scanner_400* s = new hg_scanner_400(name, 0x400, io); diff --git a/hgdriver/hgdev/scanner_manager.h b/hgdriver/hgdev/scanner_manager.h index d8bde7b..3233cae 100644 --- a/hgdriver/hgdev/scanner_manager.h +++ b/hgdriver/hgdev/scanner_manager.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include "../../sdk/hginclude/huagaoxxx_warraper_ex.h" #include "usb_manager.h" @@ -8,21 +8,21 @@ #include //////////////////////////////////////////////////////////////////////////////////////// -// 设备需要支持的特性 (2022-02-24) +// 豸Ҫֵ֧ (2022-02-24) // -// 1、每台设备应该有唯一的序列号,并可读取,用以精确定位连接到计算机上的每一台设备, -// 方便多台设备连接到计算机上时,插拔后实现机器状态(配置参数)的自动恢复 +// 1ÿ̨豸ӦΨһкţɶȡԾȷλӵϵÿһ̨豸 +// ̨豸ӵʱκʵֻ״̬òԶָ // -// 2、设备启动后,应该由设备上的驱动进行默认参数的设置,以支持按键扫描功能(由设备主动发起的扫描) +// 2豸Ӧ豸ϵĬϲãְ֧ɨ蹦ܣ豸ɨ裩 // -// 3、设备的所有配置参数都应该可读,以满足用户对设备实时状态的监控 +// 3豸òӦÿɶû豸ʵʱ״̬ļ // -// 4、设备要支持“reset”命令,以使设备在发生软硬件错误时,尽可能通过软件方式重置到正常状态 +// 4豸Ҫ֧֡resetʹ豸ڷӲʱͨʽõ״̬ // -// 5、可以考虑在每一段数据的前面添加数据头信息,以表明这段数据的属性(状态数据、图片数据……), -// 为支持异步IO特性奠定基础 +// 5ԿÿһݵǰͷϢԱݵԣ״̬ݡͼƬݡ +// Ϊ֧첽IOԵ춨 // -// 6、设备的基本通信(设备类型……信息访问)需要保持健壮,不能因为上位机的通信异常导致信息错乱 +// 6豸Ļͨţ豸͡ϢʣҪֽ׳Ϊλͨ쳣Ϣ // //////////////////////////////////////////////////////////////////////////////////////// @@ -92,6 +92,7 @@ public: static hg_scanner* create_scanner_g100(const char* name, usb_io* io, scanner_handle* h); static hg_scanner* create_scanner_g239(const char* name, usb_io* io, scanner_handle* h); static hg_scanner* create_scanner_g300(const char* name, usb_io* io, scanner_handle* h); + static hg_scanner* create_scanner_g302(const char* name, usb_io* io, scanner_handle* h); static hg_scanner* create_scanner_g400(const char* name, usb_io* io, scanner_handle* h); static hg_scanner* create_scanner_g402(const char* name, usb_io* io, scanner_handle* h); diff --git a/hgdriver/hgdev/usb_manager.cpp b/hgdriver/hgdev/usb_manager.cpp index 9417e05..271b4c8 100644 --- a/hgdriver/hgdev/usb_manager.cpp +++ b/hgdriver/hgdev/usb_manager.cpp @@ -896,8 +896,9 @@ int usb_io::read_bulk(void* buf, int* len) if (err == LIBUSB_ERROR_TIMEOUT && *len == total) { int old = to_; - to_ *= 1.5f; - err = LIBUSB_SUCCESS; + if(to_ < 10 * 1000) + to_ *= 1.5f; + //err = LIBUSB_SUCCESS; VLOG_MINI_2(LOG_LEVEL_DEBUG_INFO, " Read full length, we consider it as success, and increament timeout from %d to %d\n", old, to_); } }