Как стать автором
Обновить

Беспроводные метки NFC

Время на прочтение4 мин
Количество просмотров16K


Технический прогресс не стоит на месте, появляющиеся новые технологии со временем дешевеют и становятся доступны практически всем желающим. Как пример можно привести мобильные телефоны. Середина 80-ых — начало 90-ых были переносные таксофоны с ручками или кирпичи стоимостью несколько тысяч $, конец 90-ых — большого размера трубки, с торчащими антеннами со стоимостью от 100$ Такую же аналогию можно провести с NFC метками, используемыми в учетных целях.

  • Уникальный идентификатор nfc метки можно занести в типовой регистр штрих кодов(или доп.свойств) и использовать со смартфона при заполнении, например, инвентаризации административно хозяйственного отдела.
  • В более сложном варианте можно записывать uid номенклатуры и часть названия прямо в метку NFC, при таком варианте связь метки и номенклатуры можно хранить только в метках.
  • Также в случае использования билетов, возможно дешифровать напечатанный номер на билете или же записывать номер заново на карту в открытом формате. Это позволит иметь механизм ручного ввода при повреждении метки, аналогично штрихкодам. Универсальное приложение чтения NFC читает и печатный номер билета и срок действия.

В идеальном варианте и оборудование и расходники (метки) могут ничего не стоить при условии, что у работника имеется смартфон с поддержкой NFC и сам работник не против его использования. Ну и, конечно же, удалось раздобыть необходимое количество использованных билетов. На Ali стоимость от 6 рублей с лишним за метку.



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

Для обмена можно использовать http или web сервисы, ботов телеграмм или иное месенджероподобное решение.

Описанное нигде не подглядывал, видел когда-то статью про запись пароля wifi на билет, а также имел опыт работы с ТСД (штрих.кодами rdp на винмобайл), огромным и дорогим, на мой взгляд неудобным. С тех пор было желание повторить что-то подобное на более удобном смартфоне.

Группы из 4 байтов называются страницами. Первые несколько страниц, как правило заняты служебной информацией, на одном из скриншотов можно увидеть ID метки NFC на первых двух страницах.



Кроме ID также может содержаться информация о заблокированных readonly байтах. А также масса другой информации все зависит от типа метки и поддерживаемых возможностей. Также служебная информация может быть записана в конце метки на последних страницах. Более подробно описанное можно увидеть программе для чтения меток, например TagInfo.



Рекомендуется записывать данные с 8 страницы для пустых — купленных меток.

Для билетов рекомендуется записывать с 16 страницы. Длина имени справочника не должна превышать 60 символов, в случае использования билета.

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

Данная разработка позволит быстро интегрировать в ваше мобильное приложение функционал чтения записи NFC.a меток.

Возможные варианты использования:
Складской учет номенклатуры, упаковок, ячеек, мест хранения.
Учет ОС, МБП: шкафов, столов, компьютеров.
Мобильный пропускной пункт.
И так далее.

Исходники приложения доступны по ссылке https://github.com/PloAl/RfIdTool

Приложение является «служебным» и не имеет основной activity, также нет в меню приложений android. Запуск происходит из других приложений, туда же передаются считанные данные или передаются данные для записи в метку.

Ниже на картинке видна, полупрозрачная область «Запись метки NFC» это единственная activity приложения.



Пример использование в android приложении:

protected void nfcStart(boolean read, String readedId) {
    
    if (read)) {
        Intent intent = new Intent("com.ploal.rfidtool.NFCREAD");
        intent.putExtra("IdLabel", readedId); //множественное чтение, предыдущий id метки 
    }
    else{
        Intent intent = new Intent("com.ploal.rfidtool.NFCWRITE");
        intent.putExtra("PageNumber", PageNumber); //глоб. переменная номер страницы 
        intent.putExtra("WriteString", WriteString); //глоб. переменная текст для записи
    }
    startActivityForResult(intent, 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (null != data) {
        String event = data.getStringExtra("event");
        String uid = data.getStringExtra("uid");
        String result = data.getStringExtra("result");
        String text = data.getStringExtra("text");
        String[] techArr = data.getStringArrayExtra("tech");
        //обработка полученных данных ...
    }
}

Пример использование в мобильном приложении(клиенте) 1с:

&НаКлиенте
Процедура ЗапускПриложенияNFC(Чтение=Истина,ПрочитанныйID="")
    ЗПМУ = Новый ЗапускПриложенияМобильногоУстройства();
        
    Если Чтение Тогда
        ЗПМУ.Действие = "com.ploal.rfidtool.NFCREAD";
        ЗПМУ.ДополнительныеДанные.Добавить("IdLabel",ПрочитанныйID);
    Иначе
        ЗПМУ.Действие = "com.ploal.rfidtool.NFCWRITE";
        ЗПМУ.ДополнительныеДанные.Добавить("PageNumber",""+НомерСтраницы);
        ЗПМУ.ДополнительныеДанные.Добавить("WriteString",ТекстЗаписи);
    КонецЕсли;
    
    Если ЗПМУ.ПоддерживаетсяЗапуск() Тогда
        ЗПМУ.Запустить(Истина);	
        Событие = "";
        Для Каждого Стр Из ЗПМУ.ДополнительныеДанные Цикл
            Если Стр.Ключ = "event" Тогда
                Событие = Стр.Значение;
            ИначеЕсли Стр.Ключ = "uid" Тогда
                УИД = Стр.Значение;	
            ИначеЕсли Стр.Ключ = "result" Тогда
                Результат = Стр.Значение; //HEX строка
            ИначеЕсли Стр.Ключ = "text" Тогда
                Текст = Стр.Значение;	
            ИначеЕсли Стр.Ключ = "tech" Тогда
                Техлист = Стр.Значение;	
            КонецЕсли;
        КонецЦикла;
        //обработка полученных данных ...
    КонецЕсли;	
КонецПроцедуры 
Теги:
Хабы:
Всего голосов 9: ↑8 и ↓1+7
Комментарии14

Публикации

Истории

Работа

Swift разработчик
25 вакансий
iOS разработчик
16 вакансий
Java разработчик
336 вакансий

Ближайшие события

12 – 13 июля
Геймтон DatsDefense
Онлайн
14 июля
Фестиваль Selectel Day Off
Санкт-ПетербургОнлайн
19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн