В настоящем подразделе приведено общее описание порядка кодирования, в следующих подразделах - более подробное описание. Пример кодирования для символа уровня ЕСС 050 приведен в приложении Q.
Преобразование данных пользователя в символ версии ЕСС 000-140 проводят в следующем порядке:
Этап 1. Кодирование данных
Проводят анализ входных данных пользователя для определения совокупности различных типов знаков, подлежащих кодированию. Для максимальной эффективности уплотнения должна быть выбрана оптимальная схема кодирования самого низкого уровня, способная закодировать данные. Если пользователь не устанавливает размер матрицы, то выбирают наименьший размер для размещения данных. Результатом этого этапа является двоичный поток закодированных данных (Encoded Data Bit Stream).
Этап 2. Формирование префикса данных
Двоичный поток префикса данных формируют из поля идентификатора формата, поля величины контроля циклической избыточности (CRC) и двоичного поля длины данных. Указанный двоичный поток префикса данных добавляют в виде префикса к двоичному потоку закодированных данных для создания незащищенного двоичного потока (Unprotected Data Bit Stream).
Этап 3. Обнаружение и исправление ошибок
Обрабатывают незащищенный двоичный поток в соответствии с установленным пользователем алгоритмом сверточного кодирования для создания защищенного двоичного потока (Protected Bit Stream). Этот этап не выполняют для символов уровня ЕСС 000.
Этап 4. Построение головной и конечной меток
К защищенному двоичному потоку добавляют в виде префикса головную метку, содержащую только двоичное поле контроля и исправления ошибок (ЕСС). К защищенному двоичному потоку присоединяют также конечную метку, содержащую биты-заполнители (нулевые биты). Защищенный двоичный поток, к которому добавлены головная и конечная метки, называют нерандомизированным двоичным потоком (Unrandomised Bit Stream).
Этап 5. Шаблонная рандомизация
Нерандомизированный двоичный поток обрабатывают с помощью алгоритма рандомизации и создают рандомизированный двоичный поток (Randomised Bit Stream).
Этап 6. Размещение модулей в матрице
Модули размещают в матрице так, чтобы образовался шаблон поиска. Рандомизированный двоичный поток размещают в матрице помодульно в соответствии с алгоритмом размещения модулей данных (приложение Н). Различные двоичные потоки в процессе кодирования приведены на рисунке 7.
Рисунок 7 - Двоичные потоки в процессе кодирования символов версии ЕСС 000-140