Full ASCII Code 39
Full ASCII Code 39 — это расширенная версия штрихового кода Code 39, которая позволяет кодировать все 128 символов стандартной таблицы ASCII (American Standard Code for Information Interchange), включая буквы в верхнем и нижнем регистре, цифры, знаки препинания и управляющие символы. В отличие от базового набора Code 39, который ограничивается 43 символами (заглавные буквы A–Z, цифры 0–9, пробел и несколько знаков препинания), Full ASCII Code 39 достигает полного покрытия за счёт использования специальных комбинаций из двух символов, которые интерпретируются декодером как один символ из расширенного набора. Этот формат широко применяется в логистике, здравоохранении и промышленности, где требуется маркировка товаров, документов или образцов с использованием полного алфавита и специальных символов.
История и происхождение
Code 39 был разработан в 1974 году компанией Intermec (ныне часть Honeywell) для нужд автоматической идентификации. Первоначально он поддерживал только 43 символа, что было достаточно для большинства промышленных задач того времени, таких как маркировка деталей и инвентаризация. Однако с ростом потребностей в более сложной кодировке, особенно в здравоохранении (для маркировки образцов крови и медикаментов) и логистике (для адресов и описаний), возникла необходимость в поддержке строчных букв и специальных символов.
В 1980-х годах была разработана спецификация Full ASCII Code 39, которая расширила возможности стандарта без изменения его физической структуры. Для этого использовалась техника «двойного кодирования»: каждый символ, отсутствующий в базовом наборе, представлялся в виде комбинации из двух символов Code 39, один из которых служил префиксом (например, $, /, % или +). Декодер, распознавая такой префикс, интерпретировал последующий символ как часть расширенного набора. Этот подход позволил сохранить обратную совместимость с существующими сканерами и системами, которые могли быть обновлены программно.
Принцип кодирования
Базовый набор Code 39
Стандартный Code 39 использует 43 символа: 26 заглавных букв (A–Z), 10 цифр (0–9), пробел и 6 знаков препинания (точка, запятая, минус, плюс, косая черта, знак процента). Каждый символ кодируется девятью элементами (пятью штрихами и четырьмя пробелами), из которых три элемента являются широкими, а шесть — узкими. Это обеспечивает самоконтроль: ошибка в ширине элемента обнаруживается на этапе декодирования.
Расширение до Full ASCII
Full ASCII Code 39 использует четыре специальных префикса для кодирования дополнительных символов:
- $ — для кодирования строчных букв (a–z) и некоторых знаков препинания.
- / — для кодирования управляющих символов (например,
NUL,SOH). - % — для кодирования символов с кодами 0–31 (управляющие) и некоторых специальных.
- + — для кодирования символов с кодами 128–255 (расширенная ASCII, хотя на практике редко используется).
Пример: строчная буква a кодируется как +A (префикс + и заглавная A), буква z — как +Z. Символ @ (коммерческое at) кодируется как %V. Таким образом, один символ Full ASCII Code 39 занимает в штрих-коде два символа базового набора, что увеличивает длину кода примерно вдвое по сравнению с кодированием только заглавных букв.
Декодирование
Сканер, поддерживающий Full ASCII Code 39, распознаёт префикс и преобразует следующую за ним пару символов в соответствующий ASCII-символ. Если сканер не поддерживает расширенный режим, он выводит два символа как есть (например, +A вместо a), что может привести к ошибкам в системах, ожидающих один символ.
Структура штрих-кода
Штриховой код Full ASCII Code 39 состоит из следующих элементов:
- Стартовый символ — всегда символ
*(звёздочка), который не является частью данных. - Данные — последовательность символов, закодированных в соответствии с правилами Full ASCII.
- Контрольная сумма — не предусмотрена в стандарте Code 39; ошибки выявляются только за счёт самоконтроля структуры.
- Стоп-символ — также символ
*.
Каждый символ кодируется пятью штрихами и четырьмя пробелами. Широкие элементы (штрихи или пробелы) в 2–3 раза шире узких. Пробелы между символами (межсимвольные интервалы) равны ширине узкого элемента.
Применение
Здравоохранение
Full ASCII Code 39 широко используется в лабораториях и больницах для маркировки образцов крови, мочи и других биоматериалов. Возможность кодировать строчные буквы и специальные символы (например, дефис, точка) позволяет точно указывать идентификаторы пациентов, даты и типы анализов. В России этот стандарт применяется, например, в системах лабораторной диагностики, где требуется совместимость с международными протоколами.
Логистика и складской учёт
В складских системах Full ASCII Code 39 используется для маркировки товаров, содержащих буквенно-цифровые коды с учётом регистра (например, серийные номера, артикулы). Однако из-за большей длины кода (по сравнению с Code 128 или Data Matrix) он постепенно вытесняется в пользу более компактных форматов.
Промышленность
На производственных линиях Full ASCII Code 39 применяется для маркировки деталей и узлов, где требуется высокая надёжность считывания. Стандарт устойчив к повреждениям и может быть напечатан на различных поверхностях (пластик, металл, бумага).
Документооборот
В некоторых организациях Full ASCII Code 39 используется для маркировки документов, содержащих сложные идентификаторы (например, с дефисами и строчными буквами). Однако из-за отсутствия встроенной контрольной суммы для критически важных данных предпочитают Code 128 или QR-код.
Преимущества и недостатки
Преимущества
- Самоконтроль — каждый символ имеет фиксированное количество широких элементов, что позволяет обнаруживать ошибки считывания.
- Обратная совместимость — сканеры, не поддерживающие Full ASCII, могут читать код как обычный Code 39, хотя и с потерей информации.
- Простота печати — не требует сложных алгоритмов генерации, поддерживается большинством принтеров штрих-кодов.
- Устойчивость к повреждениям — благодаря избыточности структуры код можно считывать даже при частичном повреждении.
Недостатки
- Большая длина — кодирование одного символа Full ASCII требует двух символов базового набора, что увеличивает физическую длину кода на 50–100% по сравнению с другими стандартами (например, Code 128).
- Отсутствие контрольной суммы — в отличие от Code 39 с опциональной контрольной суммой (Mod 43), Full ASCII Code 39 не имеет встроенной проверки целостности, что может привести к ошибкам при считывании в условиях помех.
- Ограниченная поддержка — некоторые старые сканеры не распознают префиксы и выводят два символа вместо одного, что требует настройки ПО.
- Низкая плотность данных — по сравнению с двумерными кодами (QR, Data Matrix) Full ASCII Code 39 занимает больше места при том же объёме информации.
Сравнение с другими форматами
| Характеристика | Full ASCII Code 39 | Code 128 | Data Matrix |
|---|---|---|---|
| Тип кода | Линейный | Линейный | Двумерный |
| Поддержка ASCII | Полная (128 символов) | Полная (128 символов) | Полная (256 символов) |
| Длина на символ | 2 символа базового набора | 1 символ | 1 символ |
| Контрольная сумма | Нет | Есть (Mod 103) | Есть (Reed-Solomon) |
| Плотность данных | Низкая | Высокая | Очень высокая |
| Устойчивость к повреждениям | Средняя | Средняя | Высокая |
| Применение | Логистика, медицина | Розничная торговля, транспорт | Промышленность, документы |
Интересные факты
- Название — Code 39 получил своё название из-за того, что в базовом наборе 39 символов (43 минус 4 специальных, используемых как префиксы).
- Стандартизация — Code 39 описан в стандартах ANSI/AIM BC1-1995 и ISO/IEC 16388:2007, но Full ASCII Code 39 не является отдельным стандартом — это лишь соглашение о кодировании.
- Использование в России — в российской промышленности Full ASCII Code 39 применяется реже, чем Code 128, из-за большей длины кода и отсутствия встроенной контрольной суммы. Однако в некоторых медицинских учреждениях он сохраняется для совместимости с международными системами.
- Ограничения — из-за отсутствия контрольной суммы Full ASCII Code 39 не рекомендуется для кодирования критически важных данных (например, финансовых транзакций или медицинских рецептов), где ошибка может привести к серьёзным последствиям.
Источники
- ANSI/AIM BC1-1995 — Unified Symbol Specification for Code 39.
- ISO/IEC 16388:2007 — Information technology — Automatic identification and data capture techniques — Code 39 bar code symbology specification.
- Honeywell (Intermec) — Technical documentation for Code 39 and Full ASCII Code 39.
- ГОСТ Р 51294.3-99 — Штриховое кодирование. Символика Code 39. Основные требования (аналог международного стандарта).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →