Как должен распознаваться символ gs в notepad
Перейти к содержимому

Как должен распознаваться символ gs в notepad

  • автор:

What does STX, SOH, and GS mean in Notepad++ output?

enter image description here

Upon reviewing the MIME source for an email (presumably containing international characters), I see stuff like this in Notepad++ I understand that CRLF is carriage return line feed, but what about the others? What do SOH , GS , and STX mean?

27.9k 11 11 gold badges 99 99 silver badges 119 119 bronze badges
asked Jul 17, 2015 at 21:36
2,690 14 14 gold badges 41 41 silver badges 59 59 bronze badges

2 Answers 2

Notepad++ uses these symbols to represent control characters or non-printing characters.

A control character or non-printing character is a code point (a number) in a character set, that does not represent a written symbol.

STX — Start of Text — First character of message text, and may be used to terminate the message heading.

SOH — Start of Header — First character of a message header.

GS — Group Separator — Can be used as delimiters to mark fields of data structures. If used for hierarchical levels, US is the lowest level (dividing plain-text data items), while RS, GS, and FS are of increasing level to divide groups made up of items of the level beneath it.

Как должен распознаваться символ gs в notepad

Что означает STX, SOH и GS в выходных данных Notepad++?

enter image description here

Я понимаю, что CRLF является возврат каретки перевод строки, но как насчет других? Что значит SOH , GS и STX В смысле?

2 ответов

Notepad++ использует эти символы для представления управляющих символов.

контрольный символ или непечатаемый символ является кодовой точкой (A число) в наборе символов, который не представляет написанный символ.

STX-начало текста — первый символ текста сообщения, и может быть использован расторгнуть Заголовок сообщения.

SOH-начало заголовка-первый символ заголовка сообщения.

GS — Group Separator — может использоваться в качестве разделителей для обозначения полей данные структуры. Если используется для иерархических уровней, US является самым низким уровень (деление текстовых элементов данных), в то время как RS, GS и FS имеют повышение уровня делить группы предметов на уровне под ним.

Малоизвестные факты о штрихкодах — загадочные цифры под штрихкодом

Число зверя, штрихи смерти — насколько все это реально? Можно ли зашить в штрихкод видеоролик или фото голой Эммы Уотсон? Бывают ли “неправильные штрихкоды”, и что вообще значит “неправильный штрихкод”?

В “Клеверенсе” мы разрабатываем платформу Mobile SMARTS для создания мобильных решений по учету маркированного товара и постоянно сталкиваемся с детскими ошибками в маркировке. Обычно они вызваны простым нежеланием людей хоть немного разбираться в теме.

Наша платформа тоже не идеальна, но кое-что в своём деле мы понимаем. Статья не к тому, что типа мы крутые и разбираемся, а все вокруг не крутые и не разбираются, нет. У каждого свои задачи, мы тоже часто лажаем. Просто тема набирает популярность и выходит в массы, а любые ошибки стоят денег.

Сначала для затравки расскажем про кассовый штрихкод, а затем про загадочный GS1 DataMatrix, который используется в проекте тотальной маркировки товаров.

Сама статья больше развлекательная, всё изложенное при желании легко гуглится, но может и побудить кого-то изучить тему глубже.

Загадочные цифры под штрихкодом

image

Цифры под штрихкодом — что это такое? Знающие люди говорят, что тут всё просто: именно эти цифры “зашиты” в штрихкод. Девушка на кассе вбивает в программу цифры под штрихкодом — и вуаля — товар найден.

К сожалению, это заблуждение. Цифры под штрихкодом не “зашиты” в штрихкод. Для разговоров у камина сойдет, а для айтишника беда.

Это распространенное заблуждение приводит к тому, что когда встает задача распечатать штрихкод, человек гуглит бесплатный онлайн генератор штрихкода, пихает в поле эти самые цифры, и… получает проблему на ровном месте.

Надписи под штрихкодом называются Human readable interpretation (HRI). Одно только название уже должно наводить на мысль, что тут не всё в порядке.

В самом мягком варианте вера в то, что цифры под штрихкодом повторяют содержимое штрихкода — это примерно как верить в то, что название файла определяет его содержимое. Типа: “Переименовала ваш файл в .doc, но он всё равно не открывается”.

Рассмотрим подробнее, где тут собака зарыта.

Кассовый штрихкод

Вот в этих двух штрихкодах (EAN-13) ниже, под которыми написано “4601200000003” и “0123456789128”, в обоих нет штрихов для первой цифры. В первом штрихкоде нет штрихов для “4” (она закодирована другим способом), а во втором штрихкоде вообще в принципе нет лидирующего нуля, хотя он и напечатан под штрихкодом.

imageimage

Да-да, именно первой цифры, а не последней (чексуммы) как можно было бы подумать. Последняя цифра (чексумма) в полосках этих штрихкодов как раз-таки есть, иначе затея с чексуммой не будет работать.

Рассмотрим поближе, что тут происходит.

В первом приведенном штрихкоде (“4601200000003”) в начале идут две длинные полосочки, они кодируют “начало штрихкода”, далее идут штрихи и пропуски для цифры “6”, затем про цифры “0”, “1”, “2”, “0” и “0”, две длинные полосочки в центре говорят про середину, затем пять одинаковых групп штрихов и пропусков кодируют “00000”, далее идут штрихи и пропуски для цифры “3” и завершающие две длинные полоски про конец штрихкода. Итого, в штрихкоде есть штрихи только про “601200000003”. Цифра “3” (последняя) в полосках штрихкода есть, а первой “4” нет! Откуда же взялась “4”?

Дело в том, что “4” закодирована грязным хаком. Для неё не хватает места, и вообще всё это большой исторический казус.

Изначально такие кассовые штрихкоды появились в США, там они состоят из 12 цифр и называются UPC (Universal Product Code). Для переноса технологии в Европу и адаптации стандарта Европе нужны были дополнительные цифры, потому что американские 12 все уже были заняты.

image

Чтобы расширить емкость, можно было бы просто добавить еще немного штрихов и пропусков, но в те времена это серьезно ухудшало считываемость. Поэтому вместо того, чтобы просто увеличить штрихкод в ширину, был применен “хак”.

По американскому стандарту любая из цифр штрихкода может быть записана: а) обычными штрихами и пропусками; б) их зеркальным отражением; в) инверсией черного и белого; г) зеркальной инверсией. Всё это нужно для того, чтобы можно было печатать инверсные штрихкоды (белым по черному) и сканировать штрихкод вверх ногами (зеркальное отражение в случае штрихкода — то же самое, что и поворот на 180°).

В “американском” штрихкоде (который на 12 цифр) первые 6 цифр кодируются обычными штрихами, а вторые 6 цифр инвертированными штрихами (где черные штрихи заменены на белые полоски и наоборот). Это сделано для того, чтобы понимать, перевернут штрихкод или нет, нормально я его сканирую или вверх ногами (и затем декодировать цифры в правильном порядке, а не задом наперед).

В новом “европейском” штрихкоде (который на 13 цифр), первая цифра (например, “4”) кодируется не штрихами, а путем «перетасовывания» способов кодирования следующих за ней 6 цифр из первого блока (второй блок из 6 оставили в покое).

Например, следующая за четверкой “6” выводится как обычно, штрихи следующего за ней “0” выводятся в обратном порядке (зеркально), следующие за ней “1” и “2” выводится снова в обычном виде, следующие два “0” снова зеркально. Общая длина штрихкода и число штрихов в результате этого трюка не меняется.

Для “американского сканера” такая белиберда не имеет смысла, а для Европы это тайный знак того, что в штрихкоде закодирована еще одна цифра! (да, мы всегда знали, что европейцы извращенцы).

Для всех цифр от “1” до “9” были придуманы такие правила тасовки способов кодирования. Для “0” ничего нет, т.е. 13-значный штрихкод с лидирующим нулем визуально ничем не отличается от 12-значного штрихкода без этого лишнего ноля (EAN-13 с лидирующим нулем эквивалентен UPC-А).

Из этого получается первый прикол, что если перед нами “американский” штрихкод (в котором варианты кодирования не “перетасованы”), то “американский сканер” читает 12 цифр, а условный “европейский сканер” может считать, что в нем есть лидирующий «0», и считывать лишний ноль (т.к. для кодирования ноля не предусмотрено никакой “перетасовки”, этого “лидирующего нуля” очевидно в принципе нигде нет в штрихкоде).

Конечно, мир давно глобализован, поэтому “американский” сканер и “европейский” сканер — это просто условности. Сканер один и тот же, но у него есть настройка: нужно ли ему в принципе считывать EAN-13 (Европа) или читать только UPC-А (США), а если считывать EAN-13, то надо ли добавлять лишний ноль к американским штрихкодам UPC-А.

С этим связана одна распространенная проблема при внедрении штрихкодирования: когда в базе данных у компании либо нет нолей в начале штрихкодов, а сканер считывает с “лишним” нолем, либо наоборот, в базе данных есть ноль в начале, а сканер его “не считывает” (хотя, что там считывать, — этого ноля в принципе в штрихкоде нет).

Казалось бы, сложно накосячить в использовании EAN-13/UPC. Тем не менее, люди делают следующие ошибки:

  • Сохраняют штрихкод в учетной системе без чексуммы (последнего знака).
  • Забывают обрабатывать присутствие/отсутствие лидирующего нуля при разработке алгоритма поиска по штрихкоду.
  • Требуют ввода 13 символов, а потом приходят сигареты с EAN-8 (с вводом маркировки табака станет неактуально, но пока так).
  • Не оставляют положенных широких белых полей справа и слева от штрихкода.

В наших программных продуктах, таких как “Магазин 15” или “Склад 15”, построенных на платформе Mobile SMARTS, мы решаем эту проблему очень просто: сканер устройства всегда автоматически настраивается на возврат ноля, а поиск товара по базе данных производится два раза: и с нолем, и без ноля (чтобы уж точно найти товар).

Сканер мы стараемся настраивать программно, без участия человека. Если сканер нельзя настроить программно — то это всегда проблема, потому что по умолчанию сканером может обрезаться не только 0 (который в начале), но еще и чексумма (которая в конце), тогда в программу придут не 13, а уже 11 символов, зачастую даже без указания типа штрихкода (такие замечательные сканеры тоже бывают).

В этом случае мы бессильны улучшить результат. 11 символов могли прийти от сканирования любого другого типа штрихкода, мы не можем считать все штрихкоды как EAN-13. Чтобы настроить сканер, человеку придется сканировать с листа настроечные штрихкоды или заходить в какие-нибудь меню, а всё это — источники ошибок.

GS1 DataMatrix

Ну ладно, допустим с EAN-13 можно придраться и сказать, что первая цифра всё-таки есть в штрихкоде, просто она закодирована не совсем штрихами (хотя для лидирующего “0” это и не так).

Возьмем тогда другой пример, штрихкод GS1 DataMatrix «(21)abba01(01)04601200000003»:

image

В этом штрихкоде “внутри” нет ни скобок, ни символа «0», ни буквы «a», ни переноса строки.

Что тут происходит?

Во-первых, никакие скобки в штрихкод не кодируются, они печатаются только для удобства прочтения человеком. Это снова называется Human readable interpretation (HRI), привет, кожаный мешок.

Во-вторых, в штрихкоде есть специальные управляющие символы, которые должна расставить та программа, которая формирует данные для штрихкода. Не какая-то бесплатная opensource программа, написанная умными очкариками, а ваша программа, та самая, которую пишете Вы, мой друг. В этот раз символы, которые нужно вставить, не имеют отношения к “коррекции” и т.п., а размечают данные, которые нужно закодировать в штрихкод.

В самом начале в штрихкод вставляется управляющий символ, который называется FNC1 и имеет код 232, что соответствует либо странному печатаемому символу «Þ» (ANSI), либо русской букве “и” (Windows-1251), смотря какую кодировку использовать. Этот символ говорит, что у нас не просто абы какой DataMatrix, а именно GS1 DataMatrix, данные в котором имеют определенный формат: массив данных из пар (“код поля”, “значение поля”).

Этот управляющий символ FNC1 попадает в самое начало штрихкода, но его нельзя “передать” в штрихкод в составе данных.

Кроме того, непечатаемые символы, вполне очевидно, нельзя копипастить в составе строки, хаха! Страдай, кожаный мешок!

Указание, нужен префикс или не нужен, обычно передают как отдельную настройку (галочку) в программу формирования штрихкода. Если передать префикс как часть данных, то получим либо ошибку, либо два префикса в штрихкоде (в зависимости от используемой программы).

Далее, поскольку в штрихкоде внутри нет скобок, то уже непонятно, где кончается одно поле и начинается другое, где тут номера полей. Без скобок получается “21abba010104601200000003” (тут “01” встречается три раза, ха-ха).

Где заканчивается “01” из значения поля (21) и начинается настоящее (01)?

Это решается следующим способом:

По стандарту GS1 поля имеют формат. Не абы что, а формат значения. Например, значение для (01) должно состоять из 14 цифр и баста (нельзя 13 цифр, нельзя 12 цифр, нельзя не цифры). А поле (21), наоборот, имеет переменную длину, разрешены цифры, латинские буквы обоих регистров, знаки препинания и даже (опачки!) скобки.

Если после значения для (21) штрихкод не закончился, и там еще что-то есть, то в данные вставляется разделитель (это может быть снова или FNC1, или непечатаемый символ GS с кодом 29).

А общее правило звучит так: спецсимвол GS не вставляется, только в случае если AI начинается с пары цифр из этой вот таблицы:

image

Для всех остальных полей GS1 (не из этой таблицы) в конце значения нужно вставлять GS.

Т.е., мы получим “FNC121abba01GS0104601200000003” (только помним, что первый FNC1 мы не будем передавать в программу формирования штрихкода, а второй GS — это не строка “GS”, а один символ с кодом 29).

Эти требования — именно про данные, а не про штрихкод DataMatrix, потому что в штрихкод DataMatrix можно положить любые данные, они прекрасно закодируются и прочитаются. Тут речь о GS1 DataMatrix, который имеет определенный формат, и ваша программа должна соблюсти этот формат, прежде чем подавать данные в штрихкод.

Вообще говоря, в мире существуют программы печати штрихкодов, которым можно скармливать данные со скобками и они сами всё разрулят. Но это специализированный софт, который стоит денег, а не тот бестолковый и бесплатный онлайн-генератор штрихкодов, которым вы пользуетесь.

И наконец. То, как это будет напечатано и то, как это будет отсканировано, — две большие разницы. То, как данные печатаются под штрихкодом, и как они передаются сканером — это в чистом виде настройки принтера и сканера.

В нашем примере мы закодировали в штрихкод поля порядке: сначала (21), потом (01), а на изображении под штрихкодом распечаталось сначала (01), потом (21). Это снова называется Human readable interpretation (HRI), и порядок вывода в подписи соответствует правилу “потому что так принято”.

Сканер штрихкодов тоже имеет свои настройки, которые заставляют его переставлять поля, вставлять скобки и другие символы, переносить строки и т.п.

В большинстве случаев сканер прочитает наш штрихкод как “21abba01GS0104601200000003”. Никакого лидирующего FNC1, никаких скобок, GS не печатаемый и не виден в “Блокноте” (нужно использовать хотя бы Notepad+).

И принтер, и сканер могут делать со штрихкодами что хотят: добавлять и убирать символы, менять их местами — ради соответствия гайдлайну или для совместимости со сторонней программой.

Что еще интересно: в этом штрихкоде только 16 байт данных (на 24 символа без скобок).

Вот что тут происходит:

  • пары подряд идущих цифр кодируются одним байтом;
  • все отдельно стоящие цифры, не парные, а также все символы из таблицы ASCII (а это символы с кодами с 0 по 127, без русских букв, и печатаемые, и непечатаемые) кодируются в штрихкод как (значение байта символа)+1.

Т.е. чтобы закодировать “a”, нужно записать в штрихкод “b”, чтобы закодировать “1”, нужно записать “2” и т.д., именно поэтому прямо в самом штрихкоде нет байта 97 (значение буквы “a” в ASCII).

Итого, в приведенном штрихкоде “закодировано” в байтах 232, 151, 98, 99, 99, 98, 131, 232, 131, 134, 190, 142, 130, 130, 130, 133. И это еще до кодов коррекции и паддинга!

Непонимание процесса кодирования приводит к тому, что, например, для начавшейся обязательной маркировки обуви люди печатают на принтер неправильно сформированные данные и получают неправильные штрихкоды, которые выглядят вполне нормально, читаются приложением “Честный знак”, но данные в них неверные, как минимум это не GS1 DataMatrix.

Штрихкоды неправильно напечатаны, неправильно читаются, и такая обувь не считается правильно промаркированной.

В своем софте “Кировка” мы боремся с этим следующим образом: для печати принимаем в качестве исходных данных любой мусор, пытаемся распарсить его как GS1 DataMatrix, разбираем на косточки. Если всё прошло удачно, то конвертируем в правильный формат, чтобы принтер это понял; а при сканировании перепроверяем данные от сканера, делая таким образом вывод о правильности печати.

Для этого нам, конечно, приходится работать на нативном уровне и со сканером мобильных устройств, и с принтерами, чтобы всё это было правильно ими интерпретировано, а мы собирали максимально полную информацию.

Выполним еще одно упражнение: посмотрим, какого размера должен быть штрихкод GS1 DataMatrix для хранения кода маркировки обуви и легпрома.

На сайте «Честного знака» написано, что код маркировки обуви должен содержать следующие поля (для легпрома те же требования):

  1. Кода товара, 14 цифровых символов (GTIN).
  2. Индивидуального серийного номера единицы товара, который генерируется оператором системы или участником оборота товаров, 13 символов (s/n).
  3. Ключ проверки, предоставляемый оператором системы, 4 символа.
  4. Код проверки, предоставляемый оператором системы, 88 символов.

Для каждого из этих полей в данных для штрихкода должен быть указан идентификатор применения GS1 (AI, application identifier).

image

Таблица codeword для DataMatrix

Таблица, объясняющая кодирование КМ обуви в DataMatrix:

Что Формат Codewords Сколько байт Всего байт, минимум Всего байт, максимум
Codeword [232] 1 1 1
AI (00) Codeword [130] 1 2 2
GTIN 14 цифр Codeword со [130] по [229] 7 9 9
AI (21) Codeword [141] 1 10 10
s/n 13 знаков ASCII Codewords с [1] по [128] и со [130] по [229] от 7 до 13* 17 23
Codeword 30 1 18 24
AI (91) Codeword 221 1 19 25
Ключ проверки 4 цифры Codeword с 130 по 229 4 23 29
AI (92) Codeword 222 1 24 30
Код проверки 88 знаков ASCII Codewords с [1] по [128] и со [130] по [229] от 44 до 88* 28 118

* если в данных для штрихкода есть пары подряд идущих цифр, то они будут кодироваться одним байтом, а не двумя (Codewords со [130] по [229]), и это экономит байты.

Как видно, размер данных в теории может меняться в широких пределах от 68 до 118 байт. На практике разброс меньше, длина ближе к 118, потому что в серийном номере и в криптокоде мало цифр и много знаков препинания, включая скобки.

Согласно GS1 DataMatrix Guideline, такие данные укладываются в штрихкоды размером от 36х36 до 44х44 (колонок и строк битов, не миллиметров). В миллиметрах размер будет зависеть от разрешающей способности принтера (обычно это 203-600 dpi).

image

Таблица из GS1 DataMatrix Guideline

Сканер не верно распознает символ GS в коде маркировки

Есть несколько компов. На них этот сканер работает корректно (в режиме клавиатуры) и код маркировки успешно распознается.
А на ноутбуке не корректно распознает символ GS вместо него ставит что-то вроде «[«

В итоге код маркировки не может быть распознан. Передает:

Причем самое главное, что все это я проверяю в терминале на сервере! то есть со всех компов к 1С подключаемся через rdp с пробросом портов. И все компы норм работают, а вот ноут бук ни в какую.. Сканер qbt2400

(1) я вроде понимаю что дело в ноуте. но не врубаюсь:
1) сканер я подключаю как клавиатуру , то есть вообще никаких драйверов не ставлю
2) все действие происходит по идее на сервере

Символ FNC1 в gs1 datamatrix

Данный символ FNC1 (Function 1 Symbol Character) также использует «Честный знак» в своем цифровом коде.

В коде маркировки, которую использует ЦРПТ, этот символ означает что это datamatrix gs1, а не какой другой.

Существует ряд сканеров штрихкода, которые умеют определять id и вместо FNC1 будет отображен спец символ ]d2, который также указывает причастность кода в GS1.

Также в коде маркировки должны присутствовать символы разделите GS он же alt код 029. Согласно таблице ASCII этот код называется (group separator) разделитель групп.

Символ GS на не которых сканерах в режиме alt чтения читаю его как просто 29 и вставляют символ , это можно проверить, прочитав код в программах типа notepad ++.

Также в коде маркировки datamatrix участвую различные AI каждая из которых несет конкретную информации к примеру GTIN, срок годности, номер партии и т.д

Related posts:

  1. Daz studio как экспортировать модель с ригом
  2. Почему процессор не загружается на 100
  3. Как добавить канал в телеграмме на телефоне
  4. Где можно приобрести платежную карту в москве

Как изменить регистр букв с помощью регулярного выражения в Notepad++

Например, есть много строк вида: Термин — определение . Как регулярными выражениями в Notepad++ сделать, чтобы термин был написан заглавными (прописными) буквами — ТЕРМИН ?

Отслеживать
4,314 14 14 золотых знаков 43 43 серебряных знака 94 94 бронзовых знака
задан 1 дек 2012 в 14:19
101 1 1 золотой знак 2 2 серебряных знака 4 4 бронзовых знака

Здесь описано как это сделать: stackoverflow.com/questions/1039226/… или ищите notepad++ regexp replace uppercase

1 дек 2012 в 15:10

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Протестировано на Sublime Text 3.

Предположим, «термин» и «определение» состоят из любых символов кроме переноса строки (т. к. согласно условиям автора саму строку составляют «Термин — определение»). Тогда:

Россия — Москва Гаити — Порт-О-Пренс Соломоновы острова — Хониара 4. тринидад и тобаго — Порт-оф-Спейн 
РОССИЯ — Москва ГАИТИ — Порт-О-Пренс СОЛОМОНОВЫ ОСТРОВА — Хониара 4. ТРИНИДАД И ТОБАГО — Порт-оф-Спейн 

(.*?) — любые 0 или более символов кроме переноса строки, используется ленивый квантор;
( — .*) — пробел — тире — пробел — любые 0 или более символов кроме переноса строки.
\U$1\E — содержимое первого подвыражения переводится в верхний регистр;
$2 — второе подвыражение остаётся неизменным.

С поддержкой шаблона поиска проблем возникнуть не должно, а вот в регулярном выражении замены используются мета-символы изменения регистра:

  • \U перевести в верхний регистр,
  • \E первые буквы слов в верхнем регистре,
  • \L перевести в нижний регистр.

Приведённые в таблице мета-символы замены являются специфичной особенностью некоторых текстовых редакторов, это нестандартное поведение для регулярных выражений.

Таблица поддержки мета-символов замены

 │ \U │ \E │ \L ──────────────┼─────┼─────┼────── Notepad++ │ + │ - │ + SublimeText3 │ + │ + │ + 

Как правильно сформировать GS1 DataMatrix

Для маркировки товаров используется штрихкод GS1 DataMatrix. Он позволяет кодировать идентификационные ключи системы GS1, а также любую дополнительную информацию о товаре (вес, срок годности, номер серии, номер партии, дата изготовления).

С введением в РФ обязательной маркировки — формировать, печатать и проверять коды GS1 DataMatrix должна научиться практически каждая организация.

Как правильно сформировать GS1 DataMatrix

В состав GS1 DataMatrix обязательно входят следующие элементы: 01 04650075195017 21 Z’%+*r_(()»‘L 91 TEST 92 dGVzdARbyfJOm1B1r1+Srw7F3Xc3hRKHDPUUcaGh2k=

  1. Байт со значением 232 (функциональный знак FNC1).
  2. (01) Код продукта (он же GTIN), 14 символов.
  3. (21) Серийный номер, 13 символов.
  4. ASCII 29 (разделитель групп данных, функциональный знак GS).
  5. (91) Ключ проверки, 4 символа.
  6. ASCII 29 (разделитель групп данных, функциональный знак GS).
  7. (92) Код проверки, 44 символа.

Идентификаторы применения ((01), (21), (91)) указаны в скобках только для удобства чтения человеком. При формировании данных для печати штрихкода GS1 DataMatrix идентификаторы применения вставляются в код маркировки без скобок.

Функциональные знаки FNC1 и GS в данном случае являются всего-лишь визуальным представлением реальных функциональных знаков. В таблице символов им не соответствуют какие-либо буквы или знаки, т.к. они являются непечатаемыми. Поэтому в строке кода маркировки, и тем более в данных штрихкода, они выглядят совсем не так (часто не отображаются вообще).

Поэтому очень важно понять, как правильно вставлять в последовательность данных кода маркировки эти символы, ведь без них он будет читаться некорректно.

Как правильно добавить FNC1 в последовательность данных

FNC1 — это специальный символ, который указывает, что закодированная последовательность является штрихкодом GS1. Именно он отличает DataMatrix от GS1 DataMatrix, который содержит идентификаторы применения GS1.В случае отсутствия этого символа технические средства не распознают код правильно и не смогут его корректно обработать.

Байт FNC1 находится в начале кодируемого штрихкода, но не является частью кодируемой последовательности.

В большинстве генераторов штрихкодов в качестве FNC1 используются специальные знаки (\F, $ 1 и т. п.), которые необходимо вручную вставлять в начало строки формируемого штрихкода. В некоторых программах они добавляются автоматически, если вы ранее выбрали тип создаваемого штрихкода GS1 DataMatrix. В этом случае бесполезно пытаться самостоятельно добавлять что-либо в начало кодируемой последовательности, нужно читать документацию по программе, формирующей штрихкод.

В некоторых библиотеках (dll, jar) в качестве FNC1 будет использоваться какой-то флаг или другая настройка. В этом случае также бесполезно пытаться что-то добавлять в начало кодируемой последовательности, нужно читать документацию по библиотеке.

Как правильно добавить GS1 в последовательность данных

GS (разделитель групп) — это специальный управляющий знак в символике GS1 DataMatrix, который используется для отделения одного поля от другого (как в данных в самом штрихкоде, так и в строке отсканированного штрихкода). GS не нужно использовать после каждого поля в штрихкоде. GS1 DataMatrix Guideline содержит список идентификаторов полей фиксированной длины, после которых знак GS не используется. Обычно в последовательность штрихкода добавляется только 2 знака GS.

Добавление GS в последовательность данных, как и в случае с FNC1, зависит от того, какое ПО используется для формирования штрихкода. Может использоваться какая-либо управляющая последовательность (обычно описана в документации), либо разделитель полей GS может передаваться как ASCII символ с кодом 29 (десятичное значение), 1D (шестнадцатеричное). Печатного представления этот символ обычно не имеет. GS нужно добавить после поля с идентификатором 21 и после поля с идентификатором 91.

Пример добавления FNC1 и разделителей в последовательность данных

В бесплатном онлайн-генераторе штрихкодов необходимо самостоятельно добавить в последовательность данных символы \F (в качестве FNC1) и \x1D (в качестве GS1).

Было: 010465007519501721Z’%+*r_(()»‘L91TEST92dGVzdARbyfJOm1B1r1+Srw7F3Xc3hR KHDPUUcaGJh2k=

Стало: \F 010465007519501721Z’%+*r_(()»‘L \x1D 91TEST \x1D 92dGVzdARbyfJOm1B1r1+Srw 7F3Xc3hRKHDPUUcaGJh2k=

Сформированный код GS1 DataMatrix можно проверить с помощью специального приложения «Чекмарк». Если он был сформирован верно, на экране появится следующее сообщение:

В противном случае приложение сообщит вам, где была допущена ошибка при формировании GS1 DataMatrix.

Основные ошибки, которые допускаются при формировании DataMatrix

  1. в начале последовательности отсутствует FNC1 (1 специальный символ);
  2. вместо спецсимвола FNC1 в начале вставлен текст «FNC1» (4 символа);
  3. вместо спецсимвола FNC1 в начале вставлен GS (должен быть только FNC1 . );
  4. не вставлены разделители групп данных после полей переменной длины (например, после серийного номера);
  5. разделители групп данных вставлены не туда, где они должны быть (например, после поля (01) GTIN, которое имеет фиксированную длину и не требует в конце разделителя);
  6. вместо спецсимвола GS вставлен текст «GS»;
  7. используются программы или алгоритмы для печати, которые непоправимо искажают информацию (например, удаляют из кода символы, которые они считают лишними. Зачастую это арифметические символы, скобки и т. п.).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *