Действующий
Когда аргументы команды устанавливаются для уплотнения данных, по ИСО/МЭК 15962 автоматически выбирают наиболее эффективную схему уплотнения для каждого из представленных элементов данных. Это позволяет библиотекам гибко пользоваться алфавитно-цифровыми или цифровыми кодовыми структурами, с тем лишь неудобством, что при более сложных наборах знаков будет требоваться большее пространство для кодирования на радиочастотной метке. Также это дает возможность для более коротких кодов использовать (в целом) меньшее количество байтов.
Определяемый приложением аргумент можно использовать для кодирования зашифрованных извне данных, интерпретация которых известна только управляющей системе. Наиболее общим является кодирование с использованием поддержки в данной части ИСО 28560 индекса идентификатора объекта (OID) со значением 2 относительного идентификатора объекта (Relative-OID). Так как это битовая последовательность, никакого предварительного кодирования не требуется. Другое использование определяемого приложением аргумента возникает при кодировании ISIL для относительных идентификаторов со значениями 3 и 11. В этом случае код ISIL должен быть предварительно закодирован в соответствии с правилами, определенными в приложении С, а затем кодироваться в соответствии с ИСО/МЭК 15962 по правилам, определяемым приложением. Подобным образом, определяемый приложением аргумент применяют для кодирования относительного идентификатора объекта со значением 5 для элемента данных "Тип использования", со значением 19 для "Медиа-формат (другой)" и со значением 20 для "Этап цепи поставки".
Строку в формате UTF-8 используют для представления знаков, не входящих в набор знаков по умолчанию по ИСО/МЭК 8859-1. В основном это используется для языков с наборами знаков, отличными от набора латинских знаков N 1. Данная схема уплотнения должна объявляться только тогда, когда строку знаков в формате UTF-8 кодируют в элементы со значениями относительных идентификаторов 15, 16, 17 и 26.
Схемы уплотнения идентифицируют в радиочастотной метке 3-битовым кодом, который включают как часть компонента-предшественника (см. 7.4.5.2). Весь набор схем уплотнения и их коды приведены в таблице 5.
Код | Название | Описание |
000 | Определяется приложением | В соответствии с определением схемы приложением |
001 | Целочисленная | Целочисленная |
010 | Цифровая | Строка цифровых символов (от "0" до "9") |
011 | 5-битные коды | Буквы верхнего регистра |
100 | 6-битные коды | Буквы верхнего регистра, цифры и т.п. |
101 | 7-битные коды | US ASCII |
110 | Строка октетов | Неизмененная 8-битовая (по умолчанию в соответствии с ИСО/МЭК 8859-1) |
111 | Строка UTF-8 | Внешнее уплотнение в соответствии с ИСО/МЭК 10646 |
Кодирование относительного идентификатора объекта и данных объекта в радиочастотной метке производят, следуя специальной последовательной структуре, определенной в ИСО/МЭК 15962. В следующих двух подразделах определяются основные правила, имеющие отношение к данной части ИСО 28560.
Примечание - В ИСО/МЭК 15962 определяются и другие правила, не описанные здесь, например для кодирования всего идентификатора объекта. Если они используются для кодирования любых данных, совместимый декодер должен иметь возможность декодировать идентификатор объекта и данные.
Структура кодированного набора данных для относительного идентификатора объекта со значениями от 1 до 14 состоит из следующих компонентов:
- компонент-предшественник, задаваемый одним байтом, который в данном случае используют для кодирования схемы уплотнения и относительного идентификатора объекта;
Рисунок 4 - Набор данных по ИСО/МЭК для относительного идентификатора объекта со значениями от 1 до 14
Большинство элементов данных, определенных в данной части ИСО 28560, имеют значение относительного идентификатора от 1 до 14. Они непосредственно кодируются в байт-предшественник (см. таблицу 6), что снижает требуемый для кодирования объем памяти.
Бит смещения в байте-предшественнике принимает значение "1", если только байт смещения записывается в радиочастотной метке. Пример использования байта смещения приведен в 7.4.5.4.
Байт-предшественник содержит только 4 бита для кодирования идентификатора объекта. Это дает возможность только для кодирования относительного идентификатора объекта со значениями от 1, который кодируют как 0001 , до 14, который кодируют как 1110 . Для значений идентификатора объекта от 15 до 127, из которых некоторые используются в данной части ИСО 28560, последние четыре бита байта-предшественника принимают значения 1111. Это означает, что относительный идентификатор объекта должен явно кодироваться как отдельный компонент (один байт) в наборе данных, как показано на рисунке 5.
Рисунок 5 - Набор данных по ИСО/МЭК для относительного идентификатора объекта со значениями от 15 до 127
Кодируемое значение относительного идентификатора объекта представляет собой значение со смещением на - 15. Это означает, что значение относительного идентификатора объекта 15 кодируется как 15-15 = 0 = 00 . Наибольшее значение относительного идентификатора объекта 127 может быть закодировано указанным способом как 127 - 15 = 112 = 70 .
В зависимости от требований применения один или более элементов данных может быть заблокирован. Аргумент блокировки объекта в команде приложения фактически сообщает, что весь набор данных должен быть заблокирован. Это позволяет избежать того, что одни компоненты будут неизменяемыми, а другие изменяемыми. В соответствии с описанием протокола радиоинтерфейса по ИСО/МЭК 18000-3 Mode 1, разрешается осуществлять блокирование поблочно. В общем случае любой набор данных, требующий блокировки, должен иметь такую схему расположения по блокам, что байт-предшественник должен быть в первом байте блока, и следующий набор данных также должен начинаться с первого байта блока. Правила кодирования приводят к необходимости перегруппировки данных и вставки байта смещения сразу за байтом-предшественником. Смещение задается нулевыми байтами (обычно со значением 00 , но 80 также допустимо), которые добавляются после последнего байта данных с уплотнением в конец до границы блока.
Каждое из значений байта-заполнителя или нулевых байтов имеет один и тот же статус. Значение, кодируемое в байте смещения, определяет число пропущенных байтов после данных с уплотнением для нахождения байта-предшественника следующего кодированного набора данных. Нулевой байт со значением 80 предпочтителен для минимизации числа операций радиоинтерфейса при изменении или удалении данных.
В процессе декодирования предполагается принимать радиочастотные метки с одним или другим кодированным значением байта-заполнителя и даже с различными значениями этих байтов на одной и той же метке.
Хотя вся обработка осуществляется автоматически программным обеспечением, реализующим правила кодирования по ИСО/МЭК 15962, следующие описания включены в стандарт для лучшего понимания некоторых фактов, которые необходимо принимать во внимание:
- если набор данных непосредственно предшествует набору данных, который должен быть заблокирован, но при этом сам он должен остаться разблокированным, правила кодирования требуют, чтобы этот набор данных заканчивался на границе блока. Это должно гарантировать, что при блокировке не будут затронуты завершающие байты незаблокированного набора данных. Данный процесс может привести к необходимости вставки байта смещения и изменения значения байта-предшественника;
- если два или более смежных наборов данных должны быть блокированы, выравнивание блока требуется только в начале первого заблокированного набора данных и в конце последнего заблокированного набора данных. Исходя из этого, должно быть понятно, что большая эффективность кодирования и меньшее число байтов могут быть получены при совместной группировке наборов данных, которые необходимо блокировать;
- если блок памяти заблокирован, он не может быть разблокирован или удален, набор данных в радиочастотной метке становится неизменным.
Независимо от того, один набор данных или несколько наборов данных должны быть закодированы, или есть набор данных, который необходимо добавить или изменить, кодируемые байты форматируются в логической памяти в структуру, соответствующую конкретной архитектуре радиочастотной метки. Поскольку размер блока и число блоков отличаются у разных производителей и даже у разных версий модели, это форматирование является важной особенностью правил кодирования для достижения совместимости радиочастотных меток. Это позволяет рассматривать любые радиочастотные метки в качестве кандидатов на использование для кодирования в соответствии с данной частью ИСО 28560, если для них заявлено соответствие ИСО/МЭК 18000-3 Mode 1, но они отличаются между собой в деталях, разрешенных стандартом радиоинтерфейса.
Пример 3 - Некоторые метки могут передавать несколько блоков по радиоинтерфейсу в операциях записи и чтения, другие только по одному блоку.
После заполнения логической памяти один или несколько блоков записываются через радиоинтерфейс. Любые блоки, требующие блокировки, отмечаются так, что устройство считывания вызывает последовательную серию команд блокирования радиоинтерфейса.
При считывании данных из радиочастотной метки логическая память заполняется блок за блоком. Декодирование радиочастотной метки с методом доступа без каталога производится последовательно по относительным идентификаторам объектов, но объекты данных нуждаются в декодировании, только если их относительные идентификаторы выбраны в команде приложения.
В ИСО/МЭК 15961-1 приведена команда, позволяющая считывать набор или наборы данных в первой позиции без считывания других данных радиочастотной метки. Эта команда должна использоваться для достижения более быстрых операций считывания наборов данных, расположенных в низшем блоке. Использование этой команды предназначено для начального считывания первичного идентификатора предмета учета и индекса идентификатора объектов.