Замечание: Символ стопового знака содержит 13 модулей (4 темных полосы и 3 светлых). Любой другой символ содержит 11 модулей (3 темных полосы и 3 светлых), начинаясь с темной полосы и заканчиваясь светлой полосой. Ширина полос варьируется от 1 модуля до 4. В столбце «Ширина элемента» под рубриками B и S проставлены количества модулей в темных и светлых полосах, соответственно.
-
Виды кодируемых множеств знаков
Ранее уже было сказано, что символика Code 128 содержит три множества знаков – A,B,C.
Множество знаков A включает все стандартные заглавные буквенно-цифровые знаки английского языка, арифметические знаки, знаки пунктуации и знаки управления (т.е. все знаки со значениями ASCII от 0 до 95). Кроме того, множество А содержит 7 специальных знака символики Code 128.
Множество знаков В включает все стандартные заглавные и строчные буквенно-цифровые знаки английского языка, арифметические знаки и знаки пунктуации (т.е. все знаки со значениями ASCII от 32 до 127). Кроме того, множество B содержит 7 специальных знака символики Code 128.
Множество знаков C включает 100 пар цифр от 0 до 99. Кроме того, множество С содержит 3 специальных знака символики Code 128.
3.4 Специальные знаки
Специальные знаки символики Code 128 (FNC1, FNC2, FNC3, FNC4, Code A, Code B, Code C, SHIFT) не имеют эквивалентов во множестве ASCII и не являются знаками данных. Их роль – правильно интерпретировать символы штрихового кода читающими устройствами.
Знаки кодировок (Code A, Code B, Code C) и знак SHIFT используются для перехода от одного кодируемого множества к другому внутри штрихового кода. Этот переход применим ко всем последующим знакам до конца штрихового кода, если только не встретится другой знак кодировки или знак SHIFT .
Знак SHIFT изменяет кодируемое множество от А к В или наоборот для одного знака следующего за знаком SHIFT. Все последующие знаки относятся к кодируемому множеству, определенному предыдущим знаком кодировки.
Функциональные знаки (FNC1, FNC2, FNC3, FNC4) определяют особые инструкции для устройства считывания штрихового кода:
а) знак FNC1 выполняет несколько функций в символике UCC/EAN-128, которые будут описаны далее в этом документе. Самая главная роль этого знака – «FNC1 в первой позиции после стартового знака указывает на то, что данный символ выполнен в символике UCC/EAN-128».
б) знак FNC2 (дополнительное сообщение) дает команду устройству считывания штрихового кода временно сохранить данные, считанные с символа, содержащего знак FNC2, и передать их как начало данных, считанных со следующего символа. Это может использоваться для конкатенации нескольких символов перед их передачей. Этот знак может быть размещен в любом месте символа. Когда очень важна последовательность передачи данных, то необходимо обеспечить чтение символов в правильной последовательности.
в) знак FNC3 (инициализация) дает команду устройству считывания интерпретировать данные символа, содержащего этот знак, как инструкции для инициализации или перепрограммирования устройства. Считываемые данные не передаются устройством считывания. Этот знак может быть размещен в любом месте символа.
г) знак FNC4 не используется в UCC*EAN системе. В символике Code 128 этот знак используется для расширения множества знаков ASCII (значения от 128 до 255), как это определено стандартом ISO 8859-1 или, в противном случае, спецификациями приложения. Если встречается только знак FNC4, то то значение 128 добавляется к значению ASCII следующего знака. Знак SHIFT может следовать за знаком FNC4 если необходимо изменить кодировку для последующего символа. Следующие знаки данных возвращаются к прежней кодировке. Если последовательно используются два знака FNC4, то значение 128 добавляется к ASCII значениям всех последующих знаков данных, пока не встретятся два последовательных знака FNC4 или не будет достигнут конец символа. Если на протяжении этой последовательности встретится один знак FNC4, то он используется для возвращении в стандартную кодировку ASCII только одного символа. Знаки SHIFT и знаки кодировок могут оказывать свой обычный эффект на знаки такой последовательности. По умолчанию, расширенные значения ASCII (128-255) соответствуют второй половине Latin Alphabet 1 стандарта ISO 8859-1, если только приложение не определяет альтернативное множество знаков, соответствующих байтам со значениями от 128 до 255.
-
Вспомогательные знаки
К вспомогательным знакам символики Code 128 (а значит и UCC*EAN/128) можно отнести три стартовых знака – Start A, Start B, Start C , один стоповый знак – Stop, контрольный знак и стартовый набор, состоящий из двух знаков.
Стартовые знаки определяют соответствующие кодируемые множества, используемые в начале символа.
Start A начинает кодировать данные в кодировке A.
Start B начинает кодировать данные в кодировке B.
Start C начинает кодировать данные в кодировке C. Этот стартовый знак используется если данные, включая идентификатор применения, начинаются с четырех или более цифр.
Стоповый знак – общий для всех кодировок.
Стартовые знаки и стоповый знак не передается декодером.
Символ контрольного знака всегда должен быть включен последним символом перед стоповым знаком. Приложение 1 определяет алгоритм его вычисления. Контрольный знак не должен быть представим, в читаемом для человека, виде и не передается декодером.
Стартовый шаблон UCC/EAN-128 состоит из двух знаков:
Start (A, B или C) и функционального знака FNC1.
Шаблон отличает UCC/EAN-128 cимволы от более общих символов Code 128. Другими словами, символ Code 128, начинающийся с двух знаков стартового шаблона, всегда является UCC*EAN символом.
Функциональный знак FNC1 может встречаться в штриховом коде как разделительный знак между строками данных переменной длины (см. UCC/EAN Идентификатор применения) и изредка как контрольный знак.
4. АЛГОРИТМ ДЕКОДИРОВАНИЯ СИМВОЛА
Системы, читающие штриховой код, предназначены для чтения несовершенных символов, насколько это допускают их алгоритмы. В этом разделе описан приведенный в стандарте ISO/IEC NP 15416 алгоритм, используемый для вычисления оценки чтения символа.
Алгоритм содержит следующие шаги для декодирования каждого штрихового кода одного знака:
1) Проводятся восемь измерений ширины p,e1,e2,e3,e4,b1,b2 и b3 (Рисунок 5)
b1 b2 b3
e1 e3
e2 e4
p
Рисунок 5 Размеры, используемые для определения качества печати знака
2) Преобразуется размер e1 в значение E1 по следующему правилу:
если 1.5*p/11<=e1<2.5*p/11 то E1=2
если 2.5*p/11<=e1<3.5*p/11 то E1=3
если 3.5*p/11<=e1<4.5*p/11 то E1=4
если 4.5*p/11<=e1<5.5*p/11 то E1=5
если 5.5*p/11<=e1<6.5*p/11 то E1=6
если 6.5*p/11<=e1<7.5*p/11 то E1=7
В противном случае считаем, что знак содержит ошибку.
Эта процедура проводится для размеров e2,e3,e4.
3) Находится знак в таблице 2 по значениям E1,E2,E3,E4. Если значение знака, приведенное в столбце 1 таблицы 2, не совпадает со значением исследуемого знака, то этот знак ошибочен.
-
Извлекается из соответствующей строки таблицы 2 значение V - сумма темных полос символа, определенного для этого знака
-
Проверяется, что
(V - 1.75)*p/11 < (b1+b2+b3)<(V + 1.75)*p/11
В противном случае знак считается ошибочным.
Эти вычисления, косвенно использующие паритет знака, позволяют найти все ошибки декодирования, связанные с разбросом значений ширины модуля данного знака.
Используя, описанные выше, пять шагов, декодируется символ первого знака. Если это стартовый знак, то продолжается декодирование в прямом направлении, если это не стартовый знак а стоповый, то декодируются последующие символы в обратном направлении. После декодирования всех символов проверяется правильность стартового, стопового и контрольного знака.
Следующим шагом транслируются символы знаков в соответствующие знаки данных множеств А,В и С, учитывая вспомогательные знаки, встречающиеся в символе.
Дополнительно производится проверка всех остальных параметров символа.
Замечание: В алгоритме оценка проводится, используя измерения от одной стороны границы темной полосы до соответствующей стороны границы другой темной полосы.
Таблица 2. Расстояния между гранями символа Code 128.
|
E1
|
E2
|
E3
|
E4
|
V
|
|
E1
|
E2
|
E3
|
E4
|
V
|
00
|
3
|
3
|
4
|
4
|
6
|
54
|
4
|
2
|
2
|
3
|
6
|
01
|
4
|
4
|
3
|
3
|
6
|
55
|
4
|
2
|
4
|
5
|
6
|
02
|
4
|
4
|
4
|
4
|
6
|
56
|
6
|
4
|
2
|
3
|
6
|
03
|
3
|
3
|
3
|
4
|
4
|
57
|
4
|
3
|
3
|
2
|
6
|
04
|
3
|
3
|
4
|
5
|
4
|
58
|
4
|
3
|
5
|
4
|
6
|
05
|
4
|
4
|
3
|
4
|
4
|
59
|
6
|
5
|
3
|
2
|
6
|
06
|
3
|
4
|
4
|
3
|
4
|
60
|
4
|
5
|
5
|
2
|
8
|
07
|
3
|
4
|
5
|
4
|
4
|
61
|
4
|
3
|
5
|
5
|
4
|
08
|
4
|
5
|
4
|
3
|
4
|
62
|
7
|
4
|
2
|
2
|
6
|
09
|
4
|
3
|
3
|
3
|
4
|
63
|
2
|
2
|
3
|
4
|
4
|
10
|
4
|
3
|
4
|
4
|
4
|
64
|
2
|
2
|
5
|
6
|
4
|
11
|
5
|
4
|
3
|
3
|
4
|
65
|
3
|
3
|
2
|
3
|
4
|
12
|
2
|
3
|
4
|
5
|
6
|
66
|
3
|
3
|
5
|
6
|
4
|
13
|
3
|
4
|
3
|
4
|
6
|
67
|
5
|
5
|
2
|
3
|
4
|
14
|
3
|
4
|
4
|
5
|
6
|
68
|
5
|
5
|
3
|
4
|
4
|
15
|
2
|
4
|
5
|
4
|
6
|
69
|
2
|
3
|
4
|
3
|
4
|
16
|
3
|
5
|
4
|
3
|
6
|
70
|
2
|
3
|
6
|
5
|
4
|
17
|
3
|
5
|
5
|
4
|
6
|
71
|
3
|
4
|
3
|
2
|
4
|
18
|
4
|
5
|
5
|
3
|
6
|
72
|
3
|
4
|
6
|
5
|
4
|
19
|
4
|
3
|
2
|
4
|
6
|
73
|
5
|
6
|
3
|
2
|
4
|
20
|
4
|
3
|
3
|
5
|
6
|
74
|
5
|
6
|
4
|
3
|
4
|
21
|
3
|
4
|
5
|
3
|
6
|
75
|
6
|
5
|
3
|
3
|
4
|
22
|
4
|
5
|
4
|
2
|
6
|
76
|
4
|
3
|
2
|
2
|
4
|
23
|
4
|
3
|
3
|
4
|
8
|
77
|
5
|
4
|
4
|
2
|
8
|
24
|
4
|
2
|
3
|
4
|
6
|
78
|
6
|
5
|
2
|
2
|
4
|
25
|
5
|
3
|
2
|
3
|
6
|
79
|
4
|
7
|
5
|
2
|
6
|
26
|
5
|
3
|
3
|
4
|
6
|
80
|
2
|
2
|
3
|
6
|
6
|
27
|
4
|
3
|
4
|
3
|
6
|
81
|
3
|
3
|
2
|
5
|
6
|
28
|
5
|
4
|
3
|
2
|
6
|
82
|
3
|
3
|
3
|
6
|
6
|
29
|
5
|
4
|
4
|
3
|
6
|
83
|
2
|
5
|
6
|
3
|
6
|
30
|
3
|
3
|
3
|
3
|
6
|
84
|
3
|
6
|
5
|
2
|
6
|
31
|
3
|
3
|
5
|
5
|
6
|
85
|
3
|
6
|
6
|
3
|
6
|
32
|
5
|
5
|
3
|
3
|
6
|
86
|
5
|
2
|
3
|
3
|
6
|
33
|
2
|
2
|
4
|
5
|
4
|
87
|
6
|
3
|
2
|
2
|
6
|
34
|
4
|
4
|
2
|
3
|
4
|
88
|
6
|
3
|
3
|
3
|
6
|
35
|
4
|
4
|
4
|
5
|
4
|
89
|
3
|
3
|
3
|
5
|
8
|
36
|
2
|
3
|
5
|
4
|
4
|
90
|
3
|
5
|
5
|
3
|
8
|
37
|
4
|
5
|
3
|
2
|
4
|
91
|
5
|
3
|
3
|
3
|
8
|
38
|
4
|
5
|
5
|
4
|
4
|
92
|
2
|
2
|
2
|
5
|
6
|
39
|
3
|
2
|
4
|
4
|
4
|
93
|
2
|
2
|
4
|
7
|
6
|
40
|
5
|
4
|
2
|
2
|
4
|
94
|
4
|
4
|
2
|
5
|
6
|
41
|
5
|
4
|
4
|
4
|
4
|
95
|
2
|
5
|
5
|
2
|
6
|
42
|
2
|
3
|
3
|
4
|
6
|
96
|
2
|
5
|
7
|
4
|
6
|
43
|
2
|
3
|
5
|
6
|
6
|
97
|
5
|
2
|
2
|
2
|
6
|
44
|
4
|
5
|
3
|
4
|
6
|
98
|
5
|
2
|
4
|
4
|
6
|
45
|
2
|
4
|
4
|
3
|
6
|
99
|
2
|
4
|
4
|
5
|
8
|
46
|
2
|
4
|
6
|
5
|
6
|
100
|
2
|
5
|
5
|
4
|
8
|
47
|
4
|
6
|
4
|
3
|
6
|
101
|
4
|
2
|
2
|
5
|
8
|
48
|
4
|
4
|
4
|
3
|
8
|
102
|
5
|
2
|
2
|
4
|
8
|
49
|
3
|
2
|
4
|
6
|
6
|
103
|
3
|
2
|
5
|
5
|
4
|
50
|
5
|
4
|
2
|
4
|
6
|
104
|
3
|
2
|
3
|
3
|
4
|
51
|
3
|
4
|
4
|
2
|
6
|
105
|
3
|
2
|
3
|
5
|
6
|
52
|
3
|
4
|
6
|
4
|
6
|
Stopa
|
5
|
6
|
4
|
2
|
6
|
53
|
3
|
4
|
4
|
4
|
8
|
Stopb
|
3
|
2
|
2
|
4
|
6
|
Замечание: Для стопового знака в таблице указаны значения между гранями темных полос, при считывании штрихового кода в прямом направлении (STOPa) и в обратном направлении (STOPb).
5. ТРЕБОВАНИЯ К КАЧЕСТВУ СИМВОЛА
Стандарт ISO/IEC NP 15416 определяет методологию измерений и оценки качества штриховых кодов. Символы Code 128 могут быть оценены по этому стандарту. Алгоритм, приведенный в предыдущей главе, может использоваться для оценки параметров «кодируемости» и « декодируемости» символов по стандарту ISO/IEC NP 15416.
Для символов UCC/EAN-128 минимальный уровень качества определен в следующей главе.
5.1 Декодируемость символьного знака
Декодируемость является мерой близости значений, вычисленных по алгоритму декодирования, к теоретическим значениям величин символа.
Для вычисления значения декодируемости символьного знака V применяется следующая схема вычислений (дополнение к алгоритму, приведенному в ISO/IEC NP 15416):
Вычисляем значение V1 по формуле
V1=K/(S/2*N)
Где: K – наименьшая величина между измерением и значением порога
N = 11 (число модулей в символьном знаке)
S = ширина знака
Вычисляем значение V2 по формуле
V2=(1.75-(ABS((W*11/S)-M))/1.75
Где: M – число темных полос в знаке
W = ширина всех темных полос в знаке
S = ширина знака
ABS – математическая операция нахождения абсолютной величины
Окончательно: V =min (V1, V2)
Замечание: так как стоповый знак содержит дополнительную темную полосу, то вычисление значения декодируемости для этого символа проводится дважды – сначала для первых шести левых элементов, а затем для шести правых элементов, считанных справа налево. Оба этих множества элементов эквивалентны по ширине стандартному символу.
-
Спокойные зоны (светлые границы)
Спокойные зоны (светлые границы) справа и слева от символа UCC/EAN-128 являются обязательными. Обе зоны имеют минимальную ширину в 10 модулей. Стандарт ISO/IEC NP 15416 разрешает использовать критерии (вида годный/негодный) в качестве дополнительных уточнений параметров символа. В случае символики UCC/EAN – 128 принято, что минимальный размер светлых границ равен 10 модулям, а символ считается годным, помимо других требований, когда отражательная способность символа на любом сканере оценивается (по стандарту ISO/IEC NP 15416) величинами:
если светлая граница больше или равна 10*Z, то оценка равна 4(А),
если светлая граница меньше 10*Z , то оценка равна 0(F),
где Z – среднее значение ширины всех узких (в один модуль) темных и светлых полос.
-
Передаваемые данные
Передаваемые данные декодером символа Code 128 содержат байтовые значения знаков данных. Поток данных может предваряться идентификатором символики FNC1 (байтовое значение – 29 (GS)).
Стартовые и стоповый знаки, знаки кодировок, SHIFT, а также символ контрольного знака не передаются.
В системе UCC/EAN особо оговаривается передача функционального знака FNC1 (в соответствии с приложением 2 к стандарту ISO/IEC WD 15417):
-
Символ FNC1 может передаваться как символ контрольного знака,
-
Символ FNC1, находящийся в третьей или в следующих позициях, передается как ASCII символ 29 (GS)
-
Символы, использующие символ FNC1 в первой позиции , должны иметь допустимый идентификатор символики,
-
Когда символ FNC1 используется в первой позиции он не должен быть представлен в передаваемом сообщении, хотя его присутствие отмечается присутствием значения модификатора 1 в идентификаторе символики.
6. ПАРАМЕТРЫ, ОПРЕДЕЛЯЕМЫЕ СИСТЕМОЙ EAN*UCC
6.1 Размер символа
Ширина модуля (X) варьируется в пределах от минимального (0.5 mm.) до максимального - 1.016 mm (0.040 in).
Размер модуля остается постоянным на протяжении всего символа.
Высота темных полос в символе равна 32 mm (1.25 in). Высота темных полос может варьироваться в зависимости от специфических требований приложения.
Ширина символа зависит от количества кодируемых знаков – N- всего (11*N + 46):
1 стартовый знак *11 модулей = 11
FNC1 * 11 модулей= 11
1 символ контрольного знака * 11 модулей = 11
1 стоповый знак * 11 модулей = 11
N символов знаков данных * 11 модулей = 11*N
Замечание: В число кодируемых знаков N входят все дополнительные знаки (знак SHIFT и знаки кодировок).
Кодировка C позволяет кодировать две цифры в один символ. Таким образом, числовые данные могут кодироваться с двойной плотностью в кодировке C.
Минимальная ширина светлой зоны слева и справ символа равна 10 модулям.
С учетом светлых границ ширина символа равна (11*N +66) модулей.
Максимальная длина символа зависит от двух факторов: от физической длины и от количества кодируемых знаков, включая дополнительные знаки.
Длина любого символа в UCC/EAN-128 должна быть в границах:
-
Физическая длина, включая светлые границы, не должна превышать 165 mm (6.5 in),
-
Максимальное число кодируемых знаков – 48, включая идентификаторы применения и FNC1, когда он используется в качестве разделительного знака, но исключая все дополнительные знаки и символ контрольного знака.
Перевод данных, выраженных в штриховом коде, в символы читаемые человеком показывается выше или ниже штрихового кода. Символ контрольного знака не является частью данных и его перевод не показывается. Точное место символов читаемых человеком и используемые шрифты для их представления в символе UCC/EAN-128 не определяются. Однако знаки должны быть разборчивы (например,
выполнены в шрифте OCR-B) и очевидно привязаны к символу. Светлые границы не затрагиваются.
Идентификаторы применения должны четко распознаваться. Это достигается помещением идентификаторов применения в круглые скобки.
Замечание: Скобки не являются частью данных и не кодируются в штриховой символ.
Параметры для определения оценки качества символа определяются в согласии со стандартом ISO/IEC NP 15416. Оценка должна включать уровень оценки, значение апертуры и длину волны света, используемого для измерений.
Минимальная оценка качества для UCC/EAN-128 символа равна:
1.5 / 10 / 670
где 1.5 – уровень оценки
10 –номер значения апертуры ( в этом примере диаметр равен 0.010 дюймов или 0.25 mm)
670 длина волны ответа в нанометрах.
7. ПРАВИЛА КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ СТРОК ДАННЫХ
7.1 Общая структура штрихового кода в системе UCC/EAN-128
Все штриховые символики используют специальные символы для отметки начала и конца штрихового кода. UCC/EAN-128 может начинаться со стартовых символов Start A или START B или START C, которые определяют кодировку последующих знаков. Символика UCC/EAN-128 использует функциональный знак FNC1 в позиции после стартового символа. Этот двойной стартовый символ резервируется во всех применениях системы EAN*UCC. Это делает возможным различать штриховой код системы EAN*UCC от всех других штриховых кодов.
Символ FNC1 не представлен в знаках, читаемых человеком.
Стартовый знак А,В,С
|
Функциональный знак FNC1
|
Элементарная строка
|
Символ контрольного знака
|
Стоповый
знак
|
Идентифи-
катор
применения
|
Поле данных
|
Эти символы знаков обязательны в каждом штриховом коде
|
Это поле данных символа. Оно может варьироваться по длине и включать несколько элемент. строк
|
Эти символы знаков обязательны в каждом штриховом коде
|
.
Рисунок 6. Структура UCC/EAN-128 штрихового кода
Поскольку UCC/EAN-128 штриховой код имеет переменную длину важно обеспечить выполнение условий:
-
Кодируется не более 48 знаков,
-
Физическая длина не превышает 165 mm (6.5 in), включая светлые границы.
Эти условия позволяют кодировать несколько строк данных в один символ штрихового кода. Это называется конкатенацией (сцеплением). Преимущество такого сцепления заключается в том, что символ контрольного знака вычисляется один раз и, что общее количество пространства для размещения нескольких штриховых кодов строк данных больше чем для одного символа. Это также повышает точность сканирования, так как сканирование одного символа лучше сканирования нескольких. Несколько строк данных передаются считывателем штрихового кода одной полной строкой.
Элементарные строки данных, которые передаются при чтении одного штрихового кода, обрабатываются и анализируются отдельно. Чтобы упростить эту процедуру и сократить длину символа,
длины некоторых элементарных строк предопределены (см. Таблица 3). Строки, которые не содержатся в этой таблице и не являются последними в символе (непосредственно перед символом контрольного знака), должны заканчиваться знаком FNC1. Функциональный знак FNC1 в этом случае играет роль разделительного знака между двумя последовательными элементарными строками данных.
7.2 Идентификаторы применения заданной длины
Таблица 3 содержит все идентификаторы применения определенной длины. Элементарные строки, в состав которых входят эти идентификаторы, не требуют использования ограничителя FNC1.
Таблица 3. Идентификаторы применения определенной длины
Таблица 3 не будет в дальнейшем изменяться. Номера, указанные в скобках, еще не назначены.
Первые две цифры идентификатора применения 23n имеют особый смысл. Цифра n определяет длину поля данных элементарной строки и, поэтому, нет нужды использовать разделительный знак, когда эта строка данных конкатенирует с другими строками.
7.3 Объединение элементарных строк
В таблице 3 перечислены те, и только те, идентификаторы применения, состоящие из двух цифр, поля данных которых имеют определенную длину. В дальнейшем будем считать (для целей конкатенации), что все остальные идентификаторы применения
содержат поле данных переменной длины, даже если такие идентификаторы определяют поля фиксированной длины.
Конкатенация строк данных, содержащих идентификаторы применения определенной длины, не требует использования разделительного знака. За каждой такой элементарной строкой непосредственно следует или следующая строка данных или символ контрольного знака.
Для примера, конкатенация строки данных, содержащей чистый вес (4 kg), со строкой, содержащей глобальный идентификатор торговой единицы (4840123456789), не требует разделительного знака.
01 определяет элементарную строку в 16 цифр
31 определяет элементарную строку в 6 цифр
EAN*UCC товарный номер 04841234123457 Вес нетто 4.00 кг
Рисунок 7.
EAN*UCC товарный номер + Вес нетто 4.00 кг
Рисунок 8.
Конкатенация строк переменной длины, которые включают идентификаторы применения не входящие в таблицу 3, требует использования ограничительного знака FNC1 (если только строка не является последней).
Рисунок 9.
Рисунок 10.
Замечание: Разделительный знак FNC11 не показан в человекочитаемой форме.
7.4 Размещение символа
Предпочтительно размещать дополнительные штриховые коды на одной горизонтальной линии, в то время как штриховые коды, содержащие GTIN, SSCC и некоторые другие коды, отдельно. Дополнительные символы должны как можно плотнее прилегать к основному символу, но не должны пересекаться своими светлыми зонами.
Соблюдайте следующие правила:
-
Ориентируйте дополнительные символы в том же направлении что и основной символ,
-
Размещайте штриховые коды GTIN, SSCC, и другие коды стоящие отдельно, по правилам, указанным в «Общие EAN*UCC спецификации»,
-
Дополнительные символы должны размещаться после основных символов, стоящих отдельно.
Замечание: Символика UCC/EAN-128 не отменяет использование ITF-14 символа. Если глобальный идентификатор торговой единицы (GTIN) печатается в виде ITF-14 символа, то дополнительные данные о товаре печатаются в виде UCC/EAN-128 символа.
7.5 Обработка символов UCC/EAN-128 - логический базис.
Модель обработки UCC/EAN-128 символа и передачи данных сканером.
Рисунок 11
Приложение 1(нормативное). Расчет контрольного знака
Контрольный знак в символике Code 128 вычисляется по следующим правилам:
-
Для каждого символьного знака извлекает значение из Таблицы 1 (столбец 1).
-
Каждый символьный знак имеет свой вес. Стартовый знак имеет вес 1. Символьные знаки, следующие за стартовым знаком, имеют веса 1, 2, 3 , , , n. До контрольного знака (не включая его).
-
Значение каждого символьного знака умножается на его вес
-
Полученные произведения суммируются
-
Сумма произведений делится на 103
-
Остаток от деления является значением символа контрольного знака.
Для примера, подсчитаем контрольный знак для данных «AIM1234»:
Знаки Start B A I M Code C 12 34
Значения знаков (Шаг 1) 104 33 41 45 99 12 34
Весовые коэффициенты (Шаг 2) 1 1 2 3 4 5 6
Произведения (Шаг 3) 104 33 82 135 396 60 204
Сумма произведений (Шаг 4) 1014
Деление на 103 (Шаг 5) 1014/103=9
Остаток= значение символа контрольного знака 87
Символ контрольного знака размещается сразу за символами данных и перед стоповым знаком.
Замечание: Символ контрольного знака не показывается в чедовеко-читаемых символах.
Приложение 2 (информативное) Связь между значениями знаков в различных кодировках и значениями ASCII
Следующая схема позволяет установить отношения между значениями (S) символьных знаков в множествах кодировок А, В и десятичными значениями ASCII символа:
Кодировка А если S <= 63, то значение ASCII=S+32
если 64 <= S <= 95, то значение ASCII=S-64
Кодировка B если S <= 95, то значение ASCII=S+32
Замечание: Как было сказано в параграфе 3.4 Раздела 3, присутствие функционального FNC4 увеличивает значение ASCII последующих знаков на 128.
Приложение 3 (информативное) Использование видов кодировок и знаков переключения для минимизации длины символа.
Одни и те же данные могут представляться различными UCC/EAN-128 символами, используя различные сочетания стартовых знаков, знаков кодировок и знака SHIFT.
Следующие правила позволяют минимизировать число символьных знаков, необходимых для представления данной строки. Эти правила применимы в программах печати.
1) Определение стартового знака:
a) если данные начинаются с четырех или более цифр, то используйте кодировку C,
b) если данные начинаются с контрольного ASCII знака (например NUL), а далее следуют строчный знак, то используйте кодировку A,
c) в остальных случаях используйте кодировку B.
-
Если данные начинаются с нечетного числа цифр, то вставьте знак кодировки A или B перед последней цифрой, соблюдая правила 1b или 1c.
-
Если четыре или более цифр идут вместе, когда действует кодировка A или B, то:
a) если таких цифр четное число, то вставьте знак кодировки C перед первой цифрой,
b) если таких цифр нечетное число, то вставьте знак кодировки C сразу после первой цифры.
-
когда действует кодировка B и в данных встречается ASCII контрольный знак, то:
a) если за этим знаком идет строчная буква, то используйте знак SHIFT,
b) во всех других случаях используйте кодировку A.
5) когда действует кодировка A и в данных встречается строчный знак, то:
a) если за этим знаком идет ASCII контрольный знак, то используйте знак SHIFT,
b) во всех других случаях используйте кодировку B.
6) когда действует кодировка С и в данных встречается нецифровой знак, то вставьте знак кодировки A или B перед этим знаком, используя правила 1c или 1d.
Замечание 1: В этих правилах под строчными буквами понимаются знаки множества B со значениями от 64 до 95 (ASCII значения от 96 до 127).
В этих правилах под контрольными знаками понимаются знаки множества A со значениями от 64 до 95 (ASCII значения от 00 до 31).
Замечание 2: Если знак FNC1 следует за стартовым знаком или стоит на четной позиции в цифровом поле, то он должен рассматриваться как две цифры при выборе кодировке.
Приложение 4 (информативное) Руководство к использованию символики CODE 128.
Штриховой код Code 128 может читаться любым устройством считывания с программным обеспечением, позволяющим отличить его от других символик. Эта символика полностью отьличима, а поэтому и совместима, со следующими линейными символиками:
Interleaved 2 of 5, Codabar, Code 39, Code 93, EAN/UPC, Telepen, RSS.
Спецификации символики UCC/EAN-128
Достарыңызбен бөлісу: |