ГОСТ ISO/IEC 15438-2018. Межгосударственный стандарт. Информационные технологии. Технологии автоматической идентификации и сбора данных. Спецификация символики штрихового кода PDF417
5.10 Формирование кодовых слов коррекции ошибок
Кодовые слова коррекции ошибок формируют с помощью приведенной ниже процедуры и вычисляют на основе значений всех кодовых слов данных, включая дескриптор длины символа и все кодовые слова-заполнители. Последовательность кодовых слов должна быть представлена в виде:
dn-1, dn-2,...d0,
где dn-1 - дескриптор длины символа.
Полином данных символа представляет собой
d(x) = dn-1xn-1 + dn-2xn-2 +...+ d1x + d0.
Ниже приведено математическое описание вычисления кодовых слов коррекции ошибок для конкретного потока данных и выбранного уровня коррекции ошибок. Все арифметические действия должны быть выполнены по модулю 929.
Кодовые слова коррекции ошибки являются дополнением коэффициентов остатка, получающегося в результате деления полинома данных символа d(x), умноженного на xk, на порождающий полином g(x). Отрицательные значения отражаются в поле Галуа GF (929) прибавлением 929 до получения значения большего или равного нулю.
Для вычисления коэффициентов для кодовых слов коррекции ошибки k, необходимых для уровня коррекции ошибок, используют порождающий полином:
,
где gk(x) - порождающий полином;
x - неизвестная переменная;
k - общее число кодовых слов коррекции ошибок;
- коэффициент показателей степеней x, образованный порождающим полиномом gk(x).
Пример вычисления коэффициентов приведен в приложении Q.
В приложении F приведены все значения коэффициентов, необходимые для кодирования символа PDF417 для всех уровней коррекции ошибок.
Кодовые слова коррекции ошибок должны вычисляться в соответствии с приведенным ниже алгоритмом с использованием следующих обозначений:
di - кодовое слово данных dn - 1 ... d0;
Ej - кодовые слова коррекции ошибок Ek - 1 ... E0;
- коэффициент показателей степени числа x, из порождающего полинома (пояснения приведены ниже, а значения - в приложении F);
t1, t2, t3 - временные переменные.
Алгоритм:
a) обозначают последовательность кодовых слов данных dn - 1, dn - 2 ... d0;
b) устанавливают в исходное состояние кодовые слова коррекции ошибки E0, ..., Ek - 1 для значения, равного нулю;
c) для каждого кодового слова данных (data) di = dn - 1 ... d0:
НАЧАЛО t1 = (di + Ek - 1) mod 929 для каждого кодового слова коррекции ошибки Ej = Ek - 1 ... E1: НАЧАЛО t3 = 929 - t2 Ej = (Ej - 1 + t3) mod 929 КОНЕЦ t3 = 929 - t2 E0 = t3 mod 929 КОНЕЦ |
d) для каждого кодового слова коррекции ошибки Ej = E0 ... Ek - 1 подсчитывают дополнение:
НАЧАЛО
если Ej /= 0
Ej = 929 - Ej
КОНЕЦ
Пример вычисления кодовых слов коррекции ошибок приведен в приложении Q.
Альтернативная процедура формирования кодовых слов коррекции ошибок с использованием схемы деления приведена в приложении R.
