使用 Twain API for Epson DS-510 双面扫描失败

Duplex Scanning Failure Using Twain API for Epson DS-510

我想使用 C# 应用程序使用 Twain Library for Epson DS-510 扫描仪扫描文档,但它只扫描一面。 扫描仪支持页面的双面扫描,并使用扫描仪扫描功能进行了测试,但它不使用应用程序进行扫描。

此外,我还有另一台扫描仪,它是 Canon-2510C TWAIN,但它确实可以成功扫描双面。

最近,我安装了 TWAIN 示例应用程序以查看连接到数据源的 Twain 配置。图片已添加到下面的附件中。

CAP_DublexEnabled 默认为 false。当我想将 CAP_DublexEnabled 设置为 TRUE 时,它确实如此,但在关闭示例应用程序并再次重新打开后它仍然相同时。

它真的支持用 Twain 进行双面扫描吗?还是我必须更改 TwainLib 的 Acquire 方法的代码 class?

TwainLib的获取方法class:

public void Acquire()
    {
        TwRC rc;
        CloseSrc();
        if (appid.Id == IntPtr.Zero)
        {
            Init(hwnd);
            if (appid.Id == IntPtr.Zero)
                return;
        }
        rc = DSMident(appid, IntPtr.Zero, TwDG.Control, TwDAT.Identity, TwMSG.OpenDS, srcds);
        if (rc != TwRC.Success)
            return;

        TwCapability cap = new TwCapability(TwCap.XferCount, 50);
        //TwCapability cap = new TwCapability(TwCap.DuplexEnabled, 50);
        rc = DScap(appid, srcds, TwDG.Control, TwDAT.Capability, TwMSG.Set, cap);
        if (rc != TwRC.Success)
        {
            CloseSrc();

            return;
        }

        TwUserInterface guif = new TwUserInterface();
        guif.ShowUI = 0;
        guif.ModalUI = 1;
        guif.ParentHand = hwnd;
        rc = DSuserif(appid, srcds, TwDG.Control, TwDAT.UserInterface, TwMSG.EnableDS, guif);
        if (rc != TwRC.Success)
        {

            //TwainGui.PicForm.arsivOK = false;

            CloseSrc();
            return;
        }
    }

折腾了几天,网上查了,测试了,终于找到了解决方法。

首先,我使用以下代码将 DuplexEnabled 功能设置为 true:

TwCapability capDuplex = new TwCapability(TwCap.DuplexEnabled, true);
rc = DScap(appid, srcds, TwDG.Control, TwDAT.Capability, TwMSG.Set, capDuplex);

之后,TW_RC值出现SUCCESS,表示设置值成功。 然后我们可以毫无问题地扫描两面。

但是这里的观点是capability的类型,我们如上设置后,你要根据自己的需要设计TwCapability class方法,你必须使用Twain类型,bool类型还有那些方法。

祝大家有个愉快的一天!