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

Я собираюсь сразу перейти к техническим деталям и избегать каких-либо предысторий. Мы заказали Монохромный настольный принтер для прямой термопечати / переноса этикеток Zebra GC420T. У нас есть Raspberry Pi для подключения к принтеру.

Zebra GC420T совместим с языком программирования Zebra (ZPL). ZPL - это язык описания страниц от Zebra Technologies, используемый в основном для маркировки приложений.

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

Мне нужно было найти способ отправить .zpl файл на принтер, чтобы он выполнял код zpl. Я наткнулся на эту суть, которая делает то же самое.

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

Я подумал, что напишу сервер python, который работает в raspberry pi, который создаст файл zpl и отправит его на принтер.

Шаг 1. Подключение Raspberry PI к принтеру

Подключите raspberry pi к принтеру и подключите его к монитору, чтобы мы могли настроить наш принтер.

Zebra не предоставляет драйвер для использования в операционных системах Linux / Unix, но вместо этого предлагает использовать драйвер Common Unix Printing System (CUPS).

Я использовал CUPS, чтобы использовать пи в качестве сервера печати. Подробнее о CUPS можно прочитать здесь.

Примечание. Следующие изображения находятся на машине с Ubuntu для облегчения написания блога.

Как проверить, правильно ли настроен принтер?

Я использовал Labelary, чтобы легко редактировать zpl.

После того, как мой код zpl будет готов, вставьте его в файл .zpl и выполните следующую команду.

lp -d Zebra_Technologies_ZTC_GC420t_ -o raw code.zpl

В идеале принтер должен печатать контент, созданный вами в Labelary.

Шаг 2: Создание сервера Python

После того, как мы сможем распечатать контент, давайте попробуем сделать его более динамичным.

server.py

printToPrinter.py

Для создания MVP я использовал службу туннелирования, чтобы предоставить сервер клиенту, чтобы мы могли отправлять запросы в конечную точку, которая, в свою очередь, печатает все, что отправляется.

Я создал сценарии bash для автоматического использования службы и сервера туннелирования при запуске raspberry pi.

Больше контента на plainenglish.io