Code 39
Code 39 (также известный как 3 из 9, Code 3 of 9) — это дискретный, переменной длины, одномерный (линейный) штриховой код, в котором каждый символ кодируется девятью элементами (пятью штрихами и четырьмя пробелами), три из которых являются широкими. Был разработан в 1974 году компанией Intermec (США) для использования в промышленности и логистике.
История
Code 39 был изобретён Дэвидом Аллэйсом (David Allais) и Рэем Стивенсом (Ray Stevens) из компании Intermec. Первоначально код создавался для автоматизации идентификации в автомобильной промышленности, но быстро распространился в других отраслях. В 1981 году Американский национальный институт стандартов (ANSI) утвердил Code 39 как стандарт ANSI MH10.8M-1983, а в 1990-х годах он был принят как международный стандарт ISO/IEC 16388.
До середины 2000-х годов Code 39 был наиболее широко используемым штриховым кодом в мире, особенно в непищевой розничной торговле и промышленности. Впоследствии его популярность снизилась в пользу Code 128 и двухмерных кодов (QR-код, Data Matrix), однако он остаётся распространённым в ряде специфических областей.
Структура и принцип кодирования
Символы и алфавит
Code 39 поддерживает кодирование следующих символов:
- 26 заглавных букв латинского алфавита (A–Z)
- 10 цифр (0–9)
- 7 специальных символов: пробел, точка (.), минус (-), плюс (+), косая черта (/), знак процента (%), знак доллара ($)
- Символ «звёздочка» (*) используется только как стартовый и стоповый символ и не может быть частью данных.
Всего алфавит включает 43 символа (без учёта старт/стоп).
Физическая структура
Каждый символ Code 39 состоит из пяти штрихов и четырёх пробелов — всего девять элементов. Из этих девяти элементов ровно три являются «широкими» (обычно в 2–3 раза шире узких), а шесть — «узкими». Соотношение ширины широкого и узкого элемента (N) обычно составляет от 2:1 до 3:1, чаще всего 2,5:1.
Между символами обязательно присутствует межсимвольный пробел (IAG — Intercharacter Gap) шириной, равной одному узкому элементу. Этот пробел не несёт информации и служит для разделения символов.
Кодирование символа
Каждый символ имеет уникальную комбинацию расположения широких элементов среди девяти. Например, цифра «1» кодируется как: штрих-штрих-пробел-пробел-штрих-пробел-штрих-пробел-штрих (где широкими являются первый, четвёртый и восьмой элементы). Всего существует 2^9 = 512 возможных комбинаций, но только 43 из них удовлетворяют условию «ровно три широких элемента» и используются в стандарте.
Стартовый и стоповый символы
Любая последовательность Code 39 начинается и заканчивается символом «звёздочка» (*). Этот символ не может быть частью данных — если требуется передать звёздочку, используется её кодировка через специальные символы (например, в расширенном Code 39).
Разновидности
Стандартный Code 39 (Full ASCII Code 39)
Оригинальная версия кодирует только 43 символа. Для кодирования строчных букв, знаков препинания и управляющих символов используется Full ASCII Code 39 (также называемый Code 39 Extended). В этой версии каждому символу ASCII ставится в соответствие комбинация из двух символов базового набора. Например, строчная «a» кодируется как «+A». Это увеличивает длину штрихового кода, но позволяет передавать полный 128-символьный набор ASCII.
Code 39 mod 43
Вариант с контрольной цифрой (checksum). После данных добавляется один символ, вычисляемый как сумма значений всех символов данных (по модулю 43). Контрольная цифра не обязательна по стандарту, но часто используется в приложениях, требующих высокой надёжности считывания (например, в оборонной промышленности и здравоохранении).
Характеристики
Преимущества
- Простота и надёжность: лёгок для печати и считывания даже на некачественных носителях.
- Дискретность: каждый символ чётко отделён от соседнего, что облегчает декодирование.
- Переменная длина: длина кода не фиксирована, можно кодировать строки любой длины (в разумных пределах).
- Самопроверка: благодаря фиксированному числу широких элементов (ровно три) ошибка в одном элементе легко обнаруживается.
- Отсутствие необходимости в контрольной цифре (хотя она может быть добавлена).
Недостатки
- Низкая плотность данных: из-за фиксированного количества широких элементов и межсимвольных пробелов Code 39 занимает больше места на единицу данных по сравнению с более современными кодами (например, Code 128).
- Ограниченный алфавит: базовый набор включает только 43 символа; для кодирования полного ASCII требуется удвоение длины.
- Отсутствие обязательной контрольной цифры (в базовой версии) делает код менее устойчивым к ошибкам считывания.
Применение
Code 39 широко используется в следующих областях:
Промышленность и логистика
- Маркировка деталей и узлов в автомобильной, авиационной и оборонной промышленности.
- Идентификация контейнеров, паллет и упаковок на складах.
- Наклейки на коробки и ящики в системах управления складом (WMS).
Здравоохранение
- Идентификация пациентов и образцов крови (в сочетании с контрольной цифрой).
- Маркировка лекарственных средств и медицинских приборов.
Розничная торговля
- До середины 2000-х годов использовался для маркировки товаров в магазинах (особенно в США). В настоящее время вытеснен UPC/EAN.
Государственные и военные стандарты
- В США используется Министерством обороны (DoD) для маркировки военного имущества (стандарт LOGMARS).
- В ряде стран применяется для идентификации автомобильных номеров и документов.
Документооборот
- Нанесение на бланки, пропуска, удостоверения для автоматизированного учёта.
Считывание и декодирование
Code 39 может быть считан как лазерными, так и CCD-сканерами, а также камерами смартфонов при наличии соответствующего программного обеспечения. Декодирование осуществляется путём измерения ширины штрихов и пробелов, определения их как «узких» или «широких» и сопоставления полученной комбинации с таблицей символов. Межсимвольный пробел (всегда узкий) используется для разделения символов.
Интересные факты
- Название «Code 39» происходит от того, что каждый символ кодируется 39 элементами (9 элементов на символ × 3 широких элемента + 12 узких элементов = 39, если считать все штрихи и пробелы; на самом деле элементов 9, но условие «3 из 9» дало название).
- Code 39 является одним из немногих штриховых кодов, которые можно напечатать на обычном матричном принтере с приемлемым качеством считывания.
- До появления Code 128 и двухмерных кодов Code 39 был де-факто стандартом для промышленной маркировки.
Источники
- ISO/IEC 16388:2007 — Information technology — Automatic identification and data capture techniques — Code 39 bar code symbology specification
- ANSI MH10.8M-1983 — American National Standard for Bar Code Symbology
- Allais, David. "The Code 39 Bar Code Symbology". Intermec Corporation, 1974.
- Palmer, Roger C. "The Bar Code Book: A Comprehensive Guide to Reading, Printing, and Evaluating Bar Codes and Other Machine-Readable Symbols". Helmers Publishing, 1995.
- ГОСТ Р 51003-96 «Штриховые коды. Символика Code 39. Общие требования»
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →