Строка форматирования RFID-вывода
Справочник по строке форматирования считывателей ODNFC и ODRFID: коды форматированного вывода, режимы ASCII/DEC/HEX, вывод UID и блоков памяти, примеры и режим AT-команд.
Строка форматирования задаёт, какие данные считыватель вернёт с карты и в каком виде. С её помощью можно выбрать UID или область памяти, изменить порядок байтов, добавить постоянный текст и исключить ненужные данные. Преобразование выполняет сам считыватель до передачи результата.
Строка задаётся через программу-конфигуратор, AT-команды или веб-интерфейс — способ зависит от модели и прошивки считывателя.

ODRFIDKit и ODRFIDKit Web показывают UID и доступную память карты. Для чтения и записи секторов нужны ODRFID-M или ODRFID-N; ODRFID-E работает только с идентификаторами меток 125 кГц.
Примеры содержимого карт в ODRFIDKit




Коды форматированного вывода
| Код | Описание |
|---|---|
a | режим вывода ASCII (байт выводится как символ, только если он в диапазоне 32 «пробел» — 126 «~») |
d | десятичный режим (каждый байт — число 0…255) |
h | шестнадцатеричный режим в нижнем регистре (каждый байт как hh, h — 0..9,a..f) |
H | шестнадцатеричный режим в верхнем регистре (каждый байт как HH, H — 0..9,A..F) |
U* | вывести UID целиком |
U~ | вывести UID целиком в обратном порядке байт |
UN:M | вывести байты UID с номера N по M включительно |
UN | вывести байт UID номер N |
Ur | вывести UID как одно десятичное число с обратным порядком байтов; 4-байтовое значение дополняется до 10 цифр |
Uc | вывести 4-байтовый UID как Wiegand 26: трёхзначный Facility Code, запятая и пятизначный Card Number |
Ud | то же представление Wiegand 26 с точкой между полями |
BK%* | вывести блок K целиком (отсчёт с нуля; размер зависит от типа карты — 4/16 байт) |
BK%~ | вывести блок K целиком в обратном порядке байт |
BK%N:M | вывести часть блока K |
BK%N | вывести байт N блока K |
\t | символ табуляции |
\n | символ конца строки |
S | вывести SAK карты |
e | десятичный номер метки 125 кГц: Card Number для HID Prox или последние 3 байта EM-Marine, 10 цифр с ведущими нулями |
E | поля метки 125 кГц через точку: Facility Code и Card Number для HID Prox или 3 + 5 цифр для EM-Marine |
D | протокольный десятичный номер: объединённые поля HID Prox, расширенный номер EM-Marine или UID HF-карты как little-endian число |
P | идентификатор карты для устройств версии 3.0 и старше с EMV: PAN для EMV-совместимых карт, UID для остальных. Поддерживает все постфиксы кода U; PAN всегда выводится цифрами в ASCII (префиксы H, d игнорируются). Если EMV не поддерживается — работает как U |
Дополнительно
Любой другой ASCII-символ выводится как есть. Чтобы вывести зарезервированный
символ (например, B, U, S), поставьте перед ним \. Для вывода самого
символа \ укажите его дважды: \\. Неподдерживаемые конкретным считывателем
команды выводятся «как есть».
Режим по умолчанию — шестнадцатеричный. Регистр букв зависит от настройки
считывателя Capitalize. В командах с диапазоном N:M отсчёт идёт с нуля.
Если конечный индекс M меньше начального N, байты выводятся в обратном
порядке. Например, U0:3 выводит первые четыре байта по порядку, а U3:0 —
в обратном.
Допустимая длина строки зависит от модели и версии прошивки. В ODRFID-M/N/E
команда AT+F= принимает до 31 байта данных; у некоторых других моделей предел
составляет 57 байт. Предельная длина сформированного результата — 128 байт. Если
AT-команда возвращает ERROR, сократите формат и проверьте ограничение для
своей модели. Подробнее — в
руководстве по AT-интеграции.
Примеры
| Код | Результат |
|---|---|
\H\ello, hU* | Hello, 8d430ba4, где 8d430ba4 — UID карты |
Oll\e\h, hU~ | Olleh, a40b438d |
\H\ello\tHU0:1\tU2:3 | Hello→8D43→0BA4, где → — табуляция |
U2:3-B1%3:4 | 0BA4-4242 для MIFARE Classic; 3B56-42 для MIFARE Ultralight (размер блока 4 байта) |
Ur | 3107602554 для UID 7A403AB9 |
Uc | 058,16506 для UID 7A403AB9 |
Режим AT-команд
Устанавливаем формат «Hello, + UID в HEX нижнего регистра», сохраняем и
подносим карту:
> AT+F=\H\ello, hU*
OK
> AT+P
OK
# подносим карту, устройство выводит:
Hello, dcb43d07
Дополнительные материалы
- UID, напечатанные номера и совместимость с Wiegand.
- Программирование на Lua.
- ODNFC-RS485 Modbus — пример преобразования UID в напечатанный номер.
История обновлений ODNFC на Lua
Если установлена версия ниже 1.7.0, сначала обновите её до 1.7.0, а затем до более новой версии. Перед обновлением отключите сторожевой таймер и сотрите пользовательскую программу.
1.8.2
- Улучшена работа устройства и исправлены ошибки.
- Для устройств, работающих с метками 125 кГц, добавлено обнаружение типовых клонов EM-Marine.
1.8.1
Улучшения:
- Новый веб-интерфейс.
- Улучшена работа RFID-модулей MFRC и EM-Marine.
- Улучшена работа Modbus.
- Оптимизирована работа устройства.
1.7.0
Улучшения:
- улучшена работа MFRC и EM-Marine;
- в раздел «Редактор» добавлен простой файловый менеджер;
- улучшена работа сетевых модулей;
- оптимизирована работа устройства.
Исправлена ошибка в HTTP-заголовке Content-Length, из-за которой интерфейс не
работал в некоторых операционных системах.
1.6.2
- Улучшена работа MFRC и EM-Marine.
- Улучшена библиотека Modbus.
- Оптимизирована работа устройства.
- В ODNFC-LAN-LUA добавлена регистрация обработчика успешного чтения.
1.6.1
- Добавлена запись в зашифрованные карты MIFARE Classic.
- Упрощена инициализация RFID: используются значения по умолчанию для каждой
платы, поэтому изменён вызов основного класса и больше не требуются многие
Lua-обёртки из
rfid.lua. - Добавлена функция
mfrc522.scan()— упрощённая версия базового класса для типовых операций. - Исправлены библиотеки EM-Marine и HID.
- Оптимизирована библиотека Modbus.
- Исправлена работа TCP-сервера.
1.6.0
Улучшения:
- обновлён редактор кода: устранена проблема с переводами строк в новых версиях Firefox;
- в веб-сервер добавлена поддержка HTTPS и WebSocket;
- добавлены новые классы для работы с RFID-метками;
- добавлена работа с NDEF и счётчиками Ultralight;
- добавлены встроенные библиотеки
cbor,cobs,mlib, Heatshrink иmicrotar; - расширены библиотеки
osc,net,cutils,utils,cpuиemmarine; - LuaSocket больше не входит в прошивку;
- добавлена загрузка сжатых Heatshrink-библиотек Lua;
- добавлен WebSocket REPL для отладки через веб-IDE или расширение VS Code;
- улучшена консоль: Unicode, автодополнение и история;
- расширена поддержка Modbus;
- Paho MQTT заменён собственной реализацией uMqtt;
- ускорена работа устройства и веб-интерфейса;
- выполнены другие небольшие исправления и оптимизации.
Исправлены ошибки, из-за которых после мягкой перезагрузки Wi-Fi запускался через раз, а RFID-модуль мог не инициализироваться.
1.5.0
Улучшения:
- новый интерфейс и редактор кода;
- добавлена библиотека
tinycobs; - добавлены функции
net.tcp.*; - добавлены функции
eprint,hprintиwprintдля вывода в окно «Инфо»; - трассировка ошибки загрузки теперь показывается в окне «Инфо»;
- расширены возможности Telnet, SSH отключён;
- в режиме восстановления Wi-Fi работает без пароля;
- добавлена поддержка BLE-маяков на устройствах с BLE;
- NTP запускается с задержкой 15 секунд, чтобы сеть успела установиться.
Исправлены режим статического Ethernet-адреса и установка яркости NeoPixel.
1.4.0
- Улучшен встроенный веб-сервер.
- Выполнены небольшие изменения для повышения стабильности.
- Исправлена утечка памяти при HTTP-запросах из Windows.
Известная проблема этой версии: режим статического Ethernet-адреса в настройках не работает. Для обхода проблемы в начало пользовательской программы добавляли:
net.en.setup(
net.packip(Settings.get("net_ip")),
net.packip(Settings.get("net_mask")),
net.packip(Settings.get("net_gw")),
net.packip(Settings.get("net_dns"))
)
net.en.start()
1.3.2
- В
os.df()добавлен дополнительный параметр. - Выполнены небольшие изменения для повышения стабильности.
- Исправлена утечка памяти при запросе метрики в интерфейсе.
Известная проблема этой версии: HTTP-запросы из Windows приводят к утечке памяти. После изменения настроек рекомендовалось закрыть браузер, перезагрузить устройство и не выполнять периодические HTTP-запросы.
1.3.1
- Серийный номер синхронизирован с DataMatrix на корпусе модуля, если он есть.
1.3
- Библиотека
Telegram.luaдобавлена в прошивку. - Библиотека LuaSocket теперь распространяется отдельно.