Возможно, я воспринимаю вопрос слишком буквально, но с помощью TWAIN API невозможно проверить, подключено ли устройство, т.е. подключено и включено ли оно. Стандарт TWAIN определяет для этой цели возможность, называемую CAP_DEVICEONLINE, но эта функция настолько плохо продумана и так мало драйверов реализует ее правильно, что на практике она бесполезна.
Самое близкое, что вы можете получить, это: Откройте устройство (MSG_OPENDS): почти все драйверы проверяют готовность к устройству при открытии и отображают диалоговое окно с ошибкой для пользователя. Не существует механизма TWAIN для подавления или обнаружения этого диалогового окна Некоторые драйверы позволяют пользователю исправить проблему и продолжить работу, и в этом случае вы (ваше приложение) никогда не узнаете, что возникла проблема. Некоторые драйверы позволяют пользователю отменить операцию, и в этом случае операция MSG_OPENDS завершится ошибкой, вероятно, возвратив TWRC_CANCEL, но, возможно, TWRC_FAILURE.
Некоторые драйверы TWAIN открываются без ошибок, даже если устройство находится в автономном режиме. Такой драйвер может вернуть FALSE на запрос CAP_DEVICEONLINE. Такой драйвер, вероятно, выполнит проверку устройства в сети, когда вы включите устройство с помощью MSG_ENABLEDS, а затем, если устройство не в сети, вы получите диалоговое окно с ошибкой для пользователя и т. д., как указано выше.
В сторону и IMPO: WIA «более современен», но также гораздо менее универсален для сканирования, чем TWAIN, и, по моему опыту, непригоден для многостраничного сканирования из устройства подачи документов. Разработчики и специалисты по обслуживанию WIA, похоже, не понимают и не заботятся о сканерах, кроме недорогих потребительских планшетов. Это хорошо для камер.
person
Spike0xff
schedule
10.10.2008