国产系统:驱动层指定扫描张数扫描完成后返回无纸,所以app层去掉指定张数判断
This commit is contained in:
parent
8371fae5e1
commit
fb959e307e
|
@ -1036,17 +1036,6 @@ void HGAPI HGSaneDeviceImpl::ThreadFunc(HGThread thread, HGPointer param)
|
||||||
HGUInt doubleImgRet = HGBASE_ERR_OK;
|
HGUInt doubleImgRet = HGBASE_ERR_OK;
|
||||||
bool clickedReserveImg = false;
|
bool clickedReserveImg = false;
|
||||||
|
|
||||||
int imageCount =0;
|
|
||||||
int scanCount = -1;
|
|
||||||
p->GetScanCount(&scanCount);
|
|
||||||
|
|
||||||
//获取扫描页面类型,双张或单张
|
|
||||||
HGChar scanPage[256] = { 0 };
|
|
||||||
p->GetScanPage(scanPage, 256);
|
|
||||||
bool isDuplex = true;
|
|
||||||
if (0 == strcmp(OPTION_VALUE_SMYM_DM, scanPage))
|
|
||||||
isDuplex = false;
|
|
||||||
|
|
||||||
while (!p->m_stopThread)
|
while (!p->m_stopThread)
|
||||||
{
|
{
|
||||||
SANE_Parameters params;
|
SANE_Parameters params;
|
||||||
|
@ -1171,7 +1160,6 @@ void HGAPI HGSaneDeviceImpl::ThreadFunc(HGThread thread, HGPointer param)
|
||||||
// 普通图片或第二个双张图片
|
// 普通图片或第二个双张图片
|
||||||
p->m_imageFunc((HGSaneDevice)p, img, HGSANE_IMAGE_TYPE_NORMAL, p->m_imageParam);
|
p->m_imageFunc((HGSaneDevice)p, img, HGSANE_IMAGE_TYPE_NORMAL, p->m_imageParam);
|
||||||
doubleImgRet = HGBASE_ERR_OK;
|
doubleImgRet = HGBASE_ERR_OK;
|
||||||
imageCount++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HGBase_DestroyImage(img);
|
HGBase_DestroyImage(img);
|
||||||
|
@ -1182,12 +1170,7 @@ void HGAPI HGSaneDeviceImpl::ThreadFunc(HGThread thread, HGPointer param)
|
||||||
buffer = NULL;
|
buffer = NULL;
|
||||||
bufferSize = 0;
|
bufferSize = 0;
|
||||||
|
|
||||||
// 保留双张后继续扫描,重置图像数量,然后重新按照指定张数扫描
|
if (HGSANE_ERR_IMAGE_DISCARD == doubleImgRet)
|
||||||
if (clickedReserveImg)
|
|
||||||
imageCount = 0;
|
|
||||||
|
|
||||||
if (HGSANE_ERR_IMAGE_DISCARD == doubleImgRet ||
|
|
||||||
((isDuplex ? imageCount == scanCount * 2 : imageCount == scanCount) && !clickedReserveImg)) //图像数量和扫描张数对应时正常结束扫描,双张保留则继续扫描
|
|
||||||
{
|
{
|
||||||
saneAPI.sane_cancel_api(p->m_devHandle);
|
saneAPI.sane_cancel_api(p->m_devHandle);
|
||||||
if (NULL != p->m_scanNotify)
|
if (NULL != p->m_scanNotify)
|
||||||
|
@ -1439,32 +1422,3 @@ HGResult HGSaneDeviceImpl::GetDoubleImgStatus(HGUInt *status)
|
||||||
|
|
||||||
return HGBASE_ERR_FAIL;
|
return HGBASE_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGResult HGSaneDeviceImpl::GetScanPage(HGChar *scanPage, HGUInt maxLen)
|
|
||||||
{
|
|
||||||
if (NULL == scanPage || 0 == maxLen)
|
|
||||||
{
|
|
||||||
return HGBASE_ERR_INVALIDARG;
|
|
||||||
}
|
|
||||||
|
|
||||||
SANE_Int dev_options = 0;
|
|
||||||
SANE_Int method = 0;
|
|
||||||
m_sourceImpl->m_saneApi.sane_control_option_api(m_devHandle, 0, SANE_ACTION_GET_VALUE, &dev_options, nullptr);
|
|
||||||
for (int i = 1; i < dev_options; ++i)
|
|
||||||
{
|
|
||||||
const SANE_Option_Descriptor* opt = m_sourceImpl->m_saneApi.sane_get_option_descriptor_api(m_devHandle, i);
|
|
||||||
if (strcmp(opt->name, SANE_STD_OPT_NAME_PAGE) == 0)
|
|
||||||
{
|
|
||||||
char *value = (char*)malloc(opt->size * 2 + 4);
|
|
||||||
SANE_Status ret = m_sourceImpl->m_saneApi.sane_control_option_api(m_devHandle, i, SANE_ACTION_GET_VALUE, value, &method);
|
|
||||||
if (ret == SANE_STATUS_GOOD)
|
|
||||||
{
|
|
||||||
strcpy(scanPage, value);
|
|
||||||
free(value);
|
|
||||||
return HGBASE_ERR_OK;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return HGBASE_ERR_FAIL;
|
|
||||||
}
|
|
||||||
|
|
|
@ -105,7 +105,6 @@ private:
|
||||||
HGResult SetScanMode(const HGChar *scanMode);
|
HGResult SetScanMode(const HGChar *scanMode);
|
||||||
HGResult SetScanCount(HGInt scanCount);
|
HGResult SetScanCount(HGInt scanCount);
|
||||||
HGResult GetDoubleImgStatus(HGUInt *status);
|
HGResult GetDoubleImgStatus(HGUInt *status);
|
||||||
HGResult GetScanPage(HGChar *scanPage, HGUInt maxLen);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HGSaneSourceImpl* m_sourceImpl;
|
HGSaneSourceImpl* m_sourceImpl;
|
||||||
|
|
Loading…
Reference in New Issue