Код 39 (также известный как Alpha39 , Code 3 of 9 , Code 3/9 , Type 39 , USS Code 39 или USD-3 ) — это дискретная символика штрихкода переменной длины, определенная в стандарте ISO / IEC 16388:2007.
Спецификация Code 39 определяет 43 символа, состоящих из заглавных букв (от A до Z), цифр (от 0 до 9) и ряда специальных символов (-, ., $, /, +, % и пробел ). Дополнительный символ (обозначаемый '*') используется как для начального, так и для конечного разделителей. Каждый символ состоит из девяти элементов: пяти черт и четырех пробелов. Три из девяти элементов в каждом символе являются широкими (двоичное значение 1), а шесть элементов являются узкими (двоичное значение 0).
Схема штрихкода не содержит контрольной цифры (в отличие, например, от Code 128 ), но ее можно считать самопроверяющейся на том основании, что один ошибочно интерпретированный штрих не может сгенерировать другой допустимый символ. Возможно, самым серьезным недостатком Code 39 является его низкая плотность данных: для кодирования данных в Code 39 требуется больше места, чем, например, в Code 128. Это означает, что очень маленькие товары не могут быть маркированы штрихкодом на основе Code 39. Однако Code 39 по-прежнему используется некоторыми почтовыми службами (хотя Всемирный почтовый союз рекомендует использовать Code 128 во всех случаях [1] ), и может быть декодирован практически любым считывателем штрихкодов . Одним из преимуществ Code 39 является то, что, поскольку нет необходимости генерировать контрольную цифру, его можно легко интегрировать в существующую систему печати, добавив шрифт штрихкода в систему или принтер, а затем распечатав необработанные данные этим шрифтом.
Код 39 был разработан доктором Дэвидом Алле и Рэем Стивенсом из Intermec в 1974 году. Их первоначальный дизайн включал две широкие черты и один широкий пробел в каждом символе, в результате чего получалось 40 возможных символов. Отложив один из этих символов в качестве шаблона начала и конца, мы получили 39 символов, что и стало источником названия Код 39. [2] Позднее были добавлены четыре знака пунктуации, без широких черт и с тремя широкими пробелами, что расширило набор символов до 43 символов. Код 39 был позже стандартизирован как ANSI MH 10.8 M-1983 и MIL-STD-1189. [3] MIL-STD-1189 был отменен и заменен на ANSI/AIM BC1/1995, Единая спецификация символики — Код 39. [4]
Символ * , представленный ниже, не является истинно кодируемым символом, но является символом начала и конца для Code 39. Асимметрия символа позволяет считывателю определить направление сканируемого штрихкода. Этот код традиционно сопоставляется с символом * в шрифтах штрихкодов и часто отображается вместе с читаемым человеком представлением рядом со штрихкодом.
В общем, расположение двух широких полос можно считать кодирующим число от 1 до 10, а расположение широкого пробела (имеющего четыре возможных положения) можно считать классифицирующим символ в одну из четырех групп (слева направо): Буквы (+30) (U–Z), Цифры (+0) (1–9,0), Буквы (+10) (A–J) и Буквы (+20) (K–T). Например, буква P (будучи 16-й буквой алфавита) имеет свои полосы, выровненные для представления числа 6, и пробел в крайней правой позиции для выбора группы Буквы (+20).
При представлении в виде цифры число «10» используется для кодирования числа 0. Поскольку в группе Letters(+30) всего шесть букв (буквы 30–35 или U–Z), остальные четыре позиции в этой группе (36–39) используются для представления трех символов (тире, точки, пробела), а также символа начала/конца.
Две широкие полосы из пяти возможных позиций кодируют число от 1 до 10 с использованием кода «два из пяти» со следующей числовой эквивалентностью: 1, 2, 4, 7, 0. Числа суммируются. Например, число 6 кодируется как NWWNN, при этом широкие полосы занимают позиции для 2 и 4 (2+4=6). В случае NNWWN, который равен 4 +7 = 11, ему присваивается значение 0 для цифр (+0) и 10 для столбцов букв (+10 – +30). При кодировании букв (от +10 до +30) в уравнение необходимо добавить «−1», поэтому «A» будет WNNNW → 1 + 10 − 1 → 10, как показано в таблице.
Последние четыре символа состоят из узких полос и трех широких пробелов. Существует четыре возможных положения для одного узкого пробела.
В этой таблице описывается спецификация Code 39. Числовое значение, присвоенное каждому символу (кроме старт/стоп), используется в алгоритме контрольной суммы, описанном ниже.
Символы разделяются дополнительным узким пробелом. Например, полная кодировка для одной буквы "A", которая фактически включает начальные и конечные символы, как "*A*", - это "| |▮▮|▮|| |▮| |▮▮|" . Код не будет правильно прочитан без этих межсимвольных пробелов. Шрифты штрихкодов неизменно включают этот пробел внутри глифа для символа.
Код 39 иногда используется с дополнительной контрольной цифрой modulo 10 или 43. Для его использования требуется, чтобы эта функция была включена в считывателе штрихкодов. Код с контрольной цифрой называется Code 39 mod 10 или Code 39 mod 43 соответственно.
Для вычисления этого каждому символу присваивается значение. Назначения перечислены в таблице выше и почти, но не совсем, систематические.
Вот как выполнить расчет контрольной суммы :
Код 39 ограничен 43 символами. В Полном коде ASCII 39 символы 0-9, AZ, ".", "-" и пробел такие же, как их представления в Коде 39. Строчные буквы, дополнительные знаки препинания и управляющие символы представлены последовательностями из двух символов Кода 39.
Следующее бесплатное программное обеспечение с открытым исходным кодом может создавать штрихкоды Code 39:
{{cite journal}}
: Цитировать журнал требует |journal=
( помощь )