четверг, 10 марта 2016 г.

Удаленный контроль TWAIN-сканнера + принтера из браузера (WEB-сервер эмулятора ксерокса over TCP/IP)


























ПО вашего сканера не поддерживает сетевой доступ или отсутствует аппаратный модуль сетевого доступа? Проблема решаема. Библиотека 'WEBSCANPRINT.DLL' (далее DLL) представляет собой WEB-сервер (надстройку над библиотекой 'ra_scan_print.dll') по управлению эмулятором ксерокса и позволяет превратить любой офисный компьютер/ноутбук, с подключенными раздельными принтером и сканером или МФУ, в сетевой принт-сканер а-ля ксерокс с удаленным контролем из вашего браузера. При этом нет никакой необходимости отвлекать локального пользователя на процесс сканирования и последующую печать. Вам достаточно выбрать параметры сканирования, автоматическую печать (при необходимости) и нажать кнопку сканировать. TWAIN-драйвер под управлением нашей библиотеки без лишних диалогов произведет на удаленной машине сканирование в файл (в заданном формате, разрешении и цветности) и предоставит его в общий доступ в сетевой ресурс 'webscanprint'.

Видеоролик тестирования сервиса:


Cистемные требования и зависимости:
  1. Win OS (NT/2003/XP/7/8).
  2. Наличие библиотеки эмулятора ксерокса - 'ra_scan_print.dll' версии 1.4 разработки автора.
  3. Наличие установленного TWAIN-драйвера* на устройство сканирования в системе.
  4. Подключенный сканер, принтер или МФУ.
WEB-сервер контроля эмулятора ксерокса обеспечивает следующие возможности:
  1. Поддержка форматов BMP и JPG.
  2. Автонумерация отсканированных файлов в формате 'data-time.ms'.
  3. Любое разрешение сканирования от 100 до 6000 dpi.
  4. Выбор режима цветности (RGB/оттенки серого/черно-белое).
  5. Автономное сканирование без установки лишнего ПО на удаленной машине, используя лишь TWAIN-драйвер производителя сканера.
  6. Работоспособность из любого клиентского браузера, хоть компьютера, хоть ноутбука или планшета со смартфоном.
  7. Не требуется установка каких-бы то ни было .NET Framework в сотню мегабайт (приложение нативное).
DLL предоставляет универсальный доступ для других приложений вне зависимости от языка в среде Win32/64 bit. Для использования DLL в своих проектах соблюдайте соглашение об stdcall-вызовах. Тип соглашения о вызове объявляется после прототипа функции, будь то объявление функционального типа или же объявление функции.

Таблица расшифровок параметров экспортируемой функций 'reinit()' библиотеки:

Пример динамического подключения (Delphi 6/7/2006-2010/TDL/XE5-7):
var
  reinit: function(scan, prints, bmpjpg, resolution, port, update, chroma: dword; p: boolean): boolean; stdcall;
  LibHandle: THandle;

function LinkProc(h: thandle; ProcName: string):Pointer;
begin
 result:= GetProcAddress(h, PChar(ProcName))
end;

{ запуск WEB-сервера }
 reinit(1, 1, 0, 1, 300, 10, 0, true);
...

{ отключение WEB-сервера }
 reinit(0, 0, 0, 0, 0, 0, 0, false);
...

{ подключение библиотеки }
 LibHandle:= LoadLibrary('webscanprint.DLL');
 if LibHandle <> 0 then begin
  reinit:= LinkProc(LibHandle, 'reinit');
 end;
...

{ отключение библиотеки }
 if LibHandle <> 0 then
  FreeLibrary(LibHandle)
...
Пример инициализации WEB-сервера под VBS (автономная работа):
' WebScanPrint.VBS
' Cкрипт инициализации WEB-сервера эмулятора МФУ over TCP/IP
' TWAIN-сканнер + принтер
' Разработчик: Бадло Сергей Григорьевич aka raxp
' H-page: http://raxp.radioliga.com
'
' Зависимости:
' · Win OS 32/64-bit
' · COM-сервер DynWrapx.dll
' · Выполните рег-цию admin_regdynwrapx!!!.bat (на Vista/7/8/8.1 правой кн-й мыши от Админа)
' · Запустите runwebscanprint.cmd

Dim scan
Dim prints
Dim bmpjpg
Dim resolution
Dim port
Dim update
Dim chroma
Dim Speak

' НАСТРОЙКИ
scan = 1         ' разрешение сканировать
prints = 1       ' разрешение печатать
bmpjpg = 1       ' BMP(0)/JPG(1)
resolution = 300 ' 300 dpi
port = 8081      ' portWEB-server
update = 10      ' интервал обновления страницы, сек (не задействован)
chroma = 0       ' цветность RGB(0)/Gray(1)/Dual-tone(2)
speakon = true   ' разрешаем голосовое сопровождение

' подключаем голосовое сопровождение
Set Speak = CreateObject("sapi.spvoice")

' регистрируем COM объект DynamicWrapperX в тихом режиме
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run ("regsvr32.exe dynwrapx.dll /s"),3, true
' создаем объект DynamicWrapperX
Set Wrap = CreateObject("DynamicWrapperX.2")

Wrap.Register "user32.dll", "GetAsyncKeyState", "i=l", "f=s", "r=l"
Wrap.Register "webscanprint\webscanprint.dll", "reinit", "i=lllllllb", "f=s", "r=b"
res = Wrap.reinit(scan, prints, bmpjpg, resolution, port, update, chroma, true)

' Информируем пользователя о начале работы
if (speakon = true) then
Speak.Speak "Запущен вэб сервер твайн сканнера поверх ти-си-пи ай-пи."
Speak.Speak "Порт доступа "&port
End if

' запускаем бесконечный цикл по условию нажатия 'Escape' с задержкой
Do While Wrap.GetAsyncKeyState(27) = "0"
 WScript.Sleep 1000 'кол-во миллисекунд
Loop ' завершение цикла

res = Wrap.reinit(0, 0, 0, 0, 0, 0, 0, false)
' озвучиваем
if (speakon = true) then
 Speak.Speak "вэб сервер твайн скан нера отключен."
End if
ПОРЯДОК ИСПОЛЬЗОВАНИЯ*
  1. Для завершения работы скрипта 'webscanprint.vbs' и, соответственно, WEB-сервера используется глобальный перехват клавиши 'Esсape'. Для исключения случайной выгрузки WEB-сервера из памяти локальным пользователем переназначьте перехват на другую неиспользуемую клавишу или закомментируйте функцию перехвата.
  2. Строка 'Status scanner' в виджете WEB-сервера показывает текущие настройки сканирования и печати.
  3. Строка 'Options scanner' в виджете WEB-сервера показывает применяемые настройки сканирования и печати по нажатию кнопки 'Scan in BMP' или 'Scan in JPG'.
  4. При нажатии кнопок сканирования в браузере курсор мыши изменит свой вид на ожидающий и возвратится в состояние по-умолчанию по завершению операции сканирования и/или печати на удаленной машине.
  5. Индустриальный стандарт TWAIN был разработан для интерфейса программного обеспечения (API) передачи изображений из различных устройств в ОС Windows, в том числе и со сканеров. TWAIN не является протоколом аппаратного уровня, каждое устройство должно предоставлять специальный драйвер, так называемый DataSource (DS). Менеджер TWAIN (DSM) - действует как координатор между приложениями и Источником Данных (Data Source). DSM имеет минимальный пользовательский интерфейс - только выбор DS. Все взаимодействие с пользователем вне прикладной программы осуществляется средствами DS. 
Контроль WEB-сервера в мобильном браузере (под Android):

Полученные сканы в оттенках серого и черно-белом изображении:
 
Ресурсы
  1. Скачать WEB-сервер http://raxp.radioliga.com/cnt/s.php?p=wsp.zip
  2. Скачать WEB-сервер https://sourceforge.net/projects/webscanprint-dll/
  3. Обновление 'ra_scan_print.dll' на SourceForge https://sourceforge.net/projects/rascanprint/files/latest/download

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

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

В комментариях уважайте собеседника, внимательно читайте посты и не додумывайте. Просьбы и предложения из разряда: «можно ваш Skype/Viber/телефон», «напишите мне в vk/FB», а также другие им подобные — игнорируются. Выход новых версий ПО, внешняя ссылка, переставшая работать с течением времени и т.п. не является основанием для претензий. Желающие спокойно подискутировать и высказаться — Welcome. Желающие спонсировать блог — Donate. Нарушение этих простых правил ведет к бану и удалению комментариев без предупреждения.