|
Ключевые слова: scanner, hardware, driver, linux, (найти похожие документы)
From: Уланов Дмитрий Валентинович <dmb1@newmail.ru.> Newsgroups: email Date: Mon, 08 Aug 2005 14:31:37 +0000 (UTC) Subject: Организация сетевого доступа сотрудников офиса к сканеру Как сделать сканер сетевым. Задача: Сделать так чтоб любой сотрудник фирмы мог сам сканировать себе документы. Доступ к отсканированным файлам осуществлять через сеть. Имеем: * Сканер, поддерживаемый программой sane (смотреть здесь: http://www.sane-project.org/sane-backends.html ). * Старый древний компьютер с сетевой картой и приличным жестким диском. на время настройки подключаем монитор и CD-ROM(после их можно убрать) Шаг 1. Устанавливаем Linux. C пакетами samba и sane-backends. С поддержкой сети. Шаг 2. Настраиваем самбу так чтоб обеспечить доступ из сети к какому-нибудь каталогу (например: /common). Смотрите соответствующие доки по самбе. Шаг 3. Подключаем сканер к компьютеру. Смотрите соответствующие доки по сканерам. Например сканер был подключен как: /dev/usb/scanner0 Проверяем работу сканера командой: scanimage -d hp:/dev/usb/scanner0 --format tiff > /common/test01.tiff ,где hp:/dev/usb/scanner0 - имя сканер в моей системе. После выполнения этой команды в каталоге /common появляется файл test01.tiff И если вы правильно настроили самбу его можно открыть из сети. Шаг 4. Создаем в текстовом редакторе управляющую программу autoscanner.c: #include <curses.h> #include <stdio.h> #include <sys/types.h> #include <fcntl.h> #include <sys/stat.h> #include <linux/kd.h> #include <sys/ioctl.h> #include <time.h> int main() { char command_str[500]; int c; time_t t; struct tm tim; int fd = open("/dev/console",O_RDONLY); //системный динамик initscr(); // подготавливаем дисплей timeout(-1); noecho(); cbreak(); keypad(stdscr,TRUE); do{ c = getch(); //ждем нажатия клавиши time(&t); // текущее время localtime_r(&t,&tim); // преобразуем в человеческий формат switch(c) { case 10: // клавиша "Enter" case 49: // клавиша "1" case 360: // клавиша "1" на стрелочках sprintf(command_str, "scanimage -d hp:/dev/usb/scanner0 --format tiff > /common/%04d_%02d_%02d_%02d_%02d_%02d.tiff", tim.tm_year+1900,tim.tm_mon+1,tim.tm_mday,tim.tm_hour,tim.tm_min,tim.tm_sec); system(command_str); //сканируем sleep(11); //ждем пока сканер вернет //каретку (подбираем время экспериментально) ioctl(fd,KDMKTONE,(600<<16)+1190); // бикаем динамиком break; case 50: // клавиша "2" case 258: // клавиша "2" на стрелочках sprintf(command_str, "scanimage -d hp:/dev/usb/scanner0 --format tiff --mode Color > /common/%04d_%02d_%02d_%02d_%02d_%02d.tiff", tim.tm_year+1900,tim.tm_mon+1,tim.tm_mday,tim.tm_hour,tim.tm_min,tim.tm_sec); system(command_str); sleep(11); ioctl(fd,KDMKTONE,(600<<16)+1190); break; default; // бикаем динамиком если клавиша неизвестна ioctl(fd,KDMKTONE,(200<<16)+1190); } timeout(0); // снимаем режим ожидания нажатия клавиши while (getch()!=ERR) ; // вычищаем буфер клавиатуры, если успели понажимать на кнопки timeout(-1); // включаем режим ожидания нажатия клавиши }while(c!=101); // клавиша "Е" - Выход из программы, можно убрать чтоб // пользователи случайно не нажали endwin(); // при выходе возвращаем дисплей в исходное состояние } компилим ее: gcc autoscanner.c -o autoscanner -lncurses копируем в общий каталог: cp autoscanner /bin/ и запускаем: autoscanner при нажатии клавиши "1" или "Enter" сканируется чернобелое изображение "2" сканируется цветное изображение. "E" - выход из программы. Шаг 5. 1. Cоздаем пользователя scanner и задаем ему какой-нибудь пароль: adduser scanner passwd scanner какой-нибудь пароль 2. Создаем файл autologin.c в любом текстовом редакторе: int main() { execlp("login", "login", "-f", "scanner", 0); } 3. Компилируем: gcc -o autologin autologin.c 4. Копируем в общий каталог cp autologin /bin/ 5. Редактируем /etc/inittab. Вместо сточки: 1:2345:respawn:/sbin/mingetty tty1 Вбиваем строку 1:2345:respawn:/sbin/аgetty -n -l /bin/autologin 38400 tty1 6. Перезагружаемся. Компьютер должен запуститься под именем scanner автоматически. Если нет - ищем ошибку. 7. добавляем в конец файла /home/scanner/.bash_profile команду autoscanner 8. Перезагружаемся. После перезагрузки система должна залогиниться под именем пользователя scanner и запустить программу autoscanner. Шаг 6 (необязательный) Чтобы на диске не скапливалось ненужных файлов организуем еженочную очистку диска: crontab -e Вводим 5 0 * * * rm -f /common/* Таким образом в 00 часов 05 минут каждой ночью будет очищаться содержимое каталога /common Шаг 7. Еще раз все проверяем. Отключаем монитор и выставляем все в место общего пользования. Удачи. p.s. Этот текст был разослан всем пользователям сети нашей фирмы: Уважаемые коллеги! У нас появился сетевой сканер. Теперь каждый может САМ сканировать себе документы. Инструкция по использованию. 1. Положите в сканер оригинал документа. 2. Нажмите на клавиатуре: - "Ввод" или цифру "1" - если необходимо получить черно-белую копию - цифру "2" - если необходимо получить цветную копию. 3. И ждем. Отсканировав компьютер пискнет. Идете на рабочее место и подключаетесь к сетевому диску (или просите подключить администратора): \\scanner\common все отсканированные изображения храняться на этом диске. Название у файлов такое: год_месяц_число_час_минута_секунда Рекомендуем сразу забирать свои файлы с сетевого диска. Каждый вечер все "забытые" файлы автоматически удаляются. p.s. Все документы сканируются с максимальным размером и максимальным разрешением. Т.е. файлы получаются большими. Не вздумайте посылать их по почте. Так что осваивайте графические редакторы :-) автор: Уланов Дмитрий Валентинович <dmb1@newmail.ru.> 2005 г.
|
Обсуждение | [ Линейный режим | Показать все | RSS ] |
|
Добавить комментарий |
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |