Принтер 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" своим именем принтера.