Статус документа
Статус документа

ГОСТ Р ИСО/МЭК 24778-2010 Информационные технологии (ИТ). Технологии автоматической идентификации и сбора данных. Спецификация символики штрихового кода Aztec Code

     7.3 Кодирование и структура данных в сообщении


Сообщение данных представляет собой последовательность кодовых слов, каждое размером В битов, кодируемых от ядра символа по "спирали" по часовой стрелке в наружном направлении. Эти кодовые слова включают в себя D кодовых слов, точно по числу необходимых для кодирования исходных данных в сообщении, к которым добавляют все контрольные кодовые слова, необходимые для заполнения символа. Указанные кодовые слова следуют в обратном порядке (см. 7.3.3).

7.3.1 Кодирование исходного сообщения

Преобразование последовательности знаков исходных данных в последовательность кодовых слов выполняют в два этапа. На первом этапе все знаки исходных данных последовательно преобразуют в соответствующие двоичные значения, при этом (при необходимости) используют кодовые значения знаков регистра (Shift) и/или знаков фиксации (Latch). Таким образом получают протяженный двоичный поток (строку) входных данных. На втором этапе указанную строку данных преобразуют в последовательность кодовых слов из битов каждое с соблюдением правила исключения, запрещающего вхождение кодовых слов, состоящих только из 0 или только из 1.

7.3.1.1 Преобразование в двоичный поток данных

В таблице 2 приведены значения, присвоенные знакам ASCII в нескольких кодовых наборах, а также управляющим знакам регистра и фиксации для переключения между кодовыми наборами. Кодовые наборы Upper (прописные буквы) и Lower (строчные буквы) содержат прописные и строчные алфавитные буквы соответственно. Кодовый набор Mixed (смешанные знаки) состоит из управляющих знаков ASCII и специальных графических знаков. Кодовый набор Punctuation (знаки пунктуации) состоит из специальных графических знаков и их комбинаций. Кодовый набор Digit (цифры) содержит цифры и некоторые специальные графические знаки. За исключением знака "FLG(n)" представленного ниже, все знаки в таблице 2, не имеющие соответствующих десятичных значений ASCII, представляют функции сдвига регистра или фиксации для перехода к другим кодовым наборам.


Таблица 2 - Высокоуровневое кодирование сообщений в символике Aztec Code

_________________          

* Кодовый набор Upper - набор, содержащий прописные буквы латинского алфавита.     
     Кодовый набор Lower - набор, содержащий строчные буквы латинского алфавита.      
     Кодовый набор Mixed - набор, содержащий управляющие знаки ASCII и специальные графические знаки.     
     Кодовый набор Punctuation - набор, содержащий управляющие знаки ASCII, специальные графические знаки и их комбинации, а также знаки пунктуации.     
     Кодовый набор Digit - набор, содержащий цифры и некоторые специальные графические знаки.



Кодирование сообщения начинают в кодовом наборе Upper, а затем, по мере необходимости, переводят в другие кодовые наборы с использованием знаков фиксации (фиксация кодовых наборов с помощью знаков U/L, L/L, M/L, P/L или D/L) или сдвига регистра (переход в другой кодовый набор только для одного знака с помощью знаков U/S или P/S). В кодовых наборах Upper, Lower, Mixed и Punctuation каждый знак, знаки фиксации или регистра представлены в двоичном потоке данных 5-битовыми значениями, в то время как в кодовым наборе Digit каждый знак, знак фиксации или регистра представлены в кодовом наборе 4-битовыми значениями. Во всех случаях двоичные значения последовательно соединяют друг с другом, начиная со старшего значащего бита.

Режим Byte Shift (B/S) представляет собой особый случай переключения регистра в текстовую строку 8-битовых байтов с динамической кодировкой длины. За знаком B/S следует 5-битовое значение: если оно отличается от нуля, то в нем кодируют число последующих байтов от 1 до 31; если оно равно нулю, то следующие 11 битов кодируют число байтов минус 31. Таким образом, режим Byte Shift позволяет кодировать как изолированные знаки расширенного набора ASCII 8-битовых знаков и управляющие знаки, так и протяженные строки данных в байтах, возможно, кодируемые во всем символе. По завершении строки байтов кодирование возвращается к тому кодовому набору, из которого был активизирован режим B/S.

Знак-указатель FLG(n) в графе "Punctuation" таблицы 2 представляет собой специальный флаг с активизацией "на месте", который используют для представления различных знаков, не относящихся к данным, поддерживаемых многими стандартизованными символиками. В двоичном потоке за значением знака FLG(n) следуют три дополнительных бита, кодирующих аргумент "n" в двоичном виде. Таким образом, значение n находится в диапазоне от нуля до шести (значение семь является недействительным).

Знак FLG(0) представляет собой знак FNC1 - не относящийся к данным флаг, присутствующий в символике Code 128. Если знак FNC1 предшествует первому знаку данных в сообщении, он указывает на структурирование данных в соответствии с правилами GS1 с использованием идентификаторов применения и влияет на значение знака - модификатора идентификатора символики. Если знак FNC1 следует непосредственно за одной прописной или строчной буквой или двумя цифрами в начале сообщения, то в этом случае он сигнализирует о применении другого стандартного отраслевого формата, определяемого предшествующими данными, и тоже влияет на значение знака - модификатора идентификатора символики. Если знак FNC1 находится в любой другой позиции данных, то он выполняет функцию разделителя полей, а его место в выходной строке занимает управляющий знак ASCII (<GS>) с десятичным значением 29.

Знаки FLG(1)-FLG(6) представляют собой флаг интерпретации в расширенном канале ECI (Extended Channel Interpretation), при обнаружении которого устройство считывания, настроенное на использование интерпретации в расширенном канале, вставляет в выходной поток данных последовательность "\nnnnnn", т.е. знак "ОБРАТНАЯ ДРОБНАЯ ЧЕРТА", за которым следует число из шести цифр (указанное устройство считывания также дублирует знак "ОБРАТНАЯ ДРОБНАЯ ЧЕРТА" в закодированных данных и задает соответствующее значение знаку - модификатора идентификатора символики). Аргумент n в данном случае указывает, сколько из шести цифр явно закодировано в символе с использованием кодового набора Digit. При этом предполагают, что остальными цифрами являются начальные нули. Например, ECI 000123 кодируют в форме FLG(3)123, после чего кодирование возвращают к кодовому набору, из которого был активизирован знак FLG(n).

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