WIA 2.0 复式属性

Posted

技术标签:

【中文标题】WIA 2.0 复式属性【英文标题】:WIA 2.0 Duplex property 【发布时间】:2011-05-01 05:31:44 【问题描述】:

我正在使用 C# 开发一个应用程序以使用 WIA 2.0 库。目前我可以使用大部分功能,例如 ADF(自动文档进纸器)、过滤器等等。

现在,我需要使用扫描仪 (fujitsu) 的双面打印器。

我正在尝试将 WIA_DPS_DOCUMENT_HANDLING_SELECT 扫描仪属性设置为 DUPLEX 值。请看下面的代码:

  try
        
            bool hasMorePages = false;
            //determine if there are any more pages waiting
            Property documentHandlingSelect = null;
            Property documentHandlingStatus = null;
            foreach (Property prop in WiaDev.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;
            

            object obj = new object();
            obj = (WIA_DPS_DOCUMENT_HANDLING_SELECT.DUPLEX);
            documentHandlingSelect.set_Value(ref obj);

            if (documentHandlingSelect != null) //may not exist on flatbed scanner but required for feeder
            
                //check for document feeder
                if ((Convert.ToUInt32(documentHandlingSelect.get_Value()) & WIA_DPS_DOCUMENT_HANDLING_SELECT.FEEDER) != 0)
                
                    hasMorePages = ((Convert.ToUInt32(documentHandlingStatus.get_Value()) & WIA_DPS_DOCUMENT_HANDLING_STATUS.FEED_READY) != 0);
                    if (hasMorePages)
                    
                        // set the property to use FEEDER and DUPLEX (this result in the value of 5 in the property)
                        object obj = new object();
                        obj = (WIA_DPS_DOCUMENT_HANDLING_SELECT.FEEDER | WIA_DPS_DOCUMENT_HANDLING_SELECT.DUPLEX);
                        documentHandlingSelect.set_Value(ref obj);
                    
                
            
            return hasMorePages;

此代码编译正常,但执行此行时无法获得两个图像。它只检索前面:

imgFile = (ImageFile)wiaCommonDialog.ShowTransfer(item, format.Guid.ToString("B")/* wiaFormatJPEG*/, false);

我阅读了许多主题以及文档中的内容,即可以从扫描仪上的 Item 中获取 Children 对象,但此集合中只有一个 Item。

请有人帮帮我!

谢谢

【问题讨论】:

【参考方案1】:

我读到您传输第一个图像,第二个图像可使用相同的引用,因此您只需调用第一行代码两次。这似乎有点奇怪,但适用于我的一台双面扫描仪。

例如

imgFile = (ImageFile)wiaCommonDialog.ShowTransfer(item, format.Guid.ToString("B")/* wiaFormatJPEG*/, false);
imgFile2 = (ImageFile)wiaCommonDialog.ShowTransfer(item, format.Guid.ToString("B")/* wiaFormatJPEG*/, false);

这可能对你有用。我也遇到了双面扫描问题,但我设法让它与我的一台扫描仪一起工作。

【讨论】:

非常感谢。它为我节省了一天的时间。

以上是关于WIA 2.0 复式属性的主要内容,如果未能解决你的问题,请参考以下文章

在 WIA 2.0 中扫描时设置页面大小

WIA 2.0 HP ScanJet 7650 特定问题

WIA 2.0 双面扫描

WIA 扫描仪,无法获取/设置 4104 和 6146 属性(颜色、颜色深度)

通过进纸器进行 WIA 扫描

使用 WIA 2.0 和 C# 扫描多页时跳过的页面