Ошибка дуплексного сканирования с использованием Twain API для Epson DS-510

Я хочу отсканировать документ с помощью сканера Twain Library для Epson DS-510 с помощью приложения C#, но он сканирует только одну сторону. Сканер поддерживает сканирование страниц в обе стороны, и он тестируется с использованием функции сканирования сканера, но не выполняет сканирование с приложением.

Кроме того, у меня есть другой сканер, который является Canon-2510C TWAIN, но он успешно сканирует обе стороны.

В последнее время я установил TWAIN Sample App, чтобы увидеть конфигурацию Twain для подключения к источнику данных. Фотографии, как добавлено вложение ниже.

CAP_DublexEnabled по умолчанию имеет значение false. Когда я хочу установить CAP_DublexEnabled в TRUE, это происходит, но когда он остается тем же после закрытия примера приложения и повторного открытия.

Действительно ли он поддерживает обе стороны сканирования с помощью Twain или мне нужно изменить код метода Acquire для класса TwainLib?

Получить метод класса 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

1 ответ

Решение

После нескольких дней боев, испытаний и поисков в сети, наконец, нашли решение.

Прежде всего, я установил для 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 в этих методах.

Всем хорошего дня, ребята!

Другие вопросы по тегам