аппаратными ресурсами ПК.

Однако на определенном этапе развития Windows предоставляемые TWAIN возможности показались корпорации Microsoft недостаточными. Поэтому компания разработала собственный стандарт работы с устройствами ввода изображений (сканерами, цифровыми фото– и видеокамерами) под названием WIA (Windows Imaging Architecture или Windows Imaging Acquisition – интерфейс работы с изображениями), впервые реализованный в ОС Windows Me.

WIA тесно взаимодействует с ядром системы Windows и содержит широкий спектр системных компонентов. Отметим наиболее важные из них.

Windows Explorer User Interface. Он позволяет работать с устройством ввода изображений, как с обычным расширением Проводника Windows.

Device Object. Компонент Device Object создает объект стандартного типа «Устройство» при подключении к компьютеру сканера.

Scanner Wizard. «Мастер» сканирования, модуль, который предоставляет стандартный интерфейс для работы с источниками изображений. В нем реализованы все основные возможности управления, такие, как предварительный просмотр изображения, выделение области сканирования, масштабирование, настройка разрешения, яркости, контрастности и глубины цвета.

Application Interfaces. Этот один из самых важных компонентов WIA обеспечивает различные программные интерфейсы, среди которых как высокоуровневые специфические интерфейсы WIA, так и эмулируемый TWAIN. Кроме того, предусмотрен стандартный интерфейс копирования/вставки файлов.

ISIS

Возможности, предоставляемые архитектурой WIA, эффективны в случае использования достаточно простых и однотипных устройств. Однако практически все современные сканеры среднего и старшего уровня, ориентированные на корпоративный документооборот, имеют множество специфических особенностей и возможностей, которые не могут быть учтены в универсальном интерфейсе.

В то же время программные системы, применяемые в организациях с активным электронным документооборотом, нуждаются в более широких возможностях, чем сканирование одиночного изображения и сохранение его в файл или отсылка по электронной почте. Но они также не могут быть ориентированы на возможности какой-то конкретной модели сканера, поскольку должны оставаться универсальными.

Таким образом, возникает необходимость в программном интерфейсе, занимающем ту же нишу, что и TWAIN, т. е. обеспечивающем взаимодействие прикладных программ с аппаратными средствами, но имеющем гораздо более широкие возможности. Такой интерфейс был разработан компанией Pixel Translations в середине 1990-х гг. и получил название ISIS (Image and Scanner Interface Specification – интерфейс для работы с изображениями и сканерами).

Основное достоинство ISIS – модульная архитектура. Этот программный интерфейс состоит из множества стандартизованных программных блоков, выполняющих функции обработки изображений (сканирование, преобразование, сжатие и т. п.). Разработчики и пользователи могут компоновать эти блоки в так называемые конвейеры, ориентированные для решения тех или иных задач (например, конвейер обработки договора может состоять из блоков многостраничного сканирования, распознавания текста, преобразования в PDF-документ с возможностью полнотекстового поиска, архивирования и рассылки полученного файла заинтересованным лицам).

Как и в случае с TWAIN, каждый сканер должен иметь ISIS-совместимый драйвер, в котором реализованы все его возможности и учтены особенности. Интерфейс ISIS предоставляет разработчикам ПО мощную и гибко настраиваемую систему управления устройствами ввода изображений, а изготовителям аппаратных средств – максимальную совместимость их продукции с существующим ПО.

Проблемы и решения

Советы и секреты: pcmag.ru/solutions/

Три знака пятому поколению

Александр Рябцев

Современные информационные системы (СУБД, системы логического вывода, информационно-поисковые системы) должны корректно функционировать при условии, что некоторые данные в них отсутствуют или истинность их сомнительна. Принято считать, что первым затронул проблему неопределенных значений Э. Ф. Кодд, предложив для них термин «NULL-значения».

Привычная нам со школьной скамьи логика с двумя значениями утверждений (TRUE – FALSE, ИСТИНА – ЛОЖЬ, или 1–0) оказалась неприспособленной для работы с неопределенными данными, в связи с этим Кодд предложил использовать трехзначную (с третьим значением UNKNOWN; по-русски пишут «НД» – «нет данных»). Так в информатике был выпущен джинн многозначности, который сидел в своем сосуде чуть ли не со времен Аристотеля и с XIX века терпел посрамления от Джорджа Буля и его алгебры логики.

Проблемы, порождаемые NULL-значениями, не заставили себя ждать: сравнение NULL с любым значением (в том числе и с NULL) дает опять NULL; не всех удовлетворяла и единственность неопределенного значения – Н. Белнап различал в нем NONE (неопределенность) и BOTH (переопределенность или противоречивость).

Однако верные последователи Джорджа Буля не торопились выбросить белый флаг. К. Дейт утверждал, что домены в SQL не могут должным образом содержать неопределенные значения, поскольку по определению они представляют собой множество значений. Следовательно, отношения, содержащие неопределенные значения, отношениями, по существу, не являются, что подрывает самые основы реляционной модели. Дейт предложил использовать значения по умолчанию вместо NULL-значений, но кому не ясно, что это – фиговые листки, к тому же прозрачные. Кроме того, резервирование некоторых значений домена для специального применения сужает область определения реальных значений.

И все же, несмотря на отсутствие единой теории представления и обработки неопределенных данных, все ИТ-авторы едины во мнении, что развивать это направление необходимо, поскольку информационная система с неопределенными значениями приобретает определенную «интеллектуальность». Основы уже заложены на достаточно высоком уровне: в СУБД DB2 каждый столбец таблицы БД физически представлен двумя столбцами – столбцом данных и столбцом битов индикатора. Если бит индикатора установлен в 1, соответствующее значение столбца данных равно NULL; однако столбец индикатора всегда скрыт от пользователя.

Правила сравнения SQL

Так же глубоко признаки «третьего значения» проникли в SQL. Специалисты по этому языку знают, что в операции сравнения он использует трехзначную (TRUE, FALSE, UNKNOWN) логику. Сравнение полей А и В выполняет встроенный предикат (А=В) по следующим правилам:

(А=В) = TRUE при А=В, А<> NULL, В<> NULL

(А=В) = FALSE при А<>В, А<> NULL, В<> NULL

(А=В) = UNKNOWN в остальных случаях

(так же обращаются с NULL и другие предикаты сравнения SQL). Эти предикаты могут соединяться логическими связками OR, AND, NOT. Так в предложении WHERE возникают трехзначные выражения, непосредственно влияющие на результат запроса к БД.

Как работают правила сравнения в SQL, рассмотрим на примере БД Ships, содержащей названия кораблей и годы спуска на воду (year). Допустим, что поле year содержит NULL, если корабль был спущен на воду до 1940 г. (например, «Бисмарк»). Тогда ответом на запрос: «Является ли 1939 г. годом спуска на воду корабля „Бисмарк“?» – будет UNKNOWN, а запрос SELECT * FROM Ships WHERE year=NULL не выдаст ни одной записи, даже если такие корабли в БД есть. Дело в том, что в SQL запись соответствует запросу, только если сравнение значения (А) каждого ее поля с запрашиваемым (В) дает TRUE. В приведенном примере для всех записей БД получается UNKNOWN, что и дает пустой список.

Как же получить список кораблей с неизвестным годом спуска на воду? Для этого в SQL имеется специальный унарный предикат IS NULL (и его инверсия IS NOT NULL). Он двузначен – его истинностным значением не может быть UNKNOWN; в нем легко узнать модальную функцию «случайно» трехзначной логики (см. PC Magazine/RE, 11/2006, с. 130). Для решения нашей задачи можно написать:

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату
×