Автор много лет работал с 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.