Каково фактическое HEX / двоичное значение символа GS1 FNC1?
Я искал много страниц в Википедии, официальных спецификациях GS1, но пока не нашел однозначного ответа на вопрос
Каково фактическое HEX / двоичное значение символа GS1 FNC1?
Существует много информации о том, как использовать идентификаторы GS1, как печатать штрих-коды с помощью ZPL и как кодировать FNC1, но я хочу знать фактическое значение HEX этого символа.
2 ответа
Символы специальных функций, такие как FNC1 - FNC4, не имеют прямого представления ASCII. Каждая символика, которая поддерживает такие символы, имеет свою схему кодирования во внутреннем представлении, совершенно отличную от любых данных символов, ориентированных на байты.
Символы FNC служат как символы флага (обозначающие что-то особенное для читателя), так и символы форматирования (изменяющие значение закодированных данных). Как таковые они не предназначены для передачи непосредственно в данных, полученных хост-системой из базового устройства считывания штрих-кода.
Обычное назначение каждого из символов FNC таково:
- FNC1 - Символ флага структурированных данных, указывающий форматирование GS1 и AIM и символ форматирования разделителя группы, среди прочего.
- FNC2 - Сообщение Добавляет символ флага для буферизации данных в группах символов для одного чтения.
- FNC3 - символ флага Reader Programming для настройки устройства.
- FNC4 - расширенный символ форматирования ASCII для кодирования символов с порядковыми номерами 128-255.
Имейте в виду, что они не все могут быть доступны в определенных символах штрих-кода и могут даже указываться различными, нестандартными или перегруженными способами.
Кодирование символа FNC во внутренних данных символа осуществляется через "механизм выхода", специфичный для программного обеспечения кодирования. Например, чтобы использовать FNC1 в его типичной роли структурированных данных GS1 для данных "(01)00312345678906(21)123456789012(30)0144", вы можете увидеть символы FNC1, экранированные как {FNC1}
так что вход выглядит как {FNC1}010031234567890621123456789012{FNC1}300144
, Но каждая библиотека по-разному принимает эти символы, не относящиеся к данным, и некоторые даже автоматически вставляют необходимые символы [*].
При сканировании штрих-кода внутренние данные символа обычно декодируются, а затем передаются на хост по базовому каналу (например, клавиатуре) в виде последовательности байтов, которые должны интерпретироваться в соответствии с кодировкой символов Latin-1. Символы FNC не могут быть представлены таким образом и исключены из потока данных, однако их влияние на форматирование данных сохраняется.
Например, стандарты для большинства символов указывают, что когда символ FNC1 используется в качестве разделителя полей в данных, соответствующих стандартному формату идентификатора приложения GS1, он должен быть декодирован и передан как GS (ASCII 29). Явно указано, что эффект форматирования символа FNC1, используемого в качестве разделителя идентификатора приложения GS1, заключается в размещении символа GS в конце поля переменной длины. Но в других ролях (например, когда FNC1 используется в "первой / второй позиции" в качестве символа флага и с данными, не отформатированными в GS1), отсутствует эффект форматирования переносимых данных и, следовательно, отсутствует представление ASCII во время декодирования.
Другим примером символов специальных функций, оказывающих влияние на форматирование данных, являются символики, использующие FNC4 для расширения диапазона охвата от 7-битного ASCII до расширенного ASCII, как описано в этом ответе.
Тонкий технический момент заключается в том, что данные, передаваемые на хост, часто имеют префикс с коротким заголовком индикатора символа, который идентифицирует тип и использование символа, с которого считываются данные. Это часто модифицируется присутствием символов-невидимых флагов в данных символа, например, для указания наличия данных в формате GS1 с "FNC1 in first" или для указания режима программирования считывателя, когда FNC3 появляется в любом месте символа. Детали специфичны для символов.
[*]: Barcode Writer в Pure PostScript автоматически вставит соответствующие символы FNC1 для любой символики, данные которой предоставляются исключительно в стандартном формате идентификатора приложения GS1. Он также будет кодировать расширенные символы ASCII посредством автоматического использования символов FNC4, где символы поддерживают это.
Важно знать (и правильно настроить сканер), что символ FNC1 в первой позиции переводится в идентификатор символики в соответствии с ИСО / МЭК 15424. Модификатор m идентификатора символа показывает, был ли FNC1 или нет. Если этого не сделать, приложение больше не может видеть, была ли предназначена структура GS1 или нет. Другие структуры идентифицируются, например, макросом 06 в коде матрицы данных (ИСО / МЭК 16022, ИСО / МЭК 15434). Требуется определить разницу, чтобы принять правильные меры для обработки данных.