标签打印机可以支持 TSPL、ZPL、EPL 等编程语言。今天我们将概述 TSPL 语言。我们可以使用 、 和 等 TSPL 命令构建标签。例如,如果我们想打印带有文本和条形码的标签,我们使用这些命令及其位置或大小等属性,并通过蓝牙或串行连接将这些命令发送到标签打印机。 TEXT BARCODE QRCODE 在左侧,您可以看到 TSPL 命令和右侧的打印标签。您可以 找到所有可用的命令,但让我们看一下其中的一些命令以了解如何使用 TSPL。 在此处 以点为单位的坐标和大小 无论是 、 还是 ,通常坐标和大小都以点为单位。每英寸的点数取决于打印机的 DPI。 TEXT BARCODE BITMAP 例如,如果打印机是 203 DPI → 表示一英寸有 203 个点,或 1 毫米有 8 个点。 300 DPI → 表示一英寸有 300 个点,或 1 毫米有 11.8 个点。 据此,如果我们要添加一个高度为 10mm 的条码,并且打印机是 203DPI,那么我们应该将高度设置为 (10mm x 8 = 80 点)。 80 标签的尺寸和间隙 我们需要像这样告诉打印机标签的大小: SIZE 4,1 这里我们说标签的尺寸是 4x1 英寸。 我们还可以将其设置为公制 (mm): SIZE 50 mm,25 mm 我们可以设置标签之间的间隙( )。 GAP m,n GAP 0,0 这里的间隙为零英寸,这意味着它是一个连续的标签。 文本 我们可以使用 命令在标签上打印文本。我们可以给出位置、字体大小、旋转等等: TEXT TEXT x,y,“font”,rotation,x-multiplication,y-multiplication,[alignment,] “content” 范围 描述 x, y x 和 y 坐标 字体 一般我们可以设置1-8(1-small, 2-big... 8-biggest) 回转 0, 90, 180, 270 顺时针方向 x 和 y 乘法 比例因子 1-10 结盟 1左、2中、3右(可选) 内容 文字内容 示例命令 结果 TEXT 10,20,"1",0,1,1,"FONT 1" TEXT 10,70,"2",0,1,1,"FONT 2" TEXT 10,120,"3",0,1,1,0,"FONT 3" 条码 我们可以使用 命令将条形码添加到标签: BARCODE BARCODE X,Y,”code type”,height,human-readable,rotation,narrow,wide,[alignment,]”content” 范围 描述 x, y x 和 y 坐标 代码类型 128、EAN128、EAN13… 高度 以点为单位的高度 人类可读 0 - 条码值(文本)不可见 1 - 文本左对齐 2 - 居中对齐 3 - 右对齐 回转 0, 90, 180, 270 顺时针方向 狭窄 窄元素的宽度(以点为单位) 宽的 宽元素的宽度(以点为单位) 结盟 1左、2中、3右(可选) 内容 条码内容 示例命令: TEXT 10,10, "2",0,1,1, "Human readable alignment" BARCODE 10,50, "128",100,1,0,2,2,"left" BARCODE 310,50, "128",100,2,0,2,2,"center" BARCODE 610,50, "128",100,3,0,2,2,"right" 结果: PRINT 和 END 命令 建立标签后,我们需要告诉打印机标签已准备好打印。我们使用 命令来做到这一点: PRINT m[,n] 命令 描述 SIZE 50 mm,25 mm CLS TEXT 10,10, "2",0,1,1, "Text 1" PRINT 1 CLS TEXT 10,10, "2",0,1,1, "Text 2" PRINT 2 END - 设置标签的大小 - 清除缓冲区 - 添加文字 - 打印一次缓冲区 - 清除缓冲区 - 添加文字 - 两次打印缓冲区 - 程序结束 它打印三个标签;一个带有“Text 1”的标签和两个带有“Text 2”的标签。 我们在最后添加 命令,告诉打印机我们已经完成了打印。如果没有此命令,打印机可能无法打印缓冲区中的最后一张图像。 END 使用 JavaScript (Node.js) 打印 生成的命令可以通过串行或蓝牙发送到打印机。为了演示这一点,我使用 Node.js 创建了一个简单的代码。我使用“ ”包连接和发送命令(在 Windows 上,您可能需要安装驱动程序, )。 usb 要了解更多信息,请访问包的页面 const usb = require('usb'); const cmds = [ 'SIZE 48 mm,25 mm', 'CLS', 'TEXT 10,10,"4",0,1,1,"HackerNoon"', 'BARCODE 10,60,"128",90,1,0,2,2,"altospos.com"', 'PRINT 1', 'END', ]; // you can get all available devices with usb.getDeviceList() let device = usb.findByIds(/*vid*/8137, /*pid*/8214); device.open(); device.interfaces[0].claim(); const outEndpoint = device.interfaces[0].endpoints.find(e => e.direction === 'out'); outEndpoint.transferType = 2; outEndpoint.transfer(Buffer.from(cmds.join('\r\n')), (err) => { device.close(); }); 结果: 当我在 项目中实现此功能时,我必须逐条收集有关打印标签的信息。所以我写了这篇文章,希望它能成为处于类似情况的人的起点。 Alto 的 POS & Inventory 没有战争! ✋🏽