From 40b748502032368d6e2c290ac7e29f09b3333065 Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Thu, 4 Aug 2022 11:36:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DG300=E6=94=B6=E5=9B=BEBUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgdriver/hgdev/hg_scanner_300.cpp | 59 ++++++++++++++++--------------- hgdriver/hgdev/hg_scanner_400.cpp | 43 +++++++++++----------- hgdriver/hgdev/hg_scanner_439.h | 4 +-- 3 files changed, 56 insertions(+), 50 deletions(-) diff --git a/hgdriver/hgdev/hg_scanner_300.cpp b/hgdriver/hgdev/hg_scanner_300.cpp index a6b8ef8..922fe7b 100644 --- a/hgdriver/hgdev/hg_scanner_300.cpp +++ b/hgdriver/hgdev/hg_scanner_300.cpp @@ -267,34 +267,37 @@ void hg_scanner_300::thread_handle_usb_read(void) if (ret == SCANNER_ERR_OK && usb.u32_Count > 0) { - int totalNum = usb.u32_Count; - std::shared_ptr imagedata(aquire_memory(totalNum)); - - if (!imagedata.get()) + int totalNum = usb.u32_Count & 0x3fffffff; // 2022-08-04: 兼容Android,默认图片大小均在1GB以内 + if (totalNum) { - status_ = SCANNER_ERR_INSUFFICIENT_MEMORY; - break; - } + std::shared_ptr imagedata(aquire_memory(totalNum)); - imagedata->set_image_statu(statu); - ret = get_img_data(imagedata); - io_->set_timeout(200); + if (!imagedata.get()) + { + status_ = SCANNER_ERR_INSUFFICIENT_MEMORY; + break; + } - if (ret == SCANNER_ERR_OK) - { - ret = pop_image(); - sw.reset(); - if (ret != SCANNER_ERR_OK) + imagedata->set_image_statu(statu); + ret = get_img_data(imagedata); + //io_->set_timeout(200); + + if (ret == SCANNER_ERR_OK) + { + ret = pop_image(); + sw.reset(); + if (ret != SCANNER_ERR_OK) + { + status_ = ret; + break; + } + } + else { status_ = ret; break; } } - else - { - status_ = ret; - break; - } } this_thread::sleep_for(chrono::milliseconds(10)); } @@ -341,7 +344,7 @@ void hg_scanner_300::thread_handle_usb_read(void) USBCB usb = {START_COMMAND, img_conf_.scannum, 0}; ret = writeusb(usb); - io_->set_timeout(500); + //io_->set_timeout(500); if(ret == SCANNER_ERR_OK) { //status_ = SCANNER_ERR_DEVICE_BUSY; @@ -426,7 +429,7 @@ int hg_scanner_300::get_scanner_status(USBCB &usb) if (ret != SCANNER_ERR_OK) return ret; - io_->set_timeout(200); //必要延时,且不能小于这个数值 + //io_->set_timeout(200); //必要延时,且不能小于这个数值 ret = readusb(usb); @@ -452,7 +455,7 @@ int hg_scanner_300::get_img_data(std::shared_ptr &imagedata) status_ = ret; return ret; } - io_->set_timeout(500); + //io_->set_timeout(500); printf_devconfig(); @@ -837,7 +840,7 @@ int hg_scanner_300::agreement(TwSS tw,int align) d.params.isColor = 1; } ret = writedown_device_configuration(true,&d); - io_->set_timeout(200); + //io_->set_timeout(200); return ret; } @@ -1068,7 +1071,7 @@ void hg_scanner_300::writedown_image_configuration(void) void hg_scanner_300::printf_devconfig(HGSCANCONF_G400 *d) { - io_->set_timeout(200); + //io_->set_timeout(200); if (!d) d = &dsp_config; @@ -1220,7 +1223,7 @@ int hg_scanner_300::get_scanner_paperon(SANE_Bool* paperon) USBCB usbcb = {GET_PAPER_STATUS, 0, 0}; len = sizeof(USBCB); ret = writeusb(usbcb); - io_->set_timeout(500); + //io_->set_timeout(500); if (ret == SCANNER_ERR_OK) { @@ -1265,7 +1268,7 @@ int hg_scanner_300::get_scan_is_sleep() len = sizeof(USBCB); ret = writeusb(usbcb); - io_->set_timeout(200); + //io_->set_timeout(200); if (ret == SCANNER_ERR_OK) { @@ -1314,7 +1317,7 @@ int hg_scanner_300::agreement() } ret = writedown_device_configuration(true); - io_->set_timeout(200); + //io_->set_timeout(200); return ret; } diff --git a/hgdriver/hgdev/hg_scanner_400.cpp b/hgdriver/hgdev/hg_scanner_400.cpp index 1b7b656..c397ebe 100644 --- a/hgdriver/hgdev/hg_scanner_400.cpp +++ b/hgdriver/hgdev/hg_scanner_400.cpp @@ -263,34 +263,37 @@ void hg_scanner_400::thread_handle_usb_read(void) if (ret == SCANNER_ERR_OK && usb.u32_Count > 0) { - int totalNum = usb.u32_Count; - std::shared_ptr imagedata(aquire_memory(totalNum)); - - if (!imagedata.get()) + int totalNum = usb.u32_Count & 0x3fffffff; // 2022-08-04: 兼容Android,默认图片大小均在1GB以内 + if (totalNum) { - status_ = SCANNER_ERR_INSUFFICIENT_MEMORY; - break; - } + std::shared_ptr imagedata(aquire_memory(totalNum)); - imagedata->set_image_statu(statu); - ret = get_img_data(imagedata); - // io_->set_timeout(200); + if (!imagedata.get()) + { + status_ = SCANNER_ERR_INSUFFICIENT_MEMORY; + break; + } - if (ret == SCANNER_ERR_OK) - { - ret = pop_image(); - sw.reset(); - if (ret != SCANNER_ERR_OK) + imagedata->set_image_statu(statu); + ret = get_img_data(imagedata); + // io_->set_timeout(200); + + if (ret == SCANNER_ERR_OK) + { + ret = pop_image(); + sw.reset(); + if (ret != SCANNER_ERR_OK) + { + status_ = ret; + break; + } + } + else { status_ = ret; break; } } - else - { - status_ = ret; - break; - } } this_thread::sleep_for(chrono::milliseconds(10)); } diff --git a/hgdriver/hgdev/hg_scanner_439.h b/hgdriver/hgdev/hg_scanner_439.h index 8410a95..e91a697 100644 --- a/hgdriver/hgdev/hg_scanner_439.h +++ b/hgdriver/hgdev/hg_scanner_439.h @@ -13,9 +13,9 @@ #include "hg_scanner.h" #ifdef OEM_HANWANG -#define hg_scanner_439 hw_scanner_239 +#define hg_scanner_439 hw_scanner_439 #elif defined(OEM_LISICHENG) -#define hg_scanner_439 lsc_scanner_239 +#define hg_scanner_439 lsc_scanner_439 #endif class hg_scanner_439 : public hg_scanner