Документация UART API, протокол взаимодействия хоста с RFID-считывателями SAUK
1. Бинарные команды (Short Protocol)
Бинарные команды используют префикс 0xA0 0x00 и завершаются символами 0x0D 0x0A.
Описание: Управление непрерывной инвентаризацией.
Параметры:
| Параметр | Тип | Описание | Значения |
|---|---|---|---|
| start | byte | Запуск/остановка инвентаризации | 0x01 = старт, 0x00 = стоп |
| save | byte | Сохранить конфигурацию | 0x01 = сохранить, 0x00 = не сохранять |
Ответ: OK или {"result":"ok"} (в зависимости от настройки notify_uart_json).
Пример запроса (запуск):
Пример запроса (остановка):
Описание: Запуск однократной инвентаризации (если непрерывное сканирование отключено).
Параметры: Нет.
Ответ: RFID-метки в зоне видимости в формате, определенном настройками UART.
Пример запроса:
Описание: Диагностика UART-соединения.
Параметры: Фиксированные значения 0x01 и 0x02.
Ответ: Системное сообщение "success" в логах. Устанавливает флаг uart_check_res = 1.
Пример запроса:
Описание: Обработка статуса от контроллера рампы (RAMP).
Параметры:
| Позиция | Тип | Описание |
|---|---|---|
| [3] | byte | Адрес RFID-считывателя (должен совпадать с m_nModbusRTU_address) |
| [4] | byte | Тип сообщения (0x01 = статус) |
| [6] | byte | Состояние сенсоров |
| [7] | byte | Флаг "Пандус занят" |
| [8] | byte | Состояние светофора 1 |
| [9] | byte | Состояние светофора 2 |
Ответ: Нет прямого ответа. Обновляет внутренние переменные системы.
2. JSON команды
Все JSON-команды должны быть правильно сформированными и завершаться символами новой строки (\n\r).
Описание: Чтение памяти RFID-метки (EPC, TID, USER).
Параметры:
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
| cmd | string | Команда | Да (значение "tag") |
| param | string | Параметр команды | Да (значение "read") |
| bank | int | Банк памяти: 0=Reserved, 1=EPC, 2=TID, 3=USER | Да |
| block | int | Начальный блок для чтения | Да |
| count | int | Количество блоков для чтения (макс. MAX_TID_DATA_REQUEST/2) | Да |
Ответ: Нет прямого ответа. Система отправляет данные метки в формате, определенном настройками UART.
Пример запроса (чтение TID):
Описание: Запуск однократного сканирования (если не запущено непрерывное).
Параметры:
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
| cmd | string | Команда | Да (значение "act") |
| param | string | Параметр команды | Да (значение "inventory_once") |
Ответ: RFID-метки в зоне видимости.
Пример запроса:
Описание: Получить тип устройства.
Параметры:
| Параметр | Тип | Описание | Обязательный |
|---|---|---|---|
| cmd | string | Команда | Да (значение "get") |
| param | string | Параметр команды | Да (значение "type") |
Ответ: {"cmd":"get","param":"type","value":"D|DW|A"}
Описание: Получить информацию о версии прошивки и конфигурации.
Ответ: JSON объект с ключами: result и version.
Пример ответа:
Описание: Получить текущую дату и время.
Ответ: JSON объект с текущей датой и временем.
Описание: Получить конфигурацию периферии.
Ответ: JSON объект с настройками периферии, отправленный через UART.
Описание: Установка различных параметров системы.
Параметры:
| Параметр | Тип | Описание | Примеры значений параметра (param) |
|---|---|---|---|
| cmd | string | Команда | "set" |
| param | string | Имя параметра для установки | "tagidentity.validate_ms", "rfidconfig.infiniteinventory", "peripheryconfig.beep_on_start" |
| value | разный | Новое значение параметра | Зависит от параметра (int, bool, string) |
Ответ: {"result":"ok"} при успешном выполнении.
Важно: При изменении параметров устанавливается флаг needSaveStruct, который указывает на необходимость сохранения конфигурации в файловой системе.
Пример запроса (включение звука при обнаружении метки):
Пример запроса (установка времени валидации метки):
3. Форматы ответов
Формат ответа зависит от настройки notify_uart_json в конфигурации RFID-модуля.
JSON формат (notify_uart_json = 1 или 2)
Ответы возвращаются в виде JSON-объектов.
Текстовый формат (notify_uart_json = 0 или 3)
Ответы возвращаются в виде простых текстовых строк.
Примечания
Синтаксис: Все команды должны быть правильно сформированы. Неправильный синтаксис JSON приведет к ответу {"result":"syntax error"}.
Безопасность: Некоторые команды могут выполняться только при определенных условиях (например, чтение памяти метки невозможно при запущенной непрерывной инвентаризации).
Сохранение конфигурации: Изменения параметров через команду set автоматически устанавливают флаг needSaveStruct, который указывает системе на необходимость сохранения конфигурации в постоянную память.
Ограничения: Размер JSON-документа ограничен значением HOST_BUFFERSIZE. Убедитесь, что ваши команды не превышают этот лимит.