Что такое SANE и как с ним бороться


Зная, что OS/2 можно подружить не со всякой моделью сканера, долго (часов пять, наверное) выбирал подходящую. На тот момент времени все мои познания в сканерном софте сводились к тому, что существует CFM TWAIN, с которым может работать PMView, а также нечто под названием SANE, портированное из *никсов.

И вот, свершилось. Новенький UMAX Astra 1220S, демо-версия CFM TWAIN, установка... и первый облом. CFM TWAIN этот сканер не видел напрочь. Разбираться с демо-версией мне категорически не хотелось, да и внешний вид особого впечатления не произвёл, так что для разнообразия я решил потр... поковыряться с SANE.

Согласно SANE Home Page, мне предстояло ковыряться с универсальным интерфейсом к любому устройству, выдающему растровые картинки, в том числе к планшетным сканерам и видеокамерам. Ничего хорошего это не предвещало.

Скачав SANE 1.0.1 for OS/2 со страницы SANE/2 Project, я принялся за чтение руководящих указаний. Согласно readme.os2, в CONFIG.SYS требовалось прописать следующие строчки:

BASEDEV=OS2ASPI.DMD /ALL
DEVICE=D:\OS2\BOOT\ASPIROUT.SYS
Отсутствующий в OS/2 драйвер ASPIROUT.SYS находился в комплекте SANE/2. Проделав вышеописанное, я приступил к следующему этапу -- поиску сканера на шине SCSI. Для этого используется утилита find-scanner.exe:
find-scanner.exe: found scanner "UMAX Astra 1220S V1.5" at device b0t6l0
Троекратное ура, первая попытка отсканировать картинку в соответствие с readme.os2:
scanimage -d umax > test.pnm
scanimage.exe: open of device umax failed: Invalid argument
Ну... короче, на исходе третьего дня я мог только материться и тупо пялиться в монитор. Если верить документации (крайне скудной, кстати), такого просто не могло быть. Невнятные указания типа "поправьте конфигурационный файл для вашего семейства сканеров" вызывали бешенство: я бы с удовольствием поправил, если бы знал, как.

Нужная строка нашлась почти случайно (покусаю любого, кто скажет, что это очевидно):

scanimage -d umax:b0t6l0
Это заклинание возымело необходимый эффект: сканер загудел и на экран хлынул поток символов. Оставалось только перенаправить этот поток в файл и вызвать PMView для автоматического показа отсканированной картинки:
/* rexx */
'start /c /min scanimage -d umax:b0t6l0 --resolution 300 > g:\scans\temp.pnm'
call SysSleep 5
/* дать время на прогрев сканера и запустить PMView */
'start D:\OS2Apps\PMView2000\pmview.exe /SHO g:\scans\temp.pnm'
exit
Этот скриптик на REXX оказался неожиданно удобным, несмотря на аскетичность: запихиваешь четыре фотографии в сканер, тыкаешь мышкой и через полминуты получаешь в PMView готовую картинку. При необходимости строку запуска scanimage можно подправить, благо параметров сканирования довольно много. Полный их список можно получить командой типа
scanimage.exe -L -d umax:b0t6l0
Однако (битому неймётся) через какое-то время захотелось странного: графического интерфейса. Для SANE существует по меньшей мере два PM front-end: SANE/2 и ScanIt/2. Первый из них отпал сразу -- он не поддерживал SANE старше версии 0.74. Второй требовал регистрации, при запуске пищал, откладывал файл с сообщением о трапе в PMMERGE.DLL и умирал. Так что пришлось опять обращаться к *никсным портам -- GIMP + xscanimage.

Гулять так гулять: 11Mb XFree86/2 версии 3.3.5, 27Mb GIMP/2 1.1.15 вместе с кучей сопутствующих библиотек... всё это по модему... распаковать, настроить, запустить... и тут на меня упало второе дерево. xscanimage тоже отказывался видеть этот сканер. Вернее, не то чтобы совсем отказывался -- если запускать его как отдельную программу командой:

xscanimage umax:b0t6l0
то всё проходило на ура, однако мне хотелось запускать его как плагин к GIMP, а в этом случае сканера он найти не мог. Попытки пинать Платона Фомичёва и просьбы о помощи в форуме gimp-os2 успеха не возымели. Пришлось разбираться своими силами, благо что у *никсных программ все потроха обычно торчат наружу. В файле \XFree86\lib\X11\.gimp-1.1\data\pluginrc обнаружилась следующая конструкция:
(proc-def "xscanimage" 2
        "Front-end to the SANE interface"
        "This function provides access to scanners and other image...
        "Andy Beck, Tristan Tarrant, and David Mosberger"
        "Andy Beck, Tristan Tarrant, and David Mosberger"
        "8th June 1997"
        "/Xtns/Acquire Image/Device dialog..."
        [...]
Пришлось совершить над ней операцию из серии "а бантик-то гвоздиком прибили":
(proc-def "xscanimage-umax-3a-b0t6l0" 2
        "Front-end to the SANE interface"
        "This function provides access to scanners and other image...
        "Andy Beck, Tristan Tarrant, and David Mosberger"
        "Andy Beck, Tristan Tarrant, and David Mosberger"
        "8th June 1997"
        "/Xtns/Acquire Image/Umax Astra 1220S"
        [...]
GIMP потерял возможность искать доступные его пониманию устройства, но зато, будучи ткнут носом в мой сканер, бодро запускал xscanimage, позволял делать image preview, задавать окно сканирования, подправлять гамма-коррекцию и чувствительность по цветам -- в общем, всё как у больших в Photoshop/TWAIN32. Так что всё наладилось... вот только стоило мне это очередной порции седых волос.
Dmitry Ban


Интересные ссылки:
Комментариев к странице: 0 | Добавить комментарий
Домой | Проект ядро Core/2 | Проект OS/4 Download | Новости | Гостевая книга | Подробно обо всем | Нужные программы | Проекты | OS/2 FAQ | Всячина | За и Против | Металлолом | #OS2Russian | RDM/2 | Весёлые картинки | Наша галерея | Доска объявлений | Карта сайта | ПОИСК | ФОРУМ