Меню


Курсы СтимулСправочникПолезные материалы1С:Предприятие 8.2Работа с торговым оборудова…Общее

1С:Предприятие 8.2 /
Работа с торговым оборудованием /
Общее

Оглавление

Требования к разработке драйверов для считывателей RFID-меток

Введение

Описание работы с драйвером

Начало работы с драйвером

Чтение данных из меток

Запись данных в метки

Завершение работы

Описание свойств

Описание методов

Внешние события от драйвера

Описание аргументов события в активном режиме

Описание аргументов общих событий

 

Введение

Общий принцип работы любой системы RFID состоит в следующем. В системе всегда есть два основных компонента: это считыватель и идентификатор (RFID-метка). Считыватель излучает в окружающее пространство электромагнитную энергию. Идентификатор принимает сигнал от считывателя и формирует ответный сигнал, который принимается антенной считывателя и обрабатывается его электронным блоком.

По принципу действия системы RFID можно разделить на пассивные и активные. В более простой пассивной системе излучение считывателя постоянно во времени (не модулировано) и служит только источником питания для идентификатора. Получив требуемый уровень энергии, идентификатор включается и модулирует излучение считывателя своим кодом, который принимается считывателем.
В интерактивном режиме считыватель излучает модулированные колебания, то есть формирует запрос. Идентификатор дешифрирует запрос и при необходимости формирует ответ.

Система программ 1С: Предприятие поддерживает обмен данными с различным оборудованием RFID по согласованной технологии (рис.1).

Конфигурация 1С:Пр дприятие Обработка обслуживания Внешняя компонента Обработка обслуживания Обработка обслужииаиия і і 1 і Внешняя компонента Драйвер Внешняя компонента ш АРМ ПО л л л Ъ Устройство 1 Устройство / Устройство / Устройство / л М Л

Рис.1

Драйвер для считывателей RFID-меток должен быть реализован в соответствии с общей концепцией использования внешних компонент для взаимодействия с торговым оборудованием, подключаемым к системе программ 1С:Предприятие. Использование данного подхода позволяет упростить процесс подключения нового торгового оборудования к 1С:Предприятию.

Общие требования к драйверу:

Названия свойств и методов должны быть русскоязычными и англоязычными (например, Порт - Port, Скорость - Speed, Сигнал() – Signal()).

Также драйвер должен поддерживать множественные подключения (в соответствии с идеологией COM технологии) и поддерживать работу с несколькими устройствами.

При возникновении ошибки в работе драйвер должен сообщить об этом и передавать описание произошедшей ошибки.

Описание работы с драйвером

Начало работы с драйвером

Система 1С:Предприятие (в дальнейшем "система") инициализирует соединение с драйвером и загружает его. Далее устанавливаются конфигурационные параметры, необходимые для работы, и происходит подключение к устройству .

Система активизирует драйвер. После этого от драйвера могут поступать сообщения о наступлении внешнего события при появлении меток в поле считывателя. При этом передача данных о метках не ведется.

Работа с драйвером предполагается в активном и пассивном режимах. Пассивный режим подразумевает, что драйвер выполняет какие-либо действия в ответ на команды от системы. При активном режиме работы драйвер должен сам послать сообщение о внешнем событии по изменению своего внутреннего состояния.

Дополнительно к активному режиму для чтения данных из меток введено понятие сессии.

Сессия – это процесс чтения и накопления данных из обнаруженных меток и передача их системе. Начало и окончание сессии определяется системой, вызовом функций драйвера.

При активном режиме и открытой сессии выполнение команд пассивного режима, а также попытки открыть еще одну сессию для того же логического устройства, должны блокироваться и драйвер должен возвращать сообщение об ошибке.

Примечание. Команды общего назначения выполняются независимо от режима и состояния сессии.

Работа с метками может осуществляться на чтение и на запись данных.

Чтение данных из меток

При пассивном режиме:

1. Дается команда на обнаружение меток в поле считывателя. В ответ возвращается количество обнаруженных RFID-меток.
2. Последовательно вызывается функция на получение данных из каждой обнаруженной метки*. Драйвер возвращает данные из меток. Команда посылается N раз, где N – количество обнаруженных меток.

* На радиочастотной метке может храниться код EPC (Electrinic Product Code, электронный код продукта). Это уникальный номер, определяющий конкретный товар (предмет).

При открытой сессии:

  1. Система дает команду на начало сессии на чтение.
  2. При появлении меток, или если метки уже находятся в поле считывателя, драйвер должен считать данные из них и передать системе. Определены следующие ситуации, когда следует передавать полученные данные из меток:

    a. Достигнуто максимальное количество меток, установленное в свойствах компоненты;
    b. Нет больше меток в поле считывателя;
    c. В поле считывателя ненулевое количество меток и их количество не меняется в течение промежутка времени, установленного в свойствах компоненты;
    d. Команда от системы на окончание сессии – в штатном режиме все метки к моменту окончания заполнения документа покинут поле считывателя, и передача данных из меток не понадобится.

    Все перечисленные ситуации порождают одно и тоже внешнее событие "ЧтениеМеток". В течение сессии драйвер должен передать данные по каждой метке один единственный раз, т.е. драйвер должен "помнить", какие метки он уже передал. После отправки события драйвер должен приостановить отправку следующего и ожидать команды сверху о возможности продолжения отправки событий. Если результат обработки события положительный, то драйвер инициирует отправку следующего события, в противном случае требуется перепосылка последнего события, того, после которого драйвер приостановился. То есть из старых событий необходимо хранить только последнюю сформированную строку для отправки (при этом в драйвере при поступлении новые данные должны буферизироваться и высылаться по мере освобождения системы). Пример последовательности такой:
    • Отправка События 1;
    • Получен ответ СобытиеОбработано(Истина);
    • Отправка События 2;
    • Получен ответ СобытиеОбработано(Истина);
    • Отправка События 3;
    • Получен ответ СобытиеОбработано(Ложь);
    • Отправка События 3;
    • Получен ответ СобытиеОбработано(Ложь);
    • Отправка События 3;
    • Получен ответ СобытиеОбработано(Истина);
    • Отправка События 4;
    • Получен ответ СобытиеОбработано(Истина);
  3. По окончании процесса приема меток система дает команду на окончание сессии чтения. При этом драйвер не должен более передавать данные о метках наверх и не запоминать их. Также драйвер должен очистить информацию об обнаруженных метках, накопленных в течение сессии.

Запись данных в метки

Запись меток протекает в пассивном режиме:

  1. Посылается команда на отключение активного режима (если был включен).
  2. Дается команда на обнаружение меток в поле считывателя. В ответ возвращается количество обнаруженных RFID-меток.
  3. Вызывается функция на запись данных в метки. Драйвер записывает переданные данные во все обнаруженные метки. При этом производит проверку, что все метки были успешно записаны. В противном случае возвращает ошибку записи, и передает количество успешно прописанных меток.
  4. Восстанавливается предыдущий режим.

Состояния переходов между режимами

Состояния могут изменяться только последовательно:

"Пассивный" <=> "Активный" <=> "Сессия".

Все прочие попытки некорректного изменения состояния должны приводить к ошибке.

Например, нельзя из пассивного режима открыть сессию или переключить в пассивный режим, пока открыта сессия.

Завершение работы

По окончании работы с драйвером система закрывает соединение с устройством.

Соединение с драйвером закрывается только при завершении работы системы, либо при пересоздании объекта, связанного с драйвером.

Описание свойств

Описание свойств

Название (alias)

Тип

Доступность

Описание

ЧтениеЗапись

Описание методов

Описание методов

Название (alias) – режим работы *

Параметры

Возвращаемое значение

Описание

Имя

Тип

Описание

ПолучитьОшибку (GetLastError) – ОКОписаниеОшибки
(ErrorDescription)

BSTR [OUT]

Описание ошибки

LONG

Возвращает код и описание последней произошедшей ошибки
Подключить (Open) – ОКМассивЗначений
(Valuesarray)

IDispatch*
[IN]

Массив значений для настройки подключения

BOOL

Подключает устройство для использования
ИДУстройства
(DeviceID)

BSTR
[OUT]

Идентификатор устройства
Отключить (Close) – ОКИДУстройства
(DeviceID)

BSTR
[IN]

Идентификатор устройства

BOOL

Отключает устройство
ВключитьАктивныйРежим (EnableactiveMode) - КПРИДУстройства
(DeviceID)

LONG
[IN]

Идентификатор устройства

BOOL

Включает активный режим
ВыключитьАктивныйРежим (DisableactiveMode) - КАРИДУстройства
(DeviceID)

BSTR
[IN]

Идентификатор устройства

BOOL

Выключает активный режим
ОткрытьСессию (OpenSession) – КАРИДУстройства
(DeviceID)

BSTR
[IN]

Идентификатор устройства

BOOL

Начинает сессию получения меток (из всех обнаруженных меток прочитанные данные передаются системе). Если сессия уже открыта, вернуть ошибку
ЗакрытьСессию (CloseSession) – КСИДУстройства
(DeviceID)

BSTR
[IN]

Идентификатор устройства

BOOL

Заканчивает сессию работы с метками. Сессия, при наличии меток в поле считывателя, закрывается, только если параметр ИгнорироватьМеткиВПоле (IgnoreCardsInField) имеет значение Истина. Если сессия не была закрыта, то возвращается ошибка
ИгнорироватьМеткиВПоле (IgnoreCardsInField)

BOOL [IN]

Если Ложь, то при наличии в поле меток сессия не закрывается, в противном случае сессия остается открытой
КоличествоМеток (CardsCount)

LONG
[OUT]

Количество меток в поле при закрытии сессии
СессияОткрыта (SessionIsOpened) – ОКИДУстройства
(DeviceID)

BSTR
[IN]

Идентификатор устройства

BOOL

Проверяет, была ли открыта сессия на чтение/запись
НайтиМетки (FindCards) – КПРИДУстройства
(DeviceID)

BSTR
[IN]

Идентификатор устройства

BOOL

Осуществляет поиск меток в поле считывателя и возвращает количество обнаруженных меток
КоличествоМеток
(CardsCount)

LONG
[OUT]

Количество обнаруженных меток
СчитатьСледДанные (GetNextData) – КПРИДУстройства
(DeviceID)

BSTR
[IN]

Идентификатор устройства

BOOL

Считать по очереди из каждой метки данные
ИДМетки (CardID)

BSTR
[OUT]

Идентификатор метки
ДанныеМетки
(CardData)

BSTR
[OUT]

Данные, записанные в метке
ЗаписатьДанные (WriteData) – КПРИДУстройства
(DeviceID)

BSTR
[IN]

Идентификатор устройства

BOOL

Записывает переданные данные в метки, находящиеся в поле считывателя
Данные
(Data)

BSTR [IN]

Данные для записи в метки
Количество

LONG
[OUT]

Кол-во успешно прописанных меток
СобытиеОбработано
(EventProcessed) - ОК
ИДУстройства
(DeviceID)

BSTR
[IN]

Идентификатор устройства

BOOL

Оповещает драйвер о том, что событие системой было получено. Параметр " ФлагСостояния " указывает на успешность обработки.
ФлагСостояния
(StateFlag)

BOOL
[IN]

Флаг обработки события
ПодатьСигнал (Signal) – ОКИДУстройства
(DeviceID)

BSTR
[IN]

Идентификатор устройства

BOOL

Подает сигнал на устройстве длительностью, указанной в параметре (если устройство поддерживает данную возможность)
Длительность (Duration)

LONG
[IN]

Длительность сигнала в мс.
ПоддерживаетПБ (antistealBitSupported) - ОКИДУстройства
(DeviceID)

BSTR
[IN]

Идентификатор устройства

BOOL

Данная функция проверяет, поддерживает ли оборудование работу с противокражным битом
УстановитьПБ (SetantistealBit) - КПРИДУстройства
(DeviceID)

BSTR
[IN]

Идентификатор устройства

BOOL

Функция устанавливает состояние противокражного бита в состояние установлен/снят в зависимости от передаваемого значения. Если Адрес метки передается пустой строкой, то установка бита происходит у всех меток в поле считывателя
АдресМетки
(Cardaddress)

BSTR
[IN]

Идентификатор метки
Состояние
(State)

BOOL
[IN]

Режим установки/снятия противокражного бита
УстановитьПБ (SetantistealBit) - КПРИДУстройства
(DeviceID)

BSTR
[IN]

Идентификатор устройства

BOOL

Функция получает состояние противокражного бита
АдресМетки
(Cardaddress)

BSTR
[IN]

Идентификатор метки
Состояние
(State)

BOOL
[OUT]

Режим получения противокражного бита
ТестУстройства (DeviceTest)МассивЗначений
(Valuesarray)

IDispatch*
[IN]

Массив значений для настройки подключения

BOOL

Выполняет пробное подключение и опрос устройства. При успешном выполнении подключения в описании возвращается описание устройства. При отрицательном результате возвращается описание возникшей проблемы при подключении.
ДополнительноеОписание (additionalDescription)

BSTR
[OUT]

Описание результата выполнения теста

* КАРкоманды активного режима; КПР – команды пассивного режима; КС - команды сессии; ОК – общие команды

Дополнительное описание:
«МассивЗначений» (пример значений для устройства, подключаемого на последовательном порту)
Тип данных "1С:Предприятия 8" - Массив.

Наименование параметра Наличие в структуреТипы данныхОписание параметра
Порт (Port)НеобязательноLONGНомер последовательного порта
Скорость (Speed)НеобязательноLONGСкорость, на которой происходит подключение
ТипУстройства (DeviceType)НеобязательноLONGТип устройства (по способу подключения)
РазделительМетки(CardDelimiter)Обязательно BSTRСимвол, для разделения идентификатора метки и данных при передаче строки в событии «ЧтениеМеток»
ПредельноеКолвоМеток(CardsLimit)Обязательно LONGПредельное количество меток, после которого генерируется событие «ЧтениеМеток» (в соответствии с гл. 3.2 п. 2а)
Таймаут(Timeout)Обязательно LONGТаймаут, после которого при отсутствии изменения количества меток посылается событие (в миллисекундах)
МаксКоличМетокСобытия(EventMaxCardsCount)Обязательно LONGМаксимальное количество меток, передаваемое в событии

Внешние события от драйвера

Во время подключения драйвер возвращает параметр "Идентификатор устройства". Данный параметр используется в дальнейшем драйвером для указания источника события (устройства) при отправке события, а также конфигурациями для определения связанной с событием обработки обслуживания . Идентификатор устройства должен быть уникальным для каждого подключения, для этого предлагается вести сопоставление «Подключенное устройство – Идентификатор устройства», добавляя новые строки при подключении к устройству и удаляя при отключении от него. Т.е. драйвер при вызове метода Подключить() должен сформировать новый идентификатор устройства (предлагается в качестве имени использовать GUID в виду простоты его получения программным путем) и передать в выходном параметре.
При наступлении событий в драйвере в систему можно посылать сообщение о возникновении внешнего события. При посылке сообщения о внешнем событии необходимо указать: источник внешнего события (Идентификатор устройства), наименование (тип) события и данные.

Описание аргументов события чтения из меток

Имя события – "ЧтениеМеток" ("CardsReading")

Событие наступает только при открытой сессии.

При получении данных от драйвера в виде строки необходимо их разобрать, проверить и погрузить в структуру (для удобства работы прикладного уровня). Наиболее подходящей для этих целей будет структура данных "Соответствие", где Ключу сопоставляется уникальный идентификатор метки, а в поле "Значение" записываются данные, считанные из метки.

Для передачи данных используется тип данных "Строка", поэтому ниже будет определена структура передаваемой строки с целью упрощения дальнейшего разбора.

Для драйвера определена следующая структура строки для передачи данных из меток:

<ИДМетки><РазделительМетки><Данные>#13<ИДМетки><РазделительМетки><Данные>#13<ИДМетки><РазделительМетки><Данные>#13 и т.д.
(<CardID><CardDelimiter><Data>#13<CardID><CardDelimiter><Data>#13<CardID><CardDelimiter><Data>#13 etc.),
где ‘<CardDelimiter>’ (настраиваемый параметр) и ‘#13’ (символ перевода строки) – специальные символы-разделители.

Максимальное количество меток в строке – количество, передаваемое в параметре при открытии сессии. Определяет то количество меток, которое прикладное решение готово отработать в одном событии.

Описание аргументов события в активном режиме

Имя события – "МеткаВПоле" ("CardDetected")

Данные – описание события.

Событие наступает если сессия не открыта, а в поле считывателя появилась одна или несколько меток. Повторное наступление события возможно только после исчезновения всех меток из поля считывателя.

Описание аргументов общих событий

Имя события – "ОшибкаВДрайвере" ("Error")

Данные – описание ошибки.

Событие наступает, если в процессе работы драйвера возникли ошибки.


Нас находят: 1C 8 RFID метки и 1С, разработка устройств на rfid киев, сессии rfid, снятие противокражного бита, сопоставление идентификатора устройства и обслуживающего его драйвера, считыватели rfid меток для 1с бухгалтерия, Считыватели RFID-меток 1С, считыватель rfid меток, считыватель rfid меток timeout, считыватель rfid меток драйвер


Подписка на новости RSS     Добавьте в закладки Google fusion     Мы в Google+    

 

Мы ВКонтакте

 

Мы на Facebook