1С:Предприятие 8.2 /
Работа с торговым оборудованием /
Общее
Требования к разработке драйверов для считывателей RFID-меток
Описание аргументов события в активном режиме
Описание аргументов общих событий
Введение
Общий принцип работы любой системы RFID состоит в следующем. В системе всегда есть два основных компонента: это считыватель и идентификатор (RFID-метка). Считыватель излучает в окружающее пространство электромагнитную энергию. Идентификатор принимает сигнал от считывателя и формирует ответный сигнал, который принимается антенной считывателя и обрабатывается его электронным блоком.
По принципу действия системы RFID можно разделить на пассивные и активные. В более простой пассивной системе излучение считывателя постоянно во времени (не модулировано) и служит только источником питания для идентификатора. Получив требуемый уровень энергии, идентификатор включается и модулирует излучение считывателя своим кодом, который принимается считывателем.
В интерактивном режиме считыватель излучает модулированные колебания, то есть формирует запрос. Идентификатор дешифрирует запрос и при необходимости формирует ответ.
Система программ 1С:Предприятие поддерживает обмен данными с различным оборудованием RFID по согласованной технологии (рис.1).
Рис.1
Драйвер для считывателей RFID-меток должен быть реализован в соответствии с общей концепцией использования внешних компонент для взаимодействия с торговым оборудованием, подключаемым к системе программ 1С:Предприятие . Использование данного подхода позволяет упростить процесс подключения нового торгового оборудования к 1С: Предприятию .
Общие требования к драйверу:
- разработан в виде внешней компоненты (описание механизма создания внешних компонент приведено в документе « Документация по технологии создания внешних компонент » на диске ИТС в разделе « Технология создания внешних компонент » Методической поддержки 1C:Предприятия 8.1.);
- реализует описанную ниже функциональность в полном объеме;
- предоставляет определенный набор свойств и методов для возможности настройки и управления драйвером.
Названия свойств и методов должны быть русскоязычными и англоязычными (например, Порт - Port, Скорость - Speed, Сигнал() – Signal()).
Также драйвер должен поддерживать множественные подключения (в соответствии с идеологией COM технологии) и поддерживать работу с несколькими устройствами.
При возникновении ошибки в работе драйвер должен сообщить об этом и передавать описание произошедшей ошибки.
Описание работы с драйвером
Начало работы с драйвером
Система 1С:Предприятие (в дальнейшем "система") инициализирует соединение с драйвером и загружает его. Далее устанавливаются конфигурационные параметры, необходимые для работы, и происходит подключение к устройству.
Система активизирует драйвер. После этого от драйвера могут поступать сообщения о наступлении внешнего события при появлении меток в поле считывателя. При этом передача данных о метках не ведется.
Работа с драйвером предполагается в активном и пассивном режимах. Пассивный режим подразумевает, что драйвер выполняет какие-либо действия в ответ на команды от системы. При активном режиме работы драйвер должен сам послать сообщение о внешнем событии по изменению своего внутреннего состояния.
Дополнительно к активному режиму для чтения данных из меток введено понятие сессии.
Сессия – это процесс чтения и накопления данных из обнаруженных меток и передача их системе. Начало и окончание сессии определяется системой, вызовом функций драйвера.
При активном режиме и открытой сессии выполнение команд пассивного режима, а также попытки открыть еще одну сессию для того же логического устройства, должны блокироваться и драйвер должен возвращать сообщение об ошибке.
Примечание. Команды общего назначения выполняются независимо от режима и состояния сессии.
Работа с метками может осуществляться на чтение и на запись данных.
Чтение данных из меток
При пассивном режиме:
1. Дается команда на обнаружение меток в поле считывателя. В ответ возвращается количество обнаруженных RFID-меток.
2. Последовательно вызывается функция на получение данных из каждой обнаруженной метки*. Драйвер возвращает данные из меток. Команда посылается N раз, где N – количество обнаруженных меток.
* На радиочастотной метке может храниться код EPC (Electrinic Product Code, электронный код продукта). Это уникальный номер, определяющий конкретный товар (предмет).
При открытой сессии:
- Система дает команду на начало сессии на чтение.
- При появлении меток, или если метки уже находятся в поле считывателя, драйвер должен считать данные из них и передать системе. Определены следующие ситуации, когда следует передавать полученные данные из меток:
a. Достигнуто максимальное количество меток, установленное в свойствах компоненты;
Все перечисленные ситуации порождают одно и тоже внешнее событие "ЧтениеМеток". В течение сессии драйвер должен передать данные по каждой метке один единственный раз, т.е. драйвер должен "помнить", какие метки он уже передал. После отправки события драйвер должен приостановить отправку следующего и ожидать команды сверху о возможности продолжения отправки событий. Если результат обработки события положительный, то драйвер инициирует отправку следующего события, в противном случае требуется перепосылка последнего события, того, после которого драйвер приостановился. То есть из старых событий необходимо хранить только последнюю сформированную строку для отправки (при этом в драйвере при поступлении новые данные должны буферизироваться и высылаться по мере освобождения системы). Пример последовательности такой:
b. Нет больше меток в поле считывателя;
c. В поле считывателя ненулевое количество меток и их количество не меняется в течение промежутка времени, установленного в свойствах компоненты;
d. Команда от системы на окончание сессии – в штатном режиме все метки к моменту окончания заполнения документа покинут поле считывателя, и передача данных из меток не понадобится.
• Отправка События 1;
• Получен ответ СобытиеОбработано(Истина);
• Отправка События 2;
• Получен ответ СобытиеОбработано(Истина);
• Отправка События 3;
• Получен ответ СобытиеОбработано(Ложь);
• Отправка События 3;
• Получен ответ СобытиеОбработано(Ложь);
• Отправка События 3;
• Получен ответ СобытиеОбработано(Истина);
• Отправка События 4;
• Получен ответ СобытиеОбработано(Истина); - По окончании процесса приема меток система дает команду на окончание сессии чтения. При этом драйвер не должен более передавать данные о метках наверх и не запоминать их. Также драйвер должен очистить информацию об обнаруженных метках, накопленных в течение сессии.
Запись данных в метки
Запись меток протекает в пассивном режиме:
- Посылается команда на отключение активного режима (если был включен).
- Дается команда на обнаружение меток в поле считывателя. В ответ возвращается количество обнаруженных RFID-меток.
- Вызывается функция на запись данных в метки. Драйвер записывает переданные данные во все обнаруженные метки. При этом производит проверку, что все метки были успешно записаны. В противном случае возвращает ошибку записи, и передает количество успешно прописанных меток.
- Восстанавливается предыдущий режим.
Состояния переходов между режимами
Состояния могут изменяться только последовательно:
"Пассивный" <=> "Активный" <=> "Сессия".
Все прочие попытки некорректного изменения состояния должны приводить к ошибке.
Например, нельзя из пассивного режима открыть сессию или переключить в пассивный режим, пока открыта сессия.
Завершение работы
По окончании работы с драйвером система закрывает соединение с устройством.
Соединение с драйвером закрывается только при завершении работы системы, либо при пересоздании объекта, связанного с драйвером.
Описание свойств
Описание свойств | ||||
---|---|---|---|---|
Название (alias) | Тип | Описание | ||
Чтение | Запись | |||
Описание методов
Описание методов | |||||
---|---|---|---|---|---|
Название (alias) – режим работы * | Параметры | Описание | |||
Имя | Тип | Описание | |||
ПолучитьОшибку (GetLastError) – ОК | ОписаниеОшибки (ErrorDescription) | BSTR [OUT] | Описание ошибки | LONG | Возвращает код и описание последней произошедшей ошибки |
Подключить (Open) – ОК | МассивЗначений (Valuesarray) | IDispatch* | Массив значений для настройки подключения | BOOL | Подключает устройство для использования |
ИДУстройства (DeviceID) | BSTR | Идентификатор устройства | |||
Отключить (Close) – ОК | ИДУстройства (DeviceID) | BSTR | Идентификатор устройства | BOOL | Отключает устройство |
ВключитьАктивныйРежим (EnableactiveMode) - КПР | ИДУстройства (DeviceID) | LONG | Идентификатор устройства | BOOL | Включает активный режим |
ВыключитьАктивныйРежим (DisableactiveMode) - КАР | ИДУстройства (DeviceID) | BSTR | Идентификатор устройства | BOOL | Выключает активный режим |
ОткрытьСессию (OpenSession) – КАР | ИДУстройства (DeviceID) | BSTR | Идентификатор устройства | BOOL | Начинает сессию получения меток (из всех обнаруженных меток прочитанные данные передаются системе). Если сессия уже открыта, вернуть ошибку |
ЗакрытьСессию (CloseSession) – КС | ИДУстройства (DeviceID) | BSTR | Идентификатор устройства | BOOL | Заканчивает сессию работы с метками. Сессия, при наличии меток в поле считывателя, закрывается, только если параметр ИгнорироватьМеткиВПоле (IgnoreCardsInField) имеет значение Истина. Если сессия не была закрыта, то возвращается ошибка |
ИгнорироватьМеткиВПоле (IgnoreCardsInField) | BOOL [IN] | Если Ложь, то при наличии в поле меток сессия не закрывается, в противном случае сессия остается открытой | |||
КоличествоМеток (CardsCount) | LONG | Количество меток в поле при закрытии сессии | |||
СессияОткрыта (SessionIsOpened) – ОК | ИДУстройства (DeviceID) | BSTR | Идентификатор устройства | BOOL | Проверяет, была ли открыта сессия на чтение/запись |
НайтиМетки (FindCards) – КПР | ИДУстройства (DeviceID) | BSTR | Идентификатор устройства | BOOL | Осуществляет поиск меток в поле считывателя и возвращает количество обнаруженных меток |
КоличествоМеток (CardsCount) | LONG | Количество обнаруженных меток | |||
СчитатьСледДанные (GetNextData) – КПР | ИДУстройства (DeviceID) | BSTR | Идентификатор устройства | BOOL | Считать по очереди из каждой метки данные |
ИДМетки (CardID) | BSTR | Идентификатор метки | |||
ДанныеМетки (CardData) | BSTR | Данные, записанные в метке | |||
ЗаписатьДанные (WriteData) – КПР | ИДУстройства (DeviceID) | BSTR | Идентификатор устройства | BOOL | Записывает переданные данные в метки, находящиеся в поле считывателя |
Данные (Data) | BSTR [IN] | Данные для записи в метки | |||
Количество | LONG | Кол-во успешно прописанных меток | |||
СобытиеОбработано (EventProcessed) - ОК | ИДУстройства (DeviceID) | BSTR | Идентификатор устройства | BOOL | Оповещает драйвер о том, что событие системой было получено. Параметр " ФлагСостояния " указывает на успешность обработки. |
ФлагСостояния (StateFlag) | BOOL | Флаг обработки события | |||
ПодатьСигнал (Signal) – ОК | ИДУстройства (DeviceID) | BSTR | Идентификатор устройства | BOOL | Подает сигнал на устройстве длительностью, указанной в параметре (если устройство поддерживает данную возможность) |
Длительность (Duration) | LONG | Длительность сигнала в мс. | |||
ПоддерживаетПБ (antistealBitSupported) - ОК | ИДУстройства (DeviceID) | BSTR | Идентификатор устройства | BOOL | Данная функция проверяет, поддерживает ли оборудование работу с противокражным битом |
УстановитьПБ (SetantistealBit) - КПР | ИДУстройства (DeviceID) | BSTR | Идентификатор устройства | BOOL | Функция устанавливает состояние противокражного бита в состояние установлен/снят в зависимости от передаваемого значения. Если Адрес метки передается пустой строкой, то установка бита происходит у всех меток в поле считывателя |
АдресМетки (Cardaddress) | BSTR | Идентификатор метки | |||
Состояние (State) | BOOL | Режим установки/снятия противокражного бита | |||
УстановитьПБ (SetantistealBit) - КПР | ИДУстройства (DeviceID) | BSTR | Идентификатор устройства | BOOL | Функция получает состояние противокражного бита |
АдресМетки (Cardaddress) | BSTR | Идентификатор метки | |||
Состояние (State) | BOOL | Режим получения противокражного бита | |||
ТестУстройства (DeviceTest) | МассивЗначений (Valuesarray) | IDispatch* | Массив значений для настройки подключения | BOOL | Выполняет пробное подключение и опрос устройства. При успешном выполнении подключения в описании возвращается описание устройства. При отрицательном результате возвращается описание возникшей проблемы при подключении. |
ДополнительноеОписание (additionalDescription) | BSTR | Описание результата выполнения теста |
* КАР– команды активного режима; КПР – команды пассивного режима; КС - команды сессии; ОК – общие команды
Дополнительное описание:
«МассивЗначений» (пример значений для устройства, подключаемого на последовательном порту)
Тип данных "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")
Данные – описание ошибки.
Событие наступает, если в процессе работы драйвера возникли ошибки.
Цены и режим обучения: бухгалтерские курсы
Курс 1С:Бухгалтерия «1С 8.2 для профессионалов»
Курс "Бухгалтерский учет + 1С:Бухгалтерия 8.2 для начинающих"
Тренинг-семинар «Как получить работу бухгалтера»
Курсы бухгалтеров с трудоустройством
Другие материалы по теме:
флагсостояния, активный, пассивный, отправка, идентификатор устройства, устройство, подключение, событие, драйвер, передача, ошибки, система, источник, работа, обработка, изменения, результат, параметры, предприятие, данные, значение, 8.2, документ
Материалы из раздела: 1С:Предприятие 8.2 / Работа с торговым оборудованием / Общее
Другие материалы по теме:
Общесистемные механизмы и принципы
Требования к разработке драйверов для сканеров штрихкодов
Требования к разработке драйверов для считывателей магнитных карт
Нас находят: что возвращает считыватель rfid, считыватель рмис и 1с, считыватель меток, считыватель rfid меток драйвер, считыватель rfid меток timeout, считыватель rfid меток, Считыватели RFID-меток 1С, считыватели rfid меток для 1с бухгалтерия, сопоставление идентификатора устройства и обслуживающего его драйвера, снятие противокражного бита
Мы на Facebook