Ошибка дуплексного сканирования с использованием 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;
}
}
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 в этих методах.
Всем хорошего дня, ребята!