修复G300收图BUG

This commit is contained in:
gb 2022-08-04 11:36:37 +08:00
parent a731792f53
commit 40b7485020
3 changed files with 56 additions and 50 deletions

View File

@ -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<tiny_buffer> 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<tiny_buffer> 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<tiny_buffer> &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;
}

View File

@ -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<tiny_buffer> 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<tiny_buffer> 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));
}

View File

@ -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