Технический прогресс не стоит на месте, появляющиеся новые технологии со временем дешевеют и становятся доступны практически всем желающим. Как пример можно привести мобильные телефоны. Середина 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" Тогда
Техлист = Стр.Значение;
КонецЕсли;
КонецЦикла;
//обработка полученных данных ...
КонецЕсли;
КонецПроцедуры