Тем, кто занимается темой RFID-зации, будет интересно как реальный пример работы.
Компонента успешно работает на одном подмосковном складе.
Принцип работы
Компонента генерирует два события при работе:
- IN — при попадании метки в поле видимости антенны;
- OUT — при выходе метки из поля видимости антенны.
При этом нужно помнить, что OUT сработает в том случае, если метка не будет видна антенне более времени, указанного в методе SetInOutTimeout (см. ниже). Т.е. физически метка может остаться на антенне, но антенна может ее не увидеть и сгенерировать событие OUT.
Таким образом, например, решается классическая задача проверки заказа/накладной, когда необходимо проверить правильность сборки заранее известного списка товаров. Так же на базе этих событий можно сделать инвентаризацию, поиск товара и т.д.
Компонента написана на C#. Использует .NET 3.5.
Описание интерфейса компоненты
Регистрация компоненты
Перед началом работы компоненты необходимо зарегистрировать ее с ключом tlb:
RegAsm.exe «PATHRFIDConnector.dll» /tlb
Или запустить register.bat (см. вложение), указав в нем путь до файла RegAsm
Инициализация компоненты
Имя класса: AddIn.RFIDConnector
Пример работы:
// Инициализация класса...
ИмяКласса = "AddIn.RFIDConnector";
Попытка
ПодключитьВнешнююКомпоненту(ИмяКласса);
Объект = Новый COMОбъект (ИмяКласса);
Исключение
Сообщить("Ошибка загрузки внешней компоненты " + ИмяКласса + ". " + ОписаниеОшибки());
Закрыть();
КонецПопытки;
Подключение/отключение устройства
SetInOutTimeout(Timeout) — установка периода видимости метки, после которого генерируется событие OUT (в мс.);
SetInOutPeriod(Period) — установка периода таймера: с какой частотой опрашивать метки на антеннах (в мс.);
Connect(IP) — подключиться к устройству с указанием IP-адреса устройства.
Пример работы:
// Задаем таймаут исчезания меток...
Объект.SetInOutTimeout(500);
// Задаем период проверки меток...
Объект.SetInOutPeriod(150);
// Подключаемся к устройству...
Объект.Connect("192.168.3.89");
Disconnect() — отключиться от устройства
Пример работы:
// Отключаем устройство...
Объект.Disconnect();
Запуск/остановка таймера опроса антенны
Start() — запуск таймера: начало работы с устройством
Пример работы:
Попытка
Объект.Start();
Сообщить("Сканирование запущено!");
Исключение
Сообщить("Ошибка запуска сканирования! Текст ошибки: " + ОписаниеОшибки());
КонецПопытки;
Stop() — остановка таймера
Пример работы:
Попытка
Объект.Stop();
Сообщить("Сканирование остановлено!");
Исключение
Сообщить("Ошибка остановки сканирования! Текст ошибки: " + ОписаниеОшибки());
КонецПопытки;
Обработка внешнего события
ВнешнееСобытие(Источник, Событие, Данные) — стандартное событие 1С
Источник — всегда «RFIDConnector»
Событие — всегда «InOutEvent»
Данные — данные в формате: «In/Out:Tag:Antenna», например: IN:302DBB7711C0004000000034:1;
Пример работы (спсМетки — список значений, спсРазвернуть_ — функция, разбирающая строку на подстроки через разделитель — см. пример RFIDConnectorTest.epf во вложении):
// фрмВнешнееСобытие - внешнее событие...
Процедура фрмВнешнееСобытие(Источник, Событие, Данные)
// Для отладки...
Сообщить("Внешнее событие: " + Источник + ", " + Событие + ", " + Данные);
// Получаем данные в виде списка...
спсДанные = спсРазвернуть_(Данные, ";");
// Идем по элементам списка...
Для Каждого спсЭлемент Из спсДанные Цикл
// Получаем параметры из каждой строки...
спсПараметры = спсРазвернуть_(спсЭлемент.Значение, ":");
// Если количество параметров 3 - обрабатываем данные...
Если спсПараметры.Количество() = 3 Тогда
ТипСобытия = СокрЛП(спсПараметры[0]);
Метка = СокрЛП(спсПараметры[1]);
Антенна = СокрЛП(спсПараметры[2]);
прМетка = Метка + ":" + Антенна;
// В зависимости от типа события...
Если ВРег(ТипСобытия) = "IN" Тогда
спсМетки.Добавить(прМетка);
ИначеЕсли ВРег(ТипСобытия) = "OUT" Тогда
спсМетка = спсМетки.НайтиПоЗначению(прМетка);
Если спсМетка <> Неопределено Тогда
спсМетки.Удалить(спсМетка);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Контакты:
Если у Вас возникли вопросы или пожелания по доработке/внедрению данной системы, а также любые другие вопросы, связанные с RFID (метки, считыватели, интеграция, разработка, внедрение, обслуживание, консультации и т.д.), Вы можете обратиться в компанию Кей-Софт (www.keysoft.su), Контактное лицо: Алексей Денисенко (доб. 102), denisenko@keysoft.su.
Автор а можно в личку, очень нужна помощь в проекте.
Без проблем
Можно на почту: karpov@keysoft.su
Для такого подойдет ?https://ru.aliexpress.com/item/ACR122u-NFC-Reader-Writer-13-56Mhz-RFID-Copier-Duplicator-5-pcs-UID-Cards-5pcs-UID-Tags/32762117342.html
Данная обработка только для RFID-считывателя Impinj R420.