...

среда, 30 апреля 2014 г.

Автоматическое сканирование в сетевую папку с кнопки на МФУ

Добрый день.

Очень давно была такая статья как реализовать автоматическое сканирование при нажатии кнопки на сканере, но то ли у меня руки кривые, то ли нежелание детально разбираться, но подвиг автора я повторить не смог. И всё же решил реализовать эту идею по нескольким причинам:

— не отвлекать оператора за АРМ, к которому подключено МФУ;

— ускорить процесс получения электронных копий за счет автоподатчика листов и двухстороннего сканирования.



Итак, имеем: МФУ Canon imageRUNNER 1133А подключено по USB к компьютеру под управлением ОС Windows 7. Сеть имеет доменное управление, есть отдельный компьютер с файлохранилищем.

1. В вышеназванной статье ищем ссылку на программу автора

Замечание: Первоначально у автора было задействовано 3 кнопки (по файлу config.ini и scan.js это видно). Поэтому в исходниках со строки 31 файла scan.js добавляем еще одно условие. Вот кусок кода, который у меня получился:



switch (param2) //Запускаем приложения при получении нужных параметров
{
case get_ini_value("config.ini", "scan1_flag"):
wsh = new ActiveXObject("WScript.Shell");
wsh.Run(get_ini_value("config.ini", "scan1_app"),6);
break;
case get_ini_value("config.ini", "scan2_flag"):
wsh = new ActiveXObject("WScript.Shell");
wsh.Run(get_ini_value("config.ini", "scan2_app"),6);
break;
case get_ini_value("config.ini", "scan3_flag"):
wsh = new ActiveXObject("WScript.Shell");
wsh.Run(get_ini_value("config.ini", "scan3_app"),6);
break;
case get_ini_value("config.ini", "scan4_flag"):
wsh = new ActiveXObject("WScript.Shell");
wsh.Run(get_ini_value("config.ini", "scan4_app"),6);
break;
default:
write_log(get_ini_value("config.ini", "logfile"), "No valid parameters\n" + objArgs);
}




Как компилировать у автора написано.

2. Логинимся администратором и распаковываем архив в C:\ProgramData\scan и даем полный доступ группе Domain Users (или какой-то другой) на эту директорию. В принципе из архива нужны только два файла config.ini и scan.js.


3. В консоле администратора выполняем



C:\ProgramData\scan\scan -reg




4. Перезагружаем ПК

5. Логинимся администратором и запускаем regedit. Исправляем в реестре путь к scan.exe на полный в следующих местах:

— В разделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\AutoplayHandlers\Handlers\WIA_{FC36F676-4675-4CC9-B705-3AC86F456214} ключ InitCmdline

— В разделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\StillImage\Registered Applications ключ Value

— 5.3 в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StillImage\Events\STIProxyEvent\{FC36F676-4675-4CC9-B705-3AC86F456214} ключ Cmdline


Например было scan.exe

А станет c:\ProgramData\scan\scan.exe


Как прописать свою программу для сканирования честно подглядел у подглядел в блоге iCopy


6. Перезагружаем ПК, логинемся администратором


7. Открываем «Устройства и Принтеры», правой клавишей мыши на МФУ, выбираем «Свойства сканирования», в открывшемся окне переходим на вкладку «События», где выбираем на каждое событие действие запустить ScanApp


8. В файле конфига c:\ProgramData\scan\config.ini опицию debugflag исправляем на true, чтоб велся лог-файл


9. Переводим МФУ в режим сканирования, выбираем опцию, записываем ID_Event для каждого профиля сканирования


10. Исправляем config.ini под свои нужды

Вот мой:



[debug]
debugflag=true
logfile=debug.log

[flags]
scan1_flag=/StiEvent:{2A6CE1DC-C3E2-4ECF-8540-41F9197DDB86};
scan2_flag=/StiEvent:{030E4709-6263-4278-93B4-33C15644841A};
scan3_flag=/StiEvent:{6336E0AE-81A7-4B8A-9A63-156788D9AF9C};
scan4_flag=/StiEvent:{2BC72F52-CE02-42BC-A843-609A9FCEA15D};

[applications]
scan1_app=c:\ProgramData\scan\scan_col.cmd
scan2_app=c:\ProgramData\scan\scan_bw.cmd
scan3_app=c:\ProgramData\scan\scan_bw_150.cmd
scan4_app=rem резерв




11. Еще нам понадобится утилита, которая позволит запускать полностью скрытые консольные процессы hidcon. Взять можно здесь. Их архива достаем hidcon-x64.exe или hidcon-x32.exe, копируем в C:\ProgramData\scan и для краткости переименовываем в hidcon.exe

12. Как и автор той статьи для сканирования я использовал iCopy. Архив с программой распаковал в C:\ProgramData\scan. Рекомендую перед сканированием запустить программу с графическим интерфейсом и отладить требуемые режимы.


13. Листинг каждого cmd-файла для определенного действия (кодировка Windows 1251)



rem scan_col.cmd
rem меняем кодировку
chcp 1251
rem получаем дату_время
set now=%TIME:~0,-3%
set now=%now::=%
set now=%now: =0%
set now=%DATE:~-4%%DATE:~3,2%%DATE:~0,2%_%now%
rem сетевая шара
set dt=\\server\scan
c:\ProgramData\scan\hidcon.exe "c:\ProgramData\scan\iCopy.exe /file /path %dt%\%now%.jpg /adf /duplex /r 300"



rem scan_bw.cmd
rem меняем кодировку
chcp 1251
rem получаем дату_время
set now=%TIME:~0,-3%
set now=%now::=%
set now=%now: =0%
set now=%DATE:~-4%%DATE:~3,2%%DATE:~0,2%_%now%
rem сетевая шара
set dt=\\server\scan
c:\ProgramData\scan\hidcon.exe "c:\ProgramData\scan\iCopy.exe /file /path %dt%\%now%.jpg /adf /duplex /gray /r 300"



rem scan_bw_150.cmd
rem меняем кодировку
chcp 1251
rem получаем дату_время
set now=%TIME:~0,-3%
set now=%now::=%
set now=%now: =0%
set now=%DATE:~-4%%DATE:~3,2%%DATE:~0,2%_%now%
rem сетевая шара
set dt=\\server\scan
c:\ProgramData\scan\hidcon.exe "c:\ProgramData\scan\iCopy.exe /file /path %dt%\%now%.jpg /adf /duplex /gray /r 150"




14. На той машине, которая предоставляет шару для сканирования (в моём случае ОС Windows), в планировщик добавляем такое задание: каждый день в 21:00 выполнять scan_move.cmd (кодировка OEM 866)

rem scan_move.cmd
rem сетевая шара, вид со стороны файлохранилища
set dt=d:\scan
rem файлы перемещаем в Архив
move /y %dt%\*.jpg %dt%\Архив
rem в Архиве файлы старше 7-ми дней удаляем
forfiles /p %dt%\Архив /d -7 /c "CMD /c del /Q @FILE"




Возле МФУ повесили:


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий