Генератор Code 93

Code 93 — это усовершенствованная версия Code 39, разработанная для повышения плотности и надёжности. Его использовала почтовая служба США (USPS) и некоторые складские системы. Разбираем, в чём преимущества.

Автор много лет работал с Code 39 — надёжным, но громоздким. Каждый символ там занимал много места. Когда понадобилось закодировать длинный идентификатор на маленькой этикетке для почтового конверта, стандартный Code 39 просто не влез. Тогда и вспомнили про Code 93.

Code 93 был создан как прямая замена Code 39 для случаев, когда нужна большая плотность и встроенная проверка ошибок. Он компактнее и безопаснее. Почему же он не вытеснил Code 39 полностью? Сейчас расскажем.

Устройство Code 93

Code 93 — это непрерывный двухуровневый штрихкод (узкие/широкие полосы). Каждый символ кодируется 9 модулями (3 полосы и 3 промежутка, итого 6 элементов, но с разной шириной). Отсюда и название — 9 элементов на символ и 3 в основе.

Главные особенности:

  • Набор символов: полный ASCII (через управляющие последовательности). Это позволяет кодировать буквы в обоих регистрах, цифры и спецсимволы.
  • Обязательные две контрольные цифры (С и К). Алгоритм расчёта — два разных модуля (сумма с весами 1..20 и 1..15). Это даёт очень высокую надёжность.
  • Высокая плотность — примерно на 25% компактнее Code 39.
  • Встроенная корректировка — благодаря двум контрольным символам.

Как генерировать Code 93

Процесс создания правильного Code 93 сложнее, чем Code 39, из-за двух контрольных сумм. Вот алгоритм:

  • Преобразовать входную строку в последовательность символов (цифры, буквы, знаки). Если нужны строчные буквы или символы вне основного набора, использовать управляющие последовательности (например, «$A» для переключения режима).
  • Рассчитать первую контрольную сумму (С) по модулю 20 с весами, начиная с 1 для самого правого символа данных.
  • Рассчитать вторую контрольную сумму (К) по модулю 15 с весами, включив уже первый checksum.
  • Добавить стартовый и стоповый символы (обычно это символы «*» и специальный терминирующий паттерн).
  • Сгенерировать полосы, преобразуя каждый символ в его 9-модульное представление.

Где применяется Code 93

Наибольшую известность Code 93 получил благодаря USPS (Почта США) для отслеживания посылок. Также его можно встретить:

  • На почтовых идентификаторах в некоторых странах Европы.
  • В библиотечных системах как альтернатива Code 39.
  • На этикетках медицинских образцов — высокая надёжность важна.
  • В системах контроля доступа на старых заводах.

Ошибки при генерации

Практика показывает, что проблемы с Code 93 возникают из-за:

  • Неправильного расчёта второй контрольной суммы (К). Некоторые генераторы забывают включить первую checksum в расчёт второй.
  • Попытки закодировать символы, не входящие в базовый набор Code 93 (например, русские буквы). Стандарт их не поддерживает, придётся транслировать.
  • Слишком малого размера шрифта в удобочитаемой части — она обязательна, и её должно быть легко прочитать человеку.

Заключение

Коротко по делу:

  • Code 93 — улучшенная версия Code 39 с двумя контрольными символами и большей плотностью.
  • Генерация требует расчёта двух контрольных сумм (С и К) по разным модулям.
  • Применяется в основном в почтовых системах и там, где нужна высокая надёжность.

Вопрос читателям: замечали ли вы Code 93 на почтовых отправлениях? Или, может, использовали его для маркировки внутри компании? Поделитесь, насколько он оказался удобнее Code 39.