如何使用WIA C#创建快速双面扫描?

问题描述 投票:0回答:1

我是WIA的新手。并且我被要求使扫描服务扫描更快并且进行双面扫描。我当前的服务扫描一页,然后将其放入pdf中,依此类推,直到少于20页为止(此数字只是我之前使用的拐杖,如果有人退机如何获取“如果那里有纸”,将非常高兴。变量)。我开始在MSDN上进行挖掘并找到描述属性的文档,并在发现this帖子后描述了双面装钉,但其中设置了神秘的5个。找到this之后,弄清楚我需要WIA_DPS_DOCUMENT_HANDLING_SELECT设置为0x205(FEEDER + DUPLEX + AUTO_ADVANCE)。所以我试图像这样设置它们:

    private static void SetProperty(Property property, int value)
    {
        IProperty x = (IProperty)property;
        Object val = value;
        x.set_Value(ref val);
    }

...一些代码...

    foreach (Property prop in device.Properties)
    {
        //LOGGER.Warn(prop.Name);
        //LOGGER.Warn(prop.PropertyID);
        switch ((Int32)prop.PropertyID)
        {
           // Document Handling Select
           case 3088:
              SetProperty(prop, 517);
              break;
           // Pages
           case 3096:
              SetProperty(prop, 1);
              break;
        }
    }

而且它对我没有用...它只是停留在设置...可以有人解释如何设置AUTO_ADVANCE和DUPLEX道具吗?或者,也许“使扫描速度更快并进行双面扫描”需要的还不只是AUTO_ADVANCE和DUPLEX,我对它们的理解是错误的?还是我应该在扫描说明中考虑“ ISIS / TWAIN(Windows XP / Vista / 7/8 / 8.1 / 10)”字符串并使用其他库?(Windows 10,Canon DR-M160 ||,Windows的DR-M160和DR-M160II驱动程序)

这也是当前的提取功能:

    public List<ImageFile> FetchImageList()
    {
        List<ImageFile> imageList = new List<ImageFile>();
        //bool hasMorePages = true;
        int testcount = 0;
        while (testcount >= 0)
        {
            testcount--;
            WIA.Device device = FindDevice(_deviceId);
            if (device == null)
            {
                LOGGER.Warn("Scanner device not found");
                return null;
            }
            // get item
            WIA.Item scanItem = device.Items[1] as WIA.Item;
            LOGGER.Debug($"ScanItem: {scanItem.ItemID}");

            try
            {
                foreach (Property prop in device.Properties)
                {
                    //LOGGER.Warn(prop.Name);
                    //LOGGER.Warn(prop.PropertyID);
                    switch ((Int32)prop.PropertyID)
                    {
                        // Document Handling Select
                        case 3088:
                            LOGGER.Warn("here");
                            SetProperty(prop, 517);
                            LOGGER.Warn("here");
                            break;
                        // Pages
                        case 3096:
                            SetProperty(prop, 1);
                            break;
                    }
                }
                // scan image
                WIA.ICommonDialog wiaCommonDialog = new WIA.CommonDialog();
                WIA.ImageFile image = (WIA.ImageFile)scanItem.Transfer(WIA.FormatID.wiaFormatPNG);
                imageList.Add(image);
                LOGGER.Warn("Front");

                //get back side
                image = (WIA.ImageFile)scanItem.Transfer(WIA.FormatID.wiaFormatPNG);
                imageList.Add(image);
                LOGGER.Warn("Back");
            }
            catch (Exception e)
            {
                throw (e);
            }
        }
        return imageList;
    }
c# scanning twain wia isis
1个回答
0
投票

嗯...我尝试在没有AUTO_ADVANCE的情况下进行双面扫描,并在转接呼叫中得到HRESULT:0x8000FFFF(E_UNEXPECTED)。根据this post(即使在Windows 7上也是如此),我想没有办法通过使用WIA为我解决此问题,仍然希望会有其他建议...

已解决的问题我使用saraff.twain,它对我有用:-git页面:https://github.com/saraff-9EB1047A4BEB4cef8506B29BA325BD5A/Saraff.Twain.NET带有炉排维基页面的优秀库。(还具有适用于.net 4.6.1的类似库)

© www.soinside.com 2019 - 2024. All rights reserved.