Введение

Код 39 (также известный как Alpha39, Код 3 из 9, Код 3/9, Тип 39, USS Code 39 или USD 3) — это штриховая символика переменной длины, дискретного типа, определенная в ISO/IEC 16388:2007. Спецификация Кода 39 определяет 43 символа, состоящие из прописных букв (от A до Z), цифровых цифр (от 0 до 9) и ряда специальных символов ( , ., $, /, +, %, и пробел). Дополнительный символ (обозначаемый «*») используется в качестве стартового и стопового разделителя. Каждый символ состоит из девяти элементов: пяти штрихов и четырех пробелов. Три из девяти элементов в каждом символе широкие (бинарное значение 1), а шесть элементов узкие (бинарное значение 0). Схема штрих-кода не содержит контрольной цифры (в отличие, например, от Кода 128), но может считаться самопроверяемой, поскольку одна ошибочно интерпретированная штриховая линия не может сгенерировать другой допустимый символ. Вероятно, наиболее серьезным недостатком Кода 39 является его низкая плотность данных: для кодирования данных в Коде 39 требуется больше места, чем, например, в Коде 128. Это означает, что очень маленькие товары нельзя маркировать штрих-кодом на основе Кода 39. Однако Код 39 все еще используется некоторыми почтовыми службами (хотя Всемирный почтовый союз рекомендует использовать Код 128 во всех случаях), и его можно декодировать практически любым сканером штрих-кодов. Одним из преимуществ Кода 39 является то, что, поскольку нет необходимости генерировать контрольную цифру, его можно легко интегрировать в существующую систему печати, добавив шрифт штрих-кода в систему или принтер, а затем печатая исходные данные этим шрифтом. Код 39 был разработан доктором Дэвидом Аллесом и Рэем Стивенсом из Intermec в 1974 году. Их первоначальная конструкция включала две широкие линии и одно широкое пространство в каждом символе, что давало 40 возможных символов. Отложив один из этих символов для стартового и стопового шаблона, осталось 39 символов, что и послужило происхождением названия «Код 39». Позже были добавлены четыре знака препинания, без использования широких штрихов и с тремя широкими пробелами, расширив набор символов до 43 символов. Код 39 был позже стандартизирован как ANSI MH 10.8 M 1983 и MIL STD 1189. MIL STD 1189 был отменен и заменен ANSI/AIM BC1/1995, Единая спецификация символики — Код 39.

Кодирование

Символ «*», представленный ниже, не является истинным кодируемым символом, но служит символом начала и окончания кода 39. Асимметрия символа позволяет считывающему устройству определить направление сканируемого штрих-кода. Этот код традиционно отображается символом «*» в шрифтах штрих-кодов и часто появляется вместе с удобочитаемым представлением рядом со штрих-кодом. В общем случае, расположение двух широких штрихов можно считать кодирующим число от 1 до 10, а расположение широкого интервала (имеющего четыре возможных положения) можно считать классифицирующим символ в одну из четырех групп (слева направо): Буквы (+30) (U–Z), Цифры (+0) (1–9, 0), Буквы (+10) (A–J) и Буквы (+20) (K–T). Например, буква P (являющаяся 16-й буквой алфавита) имеет штрихи, выровненные для представления числа 6, и интервал в крайнем правом положении для выбора группы Букв (+20). При представлении в виде цифры число «10» используется для кодирования числа ноль. Поскольку в группе Букв (+30) всего шесть букв (буквы 30–35, или U–Z), остальные четыре позиции в этой группе (36–39) используются для представления трех символов (тире, точка, пробел), а также символа начала/остановки. Две широкие полосы, из пяти возможных позиций, кодируют число от 1 до 10, используя код «два из пяти» со следующим числовым соответствием: 1, 2, 4, 7, 0. Числа суммируются. Например, число 6 кодируется как NWWNN, при этом широкие полосы занимают позиции 2 и 4 (2+4=6). В случае NNWWN, что равно 1 = 4+7 = 11, оно присваивается 0 для цифр (+0) и 10 для буквенных столбцов (+10 – +30). При кодировании букв (+10 до +30) к уравнению необходимо добавить «-1», поэтому ‘A’ – WNNNW → 1 + 10 − 1 → 10, как показано в таблице. Последние четыре символа состоят из узких штрихов и трех широких интервалов. Существует четыре возможных положения для единственного узкого интервала. В данной таблице представлены спецификации кода 39. Численное значение, присвоенное каждому символу (за исключением начала/остановки), используется в алгоритме контрольной суммы, описанном ниже. + Символы Code 39 (и значения контрольной суммы) Штрихи Интервалы || ||| +0 ||| || +10 |||| | +20 | |||| +30 ▮|||▮ 1 ▮| ||▮ 1 1 ▮|| |▮ A 10 ▮||| ▮ K 20 ▮ |||▮ U 30 |▮||▮ 2 |▮ ||▮ 2 2 |▮| |▮ B 11 |▮|| ▮ L 21 | ▮||▮ V 31 ▮▮||| 3 ▮▮ ||| 3 3 ▮▮| || C 12 ▮▮|| | M 22 ▮ ▮||| W 32 ||▮|▮ 4 || ▮|▮ 4 4 ||▮ |▮ D 13 ||▮| ▮ N 23 | |▮|▮ X 33 ▮|▮|| 5 ▮| ▮|| 5 5 ▮|▮ || E 14 ▮|▮| | O 24 ▮ |▮|| Y 34 |▮▮|| 6 |▮ ▮|| 6 6 |▮▮ || F 15 |▮▮| | P 25 | ▮▮|| Z 35 |||▮▮ 7 || |▮▮ 7 7 ||| ▮▮ G 16 |||▮ ▮ Q 26 | ||▮▮ 36 ▮||▮| 8 ▮| |▮| 8 8 ▮|| ▮| H 17 ▮||▮ | R 27 ▮ ||▮| 37 |▮|▮| 9 |▮ |▮| 9 9 |▮| ▮| I 18 |▮|▮ | S 28 | ▮|▮| ␣ 38 ||▮▮| 10 || ▮▮| 0 0 ||▮ ▮| J 19 ||▮▮ | T 29 | |▮▮| * ||||| | | | || $ 39 | | || | / 40 | || | | + 41 || | | | % 42

Символы разделяются дополнительным узким интервалом. Например, полное кодирование для единственной буквы «A», которое фактически включает символы начала и окончания в виде «*A*», выглядит как "| |▮▮|▮|| |▮| |▮▮|". Код не будет прочитан правильно без этих межсимвольных интервалов. Шрифты штрих-кодов неизменно включают этот интервал в глифе для символа.

Полный код ASCII 39

Код 39 ограничен 43 символами. В полной ASCII версии Кода 39 символы 0–9, A–Z, ". ", " " и пробел соответствуют их представлениям в Коде 39. Строчные буквы, дополнительные знаки препинания и управляющие символы кодируются последовательностями из двух символов Кода 39. Детали кодирования: Nr Символ Кодировка Nr Символ Кодировка Nr Символ Кодировка Nr Символ Кодировка 0 NUL %U 32 [пробел] [пробел] 64 @ %V 96 ` %W 1 SOH $A 33 ! /A 97 a +A 2 STX $B 34 " /B 98 b +B 3 ETX $C 35 # /C 99 c +C 4 EOT $D 36 $ /D 100 d +D 5 ENQ $E 37 % /E 101 e +E 6 ACK $F 38 & /F 102 f +F 7 BEL $G 39 ' /G 103 g +G 8 BS $H 40 ( /H 104 h +H 9 HT $I 41 ) /I 105 i +I 10 LF $J 42 * /J 106 j +J 11 VT $K 43 + /K 107 k +K 12 FF $L 44 , /L 108 l +L 13 CR $M 45 - /M 109 m +M 14 SO $N 46 . /N 110 n +N 15 SI $O 47 / /O 111 o +O 16 DLE $P 48 0 0 112 p +P 17 DC1 $Q 49 1 1 113 q +Q 18 DC2 $R 50 2 2 114 r +R 19 DC3 $S 51 3 3 115 s +S 20 DC4 $T 52 4 4 116 t +T 21 NAK $U 53 5 5 117 u +U 22 SYN $V 54 6 6 118 v +V 23 ETB $W 55 7 7 119 w +W 24 CAN $X 56 8 8 120 x +X 25 EM $Y 57 9 9 121 y +Y 26 SUB $Z 58 : /Z 122 z +Z 27 ESC %A 59 ; %F 91 [ %K 123 { %P 28 FS %B 60 < %G 92 \ %L 124 | %Q 29 GS %C 61 = %H 93 ] %M 125 } %R 30 RS %D 62 > %I 94 ^ %N 126 ~ %S 31 US %E 63 ? %J 95 _ %O 127 DEL %T, %X, %Y, %Z