This project has moved. For the latest updates, please go here.

Сканирование через ADF

Jul 12, 2015 at 6:19 PM
Здравствуйте!
Во-первых, хотел бы поблагодарить Вас за Вашу чудесную библиотеку.
Не в первый раз уже обращаюсь к ней.
Во-вторых, хотелось бы поподробнее узнать, каким образом можно взаимодействовать с ADF на примере, а так же узнать, можно ли производить обработку отсканированного изображения перед началом сканирования следующего, т.е. полностью контролировать ADF.

С ув., Ярослав.
Coordinator
Jul 13, 2015 at 4:47 PM
Добрый день, Ярослав.
Спасибо за высокую оценку моего проекта.
Пример работы с автоподатчиком описан в соответствующем разделе документации. Насчет обработки изображения, если Вам необходимо принимать решение о продолжении сканирования только после обработки текущего изображения, тогда необходимо установить XFerCount в 1, возможно Twain32.DisableAfterAcquire в false (если используете интерфейс сканера), после чего вызывать метод Twain32.Acquire() для начала сканирования следующего изображения.

С уважением, SARAFF.
Marked as answer by SARAFF on 7/20/2015 at 11:27 AM
Oct 18, 2016 at 12:42 PM
Edited Oct 18, 2016 at 12:48 PM
Добрый день. Такой вопрос - как четко проверять есть ли дуплекс,? есть ли ADF , как определить эти параметры?
как их устанавливать? В примере вы проверяете в начале доступен ли дуплекс, а если он не доступен что тогда делать? Т.е. если я допустим пытаюсь просто отсканировать на сканере без ADF - как мне устанавливать соответствующие параметры.
Еще вопрос - зачем проверяют GetCurrent? от них что-то зависит?
Пожалуйста ответьте
Coordinator
Oct 18, 2016 at 7:50 PM
Edited Oct 18, 2016 at 7:54 PM
Добрый день, Aleksey1555.
Я очень советую ознакомиться с TWAIN Specification. Если кратко, то есть, к примеру, CAP_DUPLEX (Indicates whether the scanner supports duplex.), CAP_AUTOFEED (MSG_SET to TRUE to enable Source’s automatic feeding), CAP_FEEDERENABLED (If TRUE, Source’s feeder is available), и т.д..

По второй части:
DG_CONTROL / DAT_CAPABILITY operations for capability negotiation include:
  • MSG_GET Returns the Current, Default and Available settings for a capability.
  • MSG_GETCURRENT Returns the Current setting for a capability.
  • MSG_GETDEFAULT Returns the value of the Source’s preferred Default values.
  • MSG_RESET Returns the capability to its TWAIN Default (power-on) condition
    (i.e. all previous negotiation is ignored).
  • MSG_RESETALL Returns all of the current values to the default settings used when the
    driver was first installed.
  • MSG_SET Allows the application to set the Current value of a capability.
  • MSG_SETCONSTRAINT Allows the application to set the Current and Default value(s) and
    restrict the Available values to some subset of the Source’s power-on
    set of values. Sources are strongly encouraged to allow the
    application to set as many of its capabilities as possible, and further to
    reflect these changes in the Source’s user interface. This will ensure
    that the user can only select images with characteristics that are
    useful to the consuming application.
Marked as answer by SARAFF on 10/22/2016 at 1:33 PM
Oct 19, 2016 at 8:08 AM
Edited Oct 19, 2016 at 9:03 AM
Ок, но.. вот странно
я пишу
tw.Capabilities.DuplexEnabled.Set(true);
после этого он сканирует с двух сторон
но если сразу написать
Twain32.Enumeration p2= tw.Capabilities.DuplexEnabled.Get();
то в p2 будет только одно значение
и оно будет OnePassDuplex
хотя очень странно сканер поддерживает ADF
и сканирует с двух сторон
а код показывает что можно сканировать только с одной стороны
где ошибка?

и еще
делаю так:
tw.Capabilities.FeederEnabled.Set(true);
tw.Capabilities.AutoFeed.Set(false);
получается должен использоваться планшет а он сканирует через автоподачу
в чем ошибка?
Coordinator
Oct 19, 2016 at 10:01 AM
Добрый день, Aleksey1555.
По первой части вопроса: проблема в twain-драйвере вашего сканера. Именно он говорит, что он поддерживает только OnePassDuplex. (Такая проблема обычно у эмулирующих WIA-драйверов).
По второй части: так здесь нет ошбки, т.к. feeder - это автоподатчик, и вы его включили. AutoFeed - это непрерывное (поточное) сканирование, т.е. листы затягиваются один за одним.
Oct 21, 2016 at 9:48 AM
Спасибо, разобрался. работает.
А у меня еще вопрос - можно какнибудь окно twain'а (если включить ShowUI=true) показать на передний план?
Coordinator
Oct 21, 2016 at 2:12 PM
Добрый день, Aleksey1555.
Это вопрос к окну twain-а (источника данных). Попробуйте указать в качестве значения свойства Twain32.Parent указать свою форму.
Nov 2, 2016 at 12:51 PM
Спасибо, сработало