c# - 使用 Epson DS-510 的 Twain API 双面扫描失败

标签 c# scanning twain epson twaindotnet

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

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

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

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

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

获取TwainLib类的方法:

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;
        }
    }

Picture01

Picture02

最佳答案

折腾了几天,在网上查了查,终于找到了解决办法。

首先,我使用以下代码将 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类的方法,并且在这些方法中也必须使用Twain类型,bool类型。

祝大家有美好的一天!

关于c# - 使用 Epson DS-510 的 Twain API 双面扫描失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37477217/

相关文章:

c# - 你如何将一个对象放在另一个线程中?

c# - 如何将 where 子句附加到 Entity Framework ObjectSet

c# - Windows-7 64 位中的 Oracle 错误

Python - 如何将 BMP 转换为 JPEG 或 PDF?这样文件大小就不是 50MB 而是更小了?

TWAIN 驱动程序的 JAVA API 包装器

c# - 如何重写泛型方法?(C#)

java - 如何在 Android 上将相机方向锁定为纵向

c - 在 C 中扫描文件

linux - Linux 中的 Twain 支持 (c++)