
Раскладываем снасти
На месте этих строк должно быть много текста о том, что такое штрих-код и как происходит его считывание и дешифровка современными сканерами штрих-кода. Но в интернете полно подобных статей и повторять написанное тысячи раз не имеет смысла. Однако, позволю себе все-таки повториться и напомнить, что наиболее распространены сканеры с одним из трех интерфейсов: " клавиатурный", RS-232 и USB. Сканеры с интерфейсом USB, как правило, используют эмуляцию либо клавиатуры, либо COM-порта.
На спиннинг или на удочку?
С " клавиатурным" сканером все более или менее понятно — информация, считанная сканером, будет направлена в порт клавиатуры, как если бы пользователь набрал эту информацию, нажимая на кнопки. С обработкой же данных, поступающих на COM-порт, есть некоторые трудности — программа, обрабатывающая такие данные, должна уметь реагировать на событие поступления данных в порт. Как известно, в DIRECTUM реализовать реакцию на внешние события невозможно. Отчасти данную проблему решает утилита быстрой идентификации документов (RapID), однако при помощи данной утилиты невозможно заставить пользователя произвести считывание штрих-кода в строго определенный момент времени, например, при заполнении реквизита какого-либо справочника или документа.
Ловись, рыбка
Альтернативным решением в деле " ловли" штрих-кода может выступить наша бесплатная утилита ComReader. Утилита состоит из одного модуля, который при установке регистрируется в операционной системе в качестве сервера автоматизации и предоставляет свои методы для использования в любом приложении, поддерживающим технологию Component Object Model (COM, отсюда и название, а прочтение аббревиатуры на русском подарило утилите уникальный рыбообразный логотип). Основное назначение утилиты 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
Сценарий DIRECTUM, реализующий непрерывное считывание и обработку штрих-кода:
sBarCode = "" ObjCom = CreateObject("b_alt_ComReader.BCReader") //Номер порта сканера ObjCom.ComNumber = 6 sBarCode = ObjCom.InitRead() if sBarCode <<>> "Cancel" //Простое заполнение реквизита считанным значением Requisite.Value = sBarCode endif
Рыбка №4, случайно попалась
Как оказалось, в режиме эмуляции COM-порта работают не только сканеры штрих-кодов, но и некоторые проксимити-считыватели. Например, устройство, использованное Александром Католиковым в проекте «Подтверждение выдачи бумажных документов при помощи магнитных карт-пропусков». Это обстоятельство существенно расширяет границы использования утилиты ComReader — от автоматизации заполнения реквизитов типа «Справочник-Работники» до установки электронной подписи по карте-пропуску.
На правах НЕ рекламы
В описанных выше " рыбках" возможности утилиты ComReader раскрыты не полностью, так как задействованы всего лишь одно свойство и один метод. Полное описание всех свойств и методов, а также примеры кода и системные требования смотрите на нашем сайте или в каталоге технических решений на сайте DIRECTUM.