Введение

Формат штрих-кода

Код 128 – это линейная символика штрих-кода высокой плотности, определенная в ISO/IEC 15417:2007. Он используется для буквенно-цифровых или только цифровых штрих-кодов. Он может кодировать все 128 символов ASCII и, с помощью специального символа расширения (FNC4), символы Latin 1, определенные в ISO/IEC 8859-1. Как правило, он позволяет создавать более компактные штрих-коды по сравнению с другими методами, такими как Code 39, особенно если текст состоит преимущественно из цифр. Код 128 был разработан компанией Computer Identics Corporation в 1981 году. GS1 128 (ранее известный как UCC/EAN 128) является подмножеством Кода 128 и широко используется во всем мире в сфере логистики и упаковки в качестве идентификационного кода продукции для контейнеров и паллет в цепи поставок.

Ширина пуска/остановки и ширина штриха

Каждый символ в штрих-коде состоит из трех штрихов и трех пробелов. Каждый штрих или пробел имеет ширину 1, 2, 3 или 4 единицы, сумма ширин штрихов должна быть четной (4, 6 или 8 единиц), сумма ширин пробелов должна быть нечетной (3, 5 или 7 единиц), а общая ширина символа составляет 11 единиц. Например, кодирование ASCII-символа "0" можно представить как 10011101100, где последовательность единиц – это штрих, а последовательность нулей – пробел. Единица – самая тонкая линия в штрих-коде. Последовательность из трех единиц (111) обозначает штрих в три раза толще, чем штрих из одной единицы. Существует 108 возможных символов шириной 11 единиц, и код использует все эти символы. Два из них используются для обозначения остановки (конца штрих-кода): остановки и обратной остановки. Эти два символа остановки особенны тем, что за ними всегда следует штрих шириной 2 единицы, формируя шаблон остановки длиной 13 единиц. При чтении шаблона остановки слева направо отображается символ остановки (за которым следует штрих шириной 2 единицы), а при чтении справа налево – символ обратной остановки (за которым также следует штрих шириной 2 единицы).

Использование FNC4 для кодирования высоких (160255) символов

Специальный символ FNC4 ("Функция 4"), присутствующий только в наборах кодов A и B, может использоваться для кодирования всех символов Latin 1 (ISO 8859-1) в штрих-коде Code 128. При наличии одного символа 'FNC4' в строке, следующий символ интерпретируется как ASCII, но его значение увеличивается на +128, что соответствует более высокому диапазону таблицы ISO 8859-1. Если следующий символ – 'SHIFT', то для получения символа потребуется второй символ. При использовании двух последовательных символов 'FNC4', все последующие символы данных кодируются как расширенные ASCII до тех пор, пока не встретятся два последовательных символа 'FNC4' или не будет достигнут конец символа. В процессе этой последовательности расширенного кодирования, одиночный символ 'FNC4' используется для возврата к стандартному кодированию ASCII только для следующего символа данных. Символы 'SHIFT' и символы подмножеств сохраняют свой обычный эффект в течение этой последовательности. В Code 128A можно получить доступ к специальным символам Latin 1 от 160 (шестнадцатеричное A0, неразрывный пробел) до 223 (шестнадцатеричное DF, ß) через FNC4. Символы нижнего регистра от 224 (шестнадцатеричное E0, à) до 254 (шестнадцатеричное FE, þ) доступны с помощью FNC4+SHIFT B. Символы ÷ (247, шестнадцатеричное F7) и ÿ (255, шестнадцатеричное FF) недоступны. Эта функция не поддерживается GS1 128. Учитывая, что поддержка Code 128 типа B (и C) не очень распространена, для кодирования символов из диапазона ISO 8859-1 может быть проще использовать QR-код.

Ширина штрих-кодов

Код 128 определяет комбинацию из 6 чередующихся штрихов и пробелов (3 каждого) для каждого символа. Таким образом, каждый символ начинается со штриха и заканчивается пробелом. В шрифтах штрих-кодов последний штрих обычно объединяется с символом стоп, чтобы создать более широкий шаблон стоп. В следующей таблице приведены подробные данные о ширинах, связанных с каждым штрихом и пробелом для каждого символа. Ширина каждого штриха или пробела может быть 1, 2, 3 или 4 единиц (модулей). Используя приведенный выше пример, символ 'A' будет изображен шаблоном 10100011000, или как ширина 111323 в таблицах ниже. Значение ширины получается путем подсчета длины каждой последовательности из 1 и 0 в шаблоне, начиная слева. Всегда будет 6 последовательностей, и длины этих 6 последовательностей формируют значение ширины. Например, используя шаблон 10100011000, длины последовательностей составляют 1 (цифра 1), 1 (цифра 0), 1 (цифра 1), 3 (цифра 0), 2 (цифра 1), 3 (цифра 0). Указание только длин каждой последовательности дает 1, 1, 1, 3, 2, 3, тем самым формируя значение ширины 111323. + Код 128 Значение Шестнадцатеричное значение 128A 128B 128C Положение шрифта (Обычный/Необычный/Barcodesoft) Код штрих-кода/пробела Латинский 1 Ширина шаблона 0 00 пробел пробел 00 32 или 194 или 207 / 212 / 252 или Â или Ï / Ô / ü 11011001100 212222 1 01 ! ! 01 33 ! 11001101100 222122 2 02 " " 02 34 " 11001100110 222221 3 03 # # 03 35 # 10010011000 121223 4 04 $ $ 04 36 $ 10010001100 121322 5 05 % % 05 37 % 10001001100 131222 6 06 & & 06 38 & 10011001000 122213 7 07 ' ' 07 39 ' 10011000100 122312 8 08 ( ( 08 40 ( 10001100100 132212 9 09 ) ) 09 41 ) 11001001000 221213 10 0a * * 10 42 * 11001000100 221312 11 0b + + 11 43 + 11000100100 231212 12 0c , , 12 44, 10110011100 112232 13 0d 13 45 10011011100 122132 14 0e . 14 46 . 10011001110 122231 15 0f / / 15 47 / 10111001100 113222 16 10 0 0 16 48 0 10011101100 123122 17 11 1 1 17 49 1 10011100110 123221 18 12 2 2 18 50 2 11001110010 223211 19 13 3 3 19 51 3 11001011100 221132 20 14 4 4 20 52 4 11001001110 221231 21 15 5 5 21 53 5 11011100100 213212 22 16 6 6 22 54 6 11001110100 223112 23 17 7 7 23 55 7 11101101110 312131 24 18 8 8 24 56 8 11101001100 311222 25 19 9 9 25 57 9 11100101100 321122 26 1a : : 26 58 : 11100100110 321221 27 1b ; ; 27 59 ; 11101100100 312212 28 1c < < 28 60 < 11100110100 322112 29 1d = = 29 61 = 11100110010 322211 30 1e > > 30 62 > 11011011000 212123 31 1f ? ? 31 63 ? 11011000110 212321 32 20 @ @ 32 64 @ 11000110110 232121 33 21 A A 33 65 A 10100011000 111323 34 22 B B 34 66 B 10001011000 131123 35 23 C C 35 67 C 10001000110 131321 36 24 D D 36 68 D 10110001000 112313 37 25 E E 37 69 E 10001101000 132113 38 26 F F 38 70 F 10001100010 132311 39 27 G G 39 71 G 11010001000 211313 40 28 H H 40 72 H 11000101000 231113 41 29 I I 41 73 I 11000100010 231311 42 2a J J 42 74 J 10110111000 112133 43 2b K K 43 75 K 10110001110 112331 44 2c L L 44 76 L 10001101110 132131 45 2d M M 45 77 M 10111011000 113123 46 2e N N 46 78 N 10111000110 113321 47 2f O O 47 79 O 10001110110 133121 48 30 P P 48 80 P 11101110110 313121 49 31 Q Q 49 81 Q 11010001110 211331 50 32 R R 50 82 R 11000101110 231131 51 33 S S 51 83 S 11011101000 213113 52 34 T T 52 84 T 11011100010 213311 53 35 U U 53 85 U 11011101110 213131 54 36 V V 54 86 V 11101011000 311123 55 37 W W 55 87 W 11101000110 311321 56 38 X X 56 88 X 11100010110 331121 57 39 Y Y 57 89 Y 11101101000 312113 58 3a Z Z 58 90 Z 11101100010 312311 59 3b [ [ 59 91 [ 11100011010 332111 60 3c \ \ 60 92 \ 11101111010 314111 61 3d ] ] 61 93 ] 11001000010 221411 62 3e ^ ^ 62 94 ^ 11110001010 431111 63 3f 63 95 10100110000 111224 64 40 NUL ` 64 96 ` 10100001100 111422 65 41 SOH a 65 97 a 10010110000 121124 66 42 STX b 66 98 b 10010000110 121421 67 43 ETX c 67 99 c 10000101100 141122 68 44 EOT d 68 100 d 10000100110 141221 69 45 ENQ e 69 101 e 10110010000 112214 70 46 ACK f 70 102 f 10110000100 112412 71 47 BEL g 71 103 g 10011010000 122114 72 48 BS h 72 104 h 10011000010 122411 73 49 HT i 73 105 i 10000110100 142112 74 4a LF j 74 106 j 10000110010 142211 75 4b VT k 75 107 k 11000010010 241211 76 4c FF l 76 108 l 11001010000 221114 77 4d CR m 77 109 m 11110111010 413111 78 4e SO n 78 110 n 11000010100 241112 79 4f SI o 79 111 o 10001111010 134111 80 50 DLE p 80 112 p 10100111100 111242 81 51 DC1 q 81 113 q 10010111100 121142 82 52 DC2 r 82 114 r 10010011110 121241 83 53 DC3 s 83 115 s 10111100100 114212 84 54 DC4 t 84 116 t 10011110100 124112 85 55 NAK u 85 117 u 10011110010 124211 86 56 SYN v 86 118 v 11110100100 411212 87 57 ETB w 87 119 w 11110010100 421112 88 58 CAN x 88 120 x 11110010010 421211 89 59 EM y 89 121 y 11011011110 212141 90 5a SUB z 90 122 z 11011110110 214121 91 5b ESC { 91 123 { 11110110110 412121 92 5c FS | 92 124 | 10101111000 111143 93 5d GS } 93 125 } 10100011110 111341 94 5e RS ~ 94 126 ~ 10001011110 131141 95 5f US DEL 95 195 / 200 / 240 Ã / È / ð 10111101000 114113 96 60 FNC 3 FNC 3 96 196 / 201 / 241 Ä / É / ñ 10111100010 114311 97 61 FNC 2 FNC 2 97 197 / 202 / 242 Å / Ê / ò 11110101000 411113 98 62 Shift B Shift A 98 198 / 203 / 243 Æ / Ë / ó 11110100010 411311 99 63 Code C Code C 99 199 / 204 / 244 Ç / Ì / ô 10111011110 113141 100 64 Code B FNC 4 Code B 200 / 205 / 200 È / Í / È 10111101110 114131 101 65 FNC 4 Code A Code A 201 / 206 / 246 É / Î / ö 11101011110 311141 102 66 FNC 1 FNC 1 FNC 1 202 / 207 / 247 Ê / Ï / ÷ 11110101110 411131 103 67 Start Code A 203 / 208 / 248 Ë / Ð / ø 11010000100 211412 104 68 Start Code B 204 / 209 / 249 Ì / Ñ / ù 11010010000 211214 105 69 Start Code C 205 / 210 / 250 Í / Ò / ú 11010011100 211232 106 6a Stop — — 11000111010 233111 — — Reverse Stop — — 11010111000 211133 — — Stop pattern (7 bars/spaces) 206 / 211 / 251 Î / Ó / û 1100011101011 2331112

Символы "Code A", "Code B" и "Code C" заставляют все последующие символы интерпретироваться в соответствии с соответствующим подкодом (т.е. 128A, 128B или 128C). Символ "Shift" переключает интерпретацию одного следующего символа между подкодами A и B. Кодированный ASCII char зависит от фактически используемого шрифта штрих-кода. Особенно ASCII char значения 0 и значения 95 и выше могут быть определены по-разному в установленном шрифте. Коды FNCx используются для специальных целей. FNC1 в начале штрих-кода указывает штрих-код GS1 128, который начинается с 2-, 3- или 4-значного идентификатора приложения, присвоенного Советом по единым кодам, который объясняет следующие цифры. Например, идентификатор приложения 421 указывает, что за ним следует цифровой код страны ISO 3166 1 и почтовый индекс места назначения. Таким образом, почтовый индекс США для Белого дома обычно печатается как "(421) 840 20500", но на самом деле кодируется как "[Начало C] [FNC1] 42 18 40 20 50 [Код A] 16 [Символ проверки 92] [Стоп]".

FNC2 (приложение к сообщению) может появляться в любом месте в штрих-коде, чтобы указать, что считыватель штрих-кода должен сохранить текущую строку и добавить ее в начало строки следующего штрих-кода, который считывается. Он не используется GS1 128. FNC3 (инициализация) может появляться в любом месте в штрих-коде, чтобы инструктировать считыватель штрих-кода инициализировать или перепрограммировать себя в соответствии с инструкциями строки штрих-кода. FNC4 используется для представления расширенного набора символов ASCII (см.). Он не используется GS1 128.

Доступность

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