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
Проверяем работу сканера командой:
,где 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 и задаем ему какой-нибудь пароль:
Компьютер должен запуститься под именем 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. И ждем. Отсканировав компьютер пискнет.
Идете на рабочее место и подключаетесь к сетевому диску
(или просите подключить администратора): \scannercommon
все отсканированные изображения храняться на этом диске. Название у файлов такое:
год_месяц_число_час_минута_секунда
Рекомендуем сразу забирать свои файлы с сетевого диска.
Каждый вечер все "забытые" файлы автоматически удаляются.
p.s. Все документы сканируются с максимальным размером и максимальным разрешением.
Т.е. файлы получаются большими. Не вздумайте посылать их по почте.
Так что осваивайте графические редакторы :-)
автор: Уланов Дмитрий Валентинович <dmb1@newmail.ru.>
2005 г.
1065 Прочтений • [Организация сетевого доступа сотрудников офиса к сканеру (scanner hardware driver linux)] [08.05.2012] [Комментариев: 0]