Раскладываем снасти
На месте этих строк должно быть много текста о том, что такое штрих-код и как происходит его считывание и дешифровка современными сканерами штрих-кода. Но в интернете полно подобных статей и повторять написанное тысячи раз не имеет смысла. Однако, позволю себе все-таки повториться и напомнить, что наиболее распространены сканеры с одним из трех интерфейсов: “клавиатурный”, RS-232 и USB. Сканеры с интерфейсом USB, как правило, используют эмуляцию либо клавиатуры, либо COM-порта.
На спиннинг или на удочку?
С “клавиатурным” сканером все более или менее понятно - информация, считанная сканером, будет направлена в порт клавиатуры, как если бы пользователь набрал эту информацию нажимая на кнопки. С обработкой же данных поступающих на COM-порт есть некоторые трудности - программа обрабатывающая такие данные должна “уметь” реагировать на событие поступления данных в порт. Как известно, в DIRECTUM реализовать реакцию на внешние события невозможно. Отчасти данную проблему решает утилита быстрой идентификации документов (RapID), однако, при помощи данной утилиты невозможно заставить пользователя произвести считывание штрих-кода в строго определенный момент времени, например, при заполнении реквизита какого-либо справочника или документа.
Ловись рыбка
Альтернативным решением в деле “ловли” штрих-кода может выступить утилита ComReader, которая является абсолютно бесплатной. Данная утилита состоит из одного модуля, который при установке регистрируется в операционной системе в качестве сервера автоматизации и предоставляет свои методы для использования в любом приложении, поддерживающим технологию Component Object Model. Основное назначение утилиты ComReader достаточно простое - дождаться поступления данных на COM-порт и передать полученные данные в вызвавшее приложение.
Назначение утилиты всего одно,а вот применений ей можно найти довольно много.
Рыбка №1
Простейший vbs-скрипт реализующий функцию непрерывного считывания штрих-кода.
sRet = ""
Set objBarCode = CreateObject("b_alt_ComReader.BCReader")
'Номер порта сканера
objBarCode.ComNumber = 6
While sRet <> "Cancel"
sRet = objBarCode.InitRead()
WScript.Echo sRet
'Здесь может быть реализована любая обработка
Wend
Рыбка №2
Сценарий DIRECTUM, реализующий непрерывное считывание и обработку штрих-кода.
sBarCode = ""
sKeyWord = "DIRECTUM"
nLenKeyWord = Length(sKeyWord)
ObjCom = CreateObject("b_alt_ComReader.BCReader")
//Номер порта сканера
ObjCom.ComNumber = 6
while sBarCode <<>> "Cancel"
sBarCode = ObjCom.InitRead()
if sBarCode <<>> "Cancel"
bIsDirectumBarCode = False
if Length(sBarCode) > nLenKeyWord
if Copy(sBarCode;1;nLenKeyWord) == sKeyWord
bIsDirectumBarCode = True
endif
endif
if bIsDirectumBarCode
sBarCode = Copy(sBarCode;nLenKeyWord + 2)
nNumChar = CharPos("-";sBarCode)
ShowMessage(Format("ИД инсталляции: %s%sИД документа: %s";
ArrayOf(Copy(sBarCode;1;nNumChar - 1);Cr;Copy(sBarCode;nNumChar + 1))))
else
ShowMessage("Неверный формат штрих-кода")
endif
endif
endwhile
Рыбка №3
Пользовательский выбор при заполнении реквизита справочника.
sBarCode = ""
ObjCom = CreateObject("b_alt_ComReader.BCReader")
//Номер порта сканера
ObjCom.ComNumber = 6
sBarCode = ObjCom.InitRead()
if sBarCode <<>> "Cancel"
//Простое заполнение реквизита считанным значением
Requisite.Value = sBarCode
endif
Рыбка №4 (неожиданная)
Как оказалось, в режиме эмуляции COM-порта работают не только сканеры штрих-кодов, но и некоторые проксимити считыватели. Например, устройство использованное Александром Католиковым в проекте “Подтверждение выдачи бумажных документов при помощи магнитных карт-пропусков”. Данное обстоятельство существенно расширяет границы использования утилиты ComReader - от автоматизации заполнения реквизитов типа “Справочник - Работники”, до установки электронной подписи по карте-пропуску.
На правах НЕ рекламы
В описанных выше “рыбках” возможности утилиты ComReader раскрыты не полностью, т.к. задействовано всего лишь одно свойство и один метод. Полное описание всех свойств и методов, а также примеры кода и системные требования можно найти на сайте разработчика или в каталоге технических решений.
Рыбка понравилась, забавно получилось
Авторизуйтесь, чтобы написать комментарий