LinuxForum.Fans
Тема

[Решено] TV-тюнер мешает scanimage, как заставить работать сканер?

Автор: foxadmin 3 сообщений 3476 просмотров
#35179

Ситуация такая:
Есть рабочая Debian-5.0.4 Lenny
Подключен TV-tuner (бихолдер) - работает нормально.
Подключен сканер Epson V110 - в Xsane и iscan нормально сканирует.
При сканировании из консоли командой
scanimage -v -p > ./tmp.pnm

выдаёт сообщение:

scanimage: ignored request to set inactive option br-x
scanimage: ignored request to set inactive option br-y
Исключение в операции с плавающей точкой

Далее просматриваю наличие сканирующих устройств

scanimage -L

Получаю:

device `v4l:/dev/video0' is a Noname Beholder BeholdTV 409 FM virtual device
device `epkowa:interpreter:005:003' is a Epson Perfection V10/V100 flatbed scanner

И если даю команду с указанием устройства:
scanimage -v -p --device-name='epkowa:interpreter:005:003' > ./tmp.pnm

То сканирование проходит нормально.
Однако, это не выход - каждый раз указывать устройство (отключил-подключил сканер и циферка изменилась).

Как заставить scanimage работать со сканером без ввода --device-name=... ?

(Кстати, OpenOffice по этой же причине не хочет работать со сканером).

#35226

Когда-то на другом компьютере я для сканера в правило udev добавил
SYMLINK+="scanner" или что хотите и действительно, /dev/scanner
указывал на назначенный файл, но не помню, пользовался ли я этим

Пётр.

#36036

Решено!
Может быть способ и не очень изящный, но в моём случае оказался рабочим!

Написал я вот такой bash-скрипт:

#! /bin/bash

path_pwd=`pwd` ;
scanimage -L | awk '{print $2}' | grep epkowa | sed "s/[\`']//g" > ./tmp;
device=`< ./tmp`;
rm ./tmp;

if [[ $device != "" ]] ;
then

if [ ! -d $path_pwd/scan_images ] ;
then
mkdir $path_pwd/scan_images ;
fi

scanimage -v -p --device-name=$device > $path_pwd/scan_images/tmp.pnm ;
if [ -f $path_pwd/scan_images/tmp.pnm ] ;
then
file_time=`date +%d.%m.%y_%H.%M.%S` ;
convert $path_pwd/scan_images/tmp.pnm $path_pwd/scan_images/$file_time.jpg ;
rm $path_pwd/scan_images/tmp.pnm ;
echo "ГОТОВО !!!" ;

beep -f 261,63 -l 200 ;
beep -f 329,63 -l 200 ;
beep -f 391,99 -l 100 ;
beep -f 1 -l 100 ;
beep -f 391,99 -l 200 ;
beep -f 440,00 -l 200 ;
beep -f 391,99 -l 200 ;
beep -f 349,22 -l 200 ;

else
exit 0 ;
fi

else
echo "Сканер не подключен!" ;
beep -f 440,00 -l 100 ;
beep -f 391,99 -l 100 ;
beep -f 261,63 -l 100 ;
beep -f 1 -l 1000 ;
fi
exit 0 ;

***************************************

В скрипте ещё используется beep для звуковой индикации выполненной работы.
Как это работает?

У scanimage спрашиваем о том какие сканеры есть у нас вообще.
awk нам отделяет третью колонку вывода scanimage (там девайсы с их расположением).
далее grep нам отделяет строку с моим Epson-ом (epkowa), а sed удаляет спецсимволы и записывает полученное во временный файл.
Использую временный файл потому, что не нашел способа загнать вывод sed в переменную.
Затем объявляем переменную device со значением из временного файла (там уже записан мой девайс).
Далее делаем проверку на наличие подключенного сканера.
Т.е. переменная device содержит или девайс или null (пусто).
Ну и выполняем действия в соответствии с наличием сканера - если есть, то сканируем и играем мелодию и если нет, то вылетаем с музыкой и соответствующим сообщением.

Проверено - работает под Lenny со сканером Epson Perfection V10/V100

PS: В скрипте я ещё конвертирую изображение в jpg и формирую каталог, в котором будут складываться всё просканированное с именами зависящими от даты и времени.

PSS: Выложил рабочий скрипт, подробное описание и всё, что нужно для работы этого сканера под Linux вот здесь: http://www.sakryukin.ru/?module=articles&c=articles&b=6&a=5

Войдите или зарегистрируйтесь, чтобы ответить.