Принтер Brother Esc/P

Я хочу напечатать ценовые этикетки для списка продуктов. Я не могу использовать CSV, так как цены меняются, и я делаю это через внутреннее приложение. Как отправить как массив данных на принтер. Я могу печатать по одной этикетке за раз, но это медленно. С помощью программного обеспечения P Template он печатает очень быстро. Любая помощь приветствуется.

Я посылаю команды на принтер в шестнадцатеричном формате, и они работают нормально. Можно печатать в режиме Esc/P и в режиме P Template. P Шаблонный режим лучше, так как макет может быть установлен и сохранен на принтере, тогда все, что мне нужно сделать, это отправить данные объекта.

Любая помощь о том, как отправить массив сортов, будет принята с благодарностью.

1 ответ

Мы используем компьютер Mac (любой Unix-компьютер будет делать то же самое) и отправляем данные на принтер из простого сценария bash. Если вы используете компьютер с ОС Windows, он будет работать точно так же, просто найдите способ отправки двоичных данных на последовательный порт / порт USB.

(Причина, по которой мы предпочитаем машину Unix, потому что мы также общаемся с внешней базой данных сервера через Интернет, что является простой задачей в сценариях Unix).

Все машины Unix имеют команду lp, которая может отправлять двоичные данные на принтер. Я написал скрипт в терминале bash, который анализирует его аргументы, копирует их в переменную data и отправляет эту переменную data на принтер.

Короче говоря, небольшая этикетка может быть напечатана так:

data="\x1Bia\x00"       # set esc_p mode
data="${data}\x1B@"     # initialize printer (resets many variables)
data="${data}\x1BX\x32" # set font height
data="${data}Hello"     # the actual data to be printed
data="${data}\x0C"      # advances the page (basically prints the label)

# Check your binary on the screen (for debugging):
echo -ne $data | hexdump -C

# Send the data to the printer
echo -ne $data | lp -d Brother_PT_P900W

Конечно, вы должны заменить "Brother_PT_P900W" своим именем принтера.

Другие вопросы по тегам