2

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

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

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

CAP_DulexEnabled 默认为 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;
        }
    }

图片01

图片02

4

1 回答 1

0

经过几天在网上的战斗,测试和搜索,终于找到了解决方案。

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

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

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

但是这里的观点是能力的类型,我们如上设置之后,你必须根据自己的需要设计TwCapability类方法,并且在这些方法中你也必须使用Twain类型,也就是bool。

祝大家有美好的一天!

于 2016-07-21T12:38:11.947 回答