Когда я работал в стартапе на ранней стадии, который создавал платформу электронной коммерции 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