2012-02-09 151 views
0

我正在编写一个程序,通过WIA与网络扫描仪一起工作。 当只扫描一页时,一切正常。当我打开进纸器:WIA +网络扫描仪,adf = 1页

foreach (WIA.Property deviceProperty in wia.Properties) 
{ 
    if (deviceProperty.Name == "Document Handling Select") 
    { 
     int value = duplex ? 0x004 : 0x001; 
     deviceProperty.set_Value(value); 
    } 
} 

程序接收扫描,仍有在馈线文档和COM错误脱落(扫描仪继续扫描)信号。 下面的代码检查页进纸器:

//determine if there are any more pages waiting 
Property documentHandlingSelect = null; 
Property documentHandlingStatus = null; 

foreach (Property prop in wia.Properties) 
{ 
    if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_SELECT) 
     documentHandlingSelect = prop; 
    if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_STATUS) 
     documentHandlingStatus = prop; 
} 

if ((Convert.ToUInt32(documentHandlingSelect.get_Value()) & 0x00000001) != 0) 
{ 
    return ((Convert.ToUInt32(documentHandlingStatus.get_Value()) & 0x00000001) != 0); 
} 

return false; 

获取图片代码:

imgFile = (ImageFile)WiaCommonDialog.ShowTransfer(item, wiaFormatJPEG, false); 

可惜找不到使用WIA WSD的例子。也许有一些设置可以通过WSD获取多个图像。

+0

我也有[相同的问题](http://stackoverflow.com/questions/27473142/cannot-read-second-page-scanned-via-adf/31908751#31908751),我通过安装制造商的驱动程序解决。 – 2015-08-09 21:07:21

回答

0

我几乎使用WIA 2.0与vba控制Brother MFC-5895CW多功能扫描仪的问题。 当我从ADF转移扫描时,我无法将超过2张图片捕捉到图像对象(并且我尝试了所有现有选项,并且在这个问题上花费了几天甚至几小时!) 我发现该扫描仪的唯一解决方案是使用WIA.CommonDialog对象的ShowAcquisitionWizard方法批量传输所有扫描的文件到指定的文件夹。对我而言,这是一种比解决方案更好的解决方法,因为后处理会变得更加复杂。

令人惊讶的是,我在我的客户端整洁扫描仪上尝试了相同的过程... ShowAcquisitionWizard仅向指定的文件夹发送了一个扫描页面,其他页面消失。 通过'CommonDialog.ShowTransfer'方法让我第二次惊喜,我能够将所有扫描的文档逐图传输到应用程序中的图像对象中。

+0

我从MS支持获得的唯一解决方案是 - “您必须为WIA COM API编写自己的包装”... – 2012-02-29 11:37:25