#python
#python
Вопрос:
Есть ли у кого-нибудь опыт работы с языком DLP?
Я пытаюсь использовать python для отправки некоторого текста и штрих-кодов, и теперь мне нужно отправить изображение bmp.
Мне действительно сложно читать документацию, поэтому я надеялся, что другие уже использовали ее раньше и смогут мне помочь.
Вот документация https://www.honeywellaidc.com/en/-/media/en/files-public/technical-publications/printers/1common/dpl_88-2360-01_b.pdf
Ответ №1:
Это абсолютно возможно. Вот как я делаю это в данный момент на принтере Datamax O’Neil, установленном в Windows. Приведенную ниже команду DPL можно отправить на принтер с помощью оболочки win32print для python или отправить непосредственно на IP-адрес принтера с помощью библиотеки сокетов:
Код DPL:
dpl_code = b'''<STX>LH15D11FA
191100200140035THIS IS SOME TEXT
1W1j00050010000THIS IS A CODE128 BARCODE
121100000850010
1Y1100501600315THIS_IS_AN_IMAGE_FILE_ALREADY_STORED_ON_THE_PRINTER
191100202650010THIS IS SOME MORE TEXT
E'''
< STX > должен быть заменен специальным символом (значение: 0x02 по умолчанию, которое не отображается как текст). Каждая строка представляет либо строку текста, либо графический компонент, такой как штрих-код или изображение, предварительно сохраненный в памяти принтера. для получения более подробной информации о синтаксисе языка обратитесь к справочнику команд DPL.
Для принтера, установленного в качестве принтера по умолчанию в Windows:
import win32print
printer_name = win32print.GetDefaultPrinter()
printer = win32print.OpenPrinter(printer_name)
win32print.StartDocPrinter(printer, 1, ("raw_data", None, "RAW"))
win32print.WritePrinter(printer, dpl_code)
win32print.EndDocPrinter(printer)
win32print.ClosePrinter(printer)
Для принтера, доступного по сети:
import socket
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as connection:
connection.settimeout(timeout)
connection.connect((ip_address, port))
connection.send(dpl_code)
response = connection.recv(1024)
Этот метод несколько успешен для меня, но я обнаружил, что работать с принтерами Zebra (ZPL) намного проще. Что касается отправки изображений и их печати, к сожалению, я пока не добился успеха. Мне нужно сначала предварительно сохранить изображение в памяти принтера (в виде файла BMP) с помощью программного обеспечения NetiraCT и обратиться к нему с помощью кода DPL.