Twain источник что это
Технология без интересного имени или как работать со сканером
Введение
В отличие от принтеров сканеры изначально не поддерживались ОС Windows и не имеют API для работы с ними. В начале своего появления сканеры взаимодействовали с программами посредством уникального для каждой модели сканера интерфейса, что серьезно затрудняло включение поддержки работы со сканером в прикладные программы.
Каждый источник данных разрабатывается непосредственно производителем соответствующих устройств. И их поддержка стандарта TWAIN осуществляется на добровольной основе.
Использование TWAIN
DSM и DS это DLLs загружаемые в адресное пространство приложения и работают как подпрограммы приложения. DSM использует межпроцесcную связь, что бы координировать действия со своими копиями, когда больше чем одна программа использует TWAIN.
Упрощенная схема действия приложения использующего TWAIN:
Использование EZTWAIN.
Данная библиотека была разработана, что бы упростить разработку программ использующих TWAIN предоставляя разработчику упрощенную версию TWAIN API.
EZTWAN обеспечивает передачу всех windows сообщений через TWAIN и ожидает сообщения о готовности изображения.
Библиотека EZTWAIN является свободно распространяемой библиотекой с открытыми исходными кодами. В настоящее время выпущена версия 1.12. Библиотеку можно свободно скачать с сайта: www.dosadi.com, библиотека написана на C и предназначена для использования как DLL, необходимый для ее использования с Delphi модуль так же можно скачать с сайта. Кроме нее у меня с сайта можно скачать модификацию данной библиотеки, предназначенную для статической компоновки с программой на Delphi. Указанная версия (MultiTWAIN for Delphi) не требует наличия библиотеки EZTW32.DLL.
Структура программы.
Используемые функции.
Перед вызовом функций сканирования необходимо вызвать функцию:
TWAIN_SelectImageSource(hwnd: HWND): Integer;.
Данная функция позволяет выбрать источник получения данных из списка TWAIN совместимых устройств, в качестве параметра она получает хендл основного окна прикладной программы. Следует заменить, что если в системе имеется одно TWAIN совместимое устройство, то вызывать функцию не обязательно.
Для облегчения обработки полученных DIB данных в библиотеке имеется несколько сервисных функций:
TWAIN_DibWidth(hDib: HBitmap): Integer; | Получает ширину изображения в пикселях |
TWAIN_DibHeight(hDib: HBitmap): Integer; | Получает высоту изображения в пикселях |
TWAIN_CreateDibPalette(hdib: HBitmap): Integer; | Получает цветовую палитру изображения |
TWAIN_DrawDibToDC(hDC: HDC; dx, dy, w, h: Integer; hDib: HBitmap; sx, sy: Integer ); | Передает DIB данные в формате совместимым с указанным контекстом устройства. |
Пример программы.
Полный текст примера можно взять отсюда. Мы рассмотрим только функцию получения данных с TWAIN устройства:
Обработка ошибок необходима, так как объект TBitMap имеет серьезные ограничения на размер создаваемого изображения. При этом производится обработка наиболее вероятной ошибки, в случае возникновения другой ошибки, ее обработка будет передана обработчику по умолчанию. Обработка ошибки в данном случае заключается в выдаче диагностического сообщения, в прикладной программе можно реализовать выполнение любых необходимых действий, например, произвести уменьшение разрешения и повторно подать на загрузку в TBitMap.
ELLEX Dev
Я являюсь обладателем этого замечательного сканера, но после апгрейда до 8-ки сканер не работал, а на сайте производителя были драйвера только до Windows 7.
Мне нравится этот сканер. Он компактный, питается от USB и имеет хорошее качество.
Но производитель выпустил драйверы только до Windows 7 (включая 64 битную версию).
Первое что я сделал скачал это драйвер для windows 7 и более того сканер нормально установился.
Но ни одна программа не видела сканер, включая стандартную «Факсы и сканирование Windows».
Программа, к которой я привык еще при Windows XP – это ScanGear CS. По идее эта программа ставится вместе с драйвером, но она не находилась в поиске установленных программ.
Оказалось, что сканер заставить работать можно, но с единственной программой это CanoScan Toolbox которую тоже можно скачать с сайта производителя.
Эта программа отвечает за поведение кнопок на самом сканере, которыми я обычно не пользовался, и дает возможность вызвать одну из доступных опций.
После установки остается ее немного настроить.
Нужно выставить программу просмотра изображений по умолчанию. Иначе сканировать не получится.
И поставить галочку «отобразить драйвер сканер»
И тогда мы получим долгожданную ScanGear CS
Таким образом понадобится
На всякий случай выкладываю архив с драйверами (Win 7 x32 + x64, RU) на этот сканер canon-canoscan-lide-60.zip
Сканирование документов по сети
Устанавливаемый драйвер или прямой доступ
В настоящее время распространены четыре типа драйверов: TWAIN, ISIS, SANE и WIA. По сути, эти драйвера выполняют роль интерфейса между приложением и низкоуровневой библиотекой от производителя, которая связывается с конкретной моделью.
Упрощенная архитектура соединения со сканером
Обычно подразумевается, что сканер подключен напрямую к компьютеру. Однако, никто не ограничивает протокол между низкоуровневой библиотекой и устройством. Это может быть и TCP/IP. Таким образом сейчас работает большинство сетевых МФУ: сканер виден как локальный, но соединение идет через сеть.
Плюс у такого решения в том, что приложению все равно как именно сделано подключение, главное видеть знакомый TWAIN, ISIS или другой интерфейс. Не нужно реализовывать специальную поддержку.
Но и минусы очевидны. Решение завязано на декстопную ОС. Мобильные устройства сразу выпадают из поддержки. Второй минус, драйверы могут работать нестабильно на сложных инфраструктурах, например, на терминальные серверах с тонкими клиентами.
Выходом из положения будет поддержка прямого подключения к сканеру по HTTP/RESTful протоколу.
TWAIN Direct
TWAIN Direct был предложен консорциумом TWAIN Working Group как вариант бездрайверного доступа.
Основная идея в том, что вся логика переносится на сторону сканера. А сканер предоставляет доступ по REST API. Дополнительно спецификация содержит описание публикации устройства (autodiscovery). Выглядит хорошо. Для администратора это избавление от возможных проблем с драйверами. Поддержка всех устройств, главное, чтобы было совместимое приложение. Для разработчика тоже есть плюсы, в первую очередь знакомый интерфейс взаимодействия. Сканер выступает веб-сервисом.
Если рассмотреть реальные сценарии использования, то минусы также найдутся. Первый — ситуация дедлока. На рынке нет устройств с TWAIN Direct и разработчикам нет смысла поддерживать эту технологию, и обратно. Второй — безопасность, спецификация не предъявляет требований к управлению пользователями, частоте обновлений для закрытия возможных дыр. Также непонятно, как администраторам контролировать апдейты и доступ. На компьютере есть антивирусное ПО. А в прошивке сканера, в которой очевидно будет веб-сервер, этого может и не быть. Или быть, но не то, что требует политика безопасности компании. Согласитесь, иметь зловреда, который будет отправлять налево все отсканированные документы не очень хорошо. То есть при внедрении данного стандарта задачи, которые решались настройками сторонних приложений перекладываются на производителей устройств.
Третий минус — возможная потеря функциональности. Драйвера могут иметь дополнительную пост-обработку. Распознавание штрихкодов, удаление фона. Некоторые сканеры имеют т.н. импринтер — функцию, которая позволяет сканеру печатать на обработанном документе. Этого нет в TWAIN Direct. Спецификация допускает расширение API, но это приведет к появлению множеств собственных реализаций.
И еще один минус в сценариях работы со сканером.
Сканирование из приложения, или сканирование от устройства
Давайте рассмотрим, как происходит обычное сканирование из приложения. Я кладу документ. Затем открываю приложение и сканирую. Затем забираю документ. Три шага. Теперь представьте, что сетевой сканер стоит в другом помещении. Нужно сделать как минимум 2 подхода к нему. Это менее удобно, чем сетевая печать.
Другое дело, когда сканер сам умеет отправлять документ. Например, на почту. Я кладу документ. Затем сканирую. Документ сразу летит в целевую систему.
В этом и есть основное отличие. Если устройство подключено к сети, то удобнее сканировать сразу в целевое хранилище: папку, почту или ECM систему. В этой схеме нет места драйверу.
Если посмотреть со стороны, мы используем сетевое сканирование, не меняя существующих технологий. Причем как из десктопных приложений через драйвер, так и прямо с устройства. Но удаленное сканирование с компьютера не стало настолько массовым, как сетевая печать, из-за различий в сценариях работы. Более востребованным становится сканирование сразу в нужное хранилище.
Поддержка сканерами TWAIN Direct как замена драйверам очень правильный шаг. Но стандарт немного запоздал. Пользователи хотят сканировать прямо с сетевого устройства, отправляя документы по назначению. Существующим приложениям нет необходимости поддерживать новый стандарт, так как и сейчас все работает прекрасно, а производителям сканеров нет нужды его реализовывать, так как нет приложений.
И в заключение. Общий тренд показывает, что простое сканирование одной — двух страничек будет замещаться камерами на телефонах. Останется промышленное сканирование, где важны скорость, поддержка функций постобработки, которые TWAIN Direct не может обеспечить, и где будет оставаться важной тесная интеграция с ПО.
Что выбрать при сканировании: TWAIN или WIA драйвер
В каждом человеке есть хотя бы капелька садистских наклонностей. Разница только в их количественном содержании и качественном проявлении. Вот я, например, люблю задавать людям вопросы на темы, в которых они ничего не понимают, и смотреть, как они мучаются, пытаясь угадать правильный ответ. Оказывается, точно такую же пытку любит проводить любой специалист в своей области. Иначе как объяснить, к примеру, тот факт, что практически любая компьютерная программа, работающая со сканером изображений, при первом использовании обязательно задаст вопрос, типа: «А какой драйвер вы хотите использовать при сканировании: TWAIN или WIA? А, может, вы хотите воспользоваться нашим собственным драйвером? Или вы предпочитаете драйвера ISIS?»
Любой нормальный пользователь компьютера, после такого вопроса пойдёт и повесится, чувствуя свою полную беспомощность в этой жизни. Или по крайней мере уйдёт в запой на неделю.
Дорогие мои, не надо! Я вас спасу! По крайней мере от этого конкретного вопроса. Давайте вместе решим, какой же именно драйвер нам желательно использовать в обычном российском офисе при сканировании обычных российских документов на обычном российском китайском американском сканере.
Ответ
Если ваше устройство поддерживает драйвер ISIS, то, очевидно, эта статья не для вас. Эти драйвера предназначены для промышленного обрудования, имеют массу возможностей и подразумевают, что пользоваться ими будут специалисты, глубоко погружённые в существо вопроса. В общем, для обычных людей ISIS — не вариант.
Резюме
При работе со сканером используйте по возможности интерфейс TWAIN.
При работе с фотокамерой или любым другим устройством, не требующим особых настроек при передаче изображений, удобнее использовать стадндарт WIA.
Одно замечание. Если программа, с которой в работаете, имеет свой собственный интерфейс для работы со сканером, то на мой взгляд им пользоваться предпочтительнее. Могу объяснить это тем, что, во-первых, интерфейс этот не меняется при использовании различных сканеров, а во-вторых, в нём присутствуют только те настройки, которые важны для данной конкретной программы. Примером может служить программа FineReader:
Тем не менее, даже при использовании интерфейса FineReader вы всё равно не избавляете себя от выбора подходящего драйвера устройства (TWAIN или WIA), так что информация из статьи остётся актуальной и в этом случае.