Как лучше напечатать спецсимволы на термопринтерах Godex?

Ссылка скопирована
1 ответ

По вводным: есть несколько термопринтеров Godex, на них печатаются коды для "Честного знака".
По вводным: стандарт Datamatrix кода для "Честного знака" (точнее это GS1 Datamatrix) предусматривает первый символ и разделение некоторых полей (91, 92, 93) по символу. Уже давно где-то в примерах мы нашли, что для печати в Datamatrix на EZPL нужно поставить последовательность "~1" в команду XRB (печать Datamatrix), программа GoLabel при формировании этикетки с Datamatrix кодом (если подставляешь символ GS) выводит его в EZPL в виде "", но если отправить это на принтер - то так и напечатается, то же и с

Сейчас ситуация такая: печать ведется прямая, на языке EZPL, по сети на порт 9100. Документацию читали - пока не дало результата.
Сейчас ситуация такая: единстыенное, что нашли - при печати штрихкода Code 128 с нужно подставить в данные комады BQ - "&G", но это не работает для команды XRB (печать Datamatrix)

Нужно понять: вопрос - как в начало Datamatrix вставить при печати на EZPL через команду XRB?

Сейчас ситуация такая: p.S. В большинстве случаев это не на что не влияет, так как сканер при сканировании Datamatrix удаляет как признак начала, но сохраняет как разделитель. Но есть пара случаев, когда это не проходит:
Сейчас ситуация такая: - какая то экзотическая модель кассового аппарата (мы пока не определили ее)
Сейчас ситуация такая: - программа "ЧЗ бизнес", которая четко говорит, что структура Datamatrix не соотвествует стандарту (причем обычная программа "Честный знак" нормально коды без переваривает.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Мария Код Ответ

Для “Честного знака” важен не просто DataMatrix, а корректная передача управляющего символа GS/FNC1. В языках принтеров это часто реализуется специальной escape-последовательностью, но у разных моделей Godex и разных команд EZPL она может отличаться. Поэтому вариант, который работает в Code128 через &G, не обязан работать в XRB для DataMatrix.

Первое, что нужно проверить: какой именно символ ожидает команда XRB для GS1 DataMatrix. В некоторых языках печати используется ~1 как FNC1, но это может быть только режим генератора/редактора, а не сырая команда принтера.

Практический путь:

  • сформируйте этикетку в GoLabel, где код точно сканируется правильно;
  • экспортируйте/посмотрите raw EZPL, который GoLabel отправляет на принтер;
  • сравните его с тем, что отправляет ваша программа;
  • отправьте оба варианта напрямую на порт 9100 и сравните результат сканером.

Важно проверять не “как выглядит квадрат”, а что реально считывает 2D-сканер. Для GS1 DataMatrix сканер должен видеть разделители групп, а не буквальный текст ~1 или пустую строку.

Если нужно отправить управляющий символ как байт, может потребоваться не строка ~1, а ASCII GS 0x1D. В коде это часто выглядит так:

$gs = chr(29);
$data = '010460...' . $gs . '91...' . $gs . '92...';

$gs = chr(29); $data = '010460...' . $gs . '91...' . $gs . '92...';

Но будет ли XRB принимать сырой 0x1D, зависит от прошивки/команды. Иногда команда DataMatrix сама требует escape, а иногда принимает binary data.

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

Итог: снимите эталонный EZPL из GoLabel, сравните raw-команду и проверьте вариант с ASCII GS 0x1D. Для маркировки ориентируйтесь по результату сканирования GS1, а не по визуальному виду кода.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

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

Вам также может быть интересно