Открыть сервис

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 поддерживает кодирование следующих символов:

Всего алфавит включает 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 39 может быть считан как лазерными, так и CCD-сканерами, а также камерами смартфонов при наличии соответствующего программного обеспечения. Декодирование осуществляется путём измерения ширины штрихов и пробелов, определения их как «узких» или «широких» и сопоставления полученной комбинации с таблицей символов. Межсимвольный пробел (всегда узкий) используется для разделения символов.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →