Escpos Thermal ZJ-58 Python Code128 条码打印无任何显示

问题描述

from escpos.printer import Usb

p = Usb(0x0416,0x5011,0x81,0x03)
p.text("=================\n")
#p.image("./barcode/barcode.png")
#p.barcode('1324354657687','EAN13',64,2,'','./fonts/code128.ttf')
### barcode(code,bc,width,height,pos,font)
p.barcode("{B012ABCDabcd","CODE128",function_type="B")
# Print QR Code
#p.qr("You can readme from your smartphone")
#p.cut()
#print(p.control('LF',16))
#print(p.device)

我尝试打印 code128 和 ean 条码。我只有这样的文字;

@1324354657687

@I{B012ABCDabcd

。我尝试添加字体文件(这没有用)、更改代码类型和其他一些无用的东西。我研究了互联网上的文件和手册。我可以打印文本和图像。

我用这个https://github.com/escpos/python-escpos

我使用的打印机:紫江热敏ZJ-5890

知道为什么我只得到字母而不是条形码吗?

解决方法

您提供的库在查看源代码时不支持 Code128 条码。
python-escpos/escpos/escpos.py#L150

def barcode(self,code,bc,width,height,pos,font):
    """ Print Barcode """
    ... Omitted on the way ...
    # Type 
    if bc.upper() == "UPC-A":
        self._raw(BARCODE_UPC_A)
    elif bc.upper() == "UPC-E":
        self._raw(BARCODE_UPC_E)
    elif bc.upper() == "EAN13":
        self._raw(BARCODE_EAN13)
    elif bc.upper() == "EAN8":
        self._raw(BARCODE_EAN8)
    elif bc.upper() == "CODE39":
        self._raw(BARCODE_CODE39)
    elif bc.upper() == "ITF":
        self._raw(BARCODE_ITF)
    elif bc.upper() == "NW7":
        self._raw(BARCODE_NW7)
    else:
        raise BarcodeTypeError()
    # Print Code

似乎有一个同名的库,为什么不尝试使用它呢?
python-escpos 2.2.0
python-escpos/python-escpos
python-escpos - Python library to manipulate ESC/POS Printers
Printing Barcodes

Escpos.barcode(code,height=64,width=3,pos='BELOW',font='A',align_ct=True,function_type=None,check=True)

参数

  • 公元前 –
    类型 B 的可能值:
    • CODE128
    • GS1-128

CODE128
Code128 条码需要一定的格式。现在,用户必须确保有效载荷是正确的。对于字母数字 CODE128,您必须以 {B.

开头您的有效负载
from escpos.printer import Dummy,Serial
p = Serial()
# print CODE128 012ABCDabcd
p.barcode("{B012ABCDabcd","CODE128",function_type="B")