Máy in nhãn có thể hỗ trợ các ngôn ngữ lập trình như TSPL, ZPL, EPL, v.v. Hôm nay chúng ta sẽ tìm hiểu tổng quan về ngôn ngữ TSPL. Chúng ta có thể xây dựng nhãn bằng cách sử dụng các lệnh TSPL như TEXT
, BARCODE
và QRCODE
. Ví dụ: nếu chúng tôi muốn in nhãn có văn bản và mã vạch, chúng tôi sử dụng các lệnh này với các thuộc tính của chúng như vị trí hoặc kích thước và gửi các lệnh này đến máy in nhãn qua kết nối Bluetooth hoặc Serial.
Ở phía bên trái, bạn có thể thấy các lệnh TSPL và nhãn in ở phía bên phải. Bạn có thể tìm thấy tất cả các lệnh có sẵn ở đây , nhưng hãy xem một số lệnh trong số đó để hiểu cách sử dụng TSPL.
Cho dù đó là TEXT
, BARCODE
hay BITMAP
, nói chung, tọa độ và kích thước đều ở dạng dấu chấm. Số chấm trên mỗi inch phụ thuộc vào DPI của máy in.
Ví dụ: nếu máy in
Theo điều này, nếu chúng ta muốn thêm mã vạch có chiều cao 10mm và máy in là 203DPI, thì chúng ta nên đặt chiều cao là 80 (10mm x 8 = 80 chấm).
Chúng ta cần cho máy in biết kích thước của nhãn như sau:
SIZE 4,1
Ở đây chúng tôi đã nói rằng kích thước của nhãn là 4x1 inch.
Chúng tôi cũng có thể đặt nó trong một hệ thống số liệu (mm):
SIZE 50 mm,25 mm
Chúng ta có thể đặt khoảng cách là khoảng cách giữa các nhãn ( GAP m,n
).
GAP 0,0
Ở đây khoảng cách là 0 inch có nghĩa là nó là một nhãn liên tục.
Chúng ta có thể sử dụng lệnh TEXT
để in một văn bản trên nhãn. Chúng tôi có thể cung cấp vị trí, kích thước phông chữ, xoay vòng, v.v.:
TEXT x,y,“font”,rotation,x-multiplication,y-multiplication,[alignment,] “content”
Tham số | Sự mô tả |
---|---|
x, y | tọa độ x và y |
nét chữ | Nói chung, chúng ta có thể đặt 1-8 (1-nhỏ, 2-lớn hơn… 8-lớn nhất) |
Vòng xoay | 0, 90, 180, 270 theo chiều kim đồng hồ |
phép nhân x và y | Hệ số thang đo 1-10 |
sự liên kết | 1 bên trái, 2 giữa, 3 bên phải (tùy chọn) |
Nội dung | Nội dung văn bản |
Các lệnh mẫu | Kết quả |
---|---|
|
Chúng ta có thể thêm mã vạch vào nhãn bằng lệnh BARCODE
:
BARCODE X,Y,”code type”,height,human-readable,rotation,narrow,wide,[alignment,]”content”
Tham số | Sự mô tả |
---|---|
x, y | tọa độ x và y |
loại mã | 128, EAN128, EAN13… |
Chiều cao | Chiều cao tính bằng dấu chấm |
con người có thể đọc được | 0 - giá trị mã vạch (văn bản) không hiển thị |
Vòng xoay | 0, 90, 180, 270 theo chiều kim đồng hồ |
chật hẹp | Chiều rộng của phần tử hẹp tính bằng dấu chấm |
rộng | Chiều rộng của phần tử rộng tính bằng dấu chấm |
sự liên kết | 1 bên trái, 2 giữa, 3 bên phải (tùy chọn) |
Nội dung | Nội dung của mã vạch |
Các lệnh mẫu:
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"
Kết quả:
Sau khi xây dựng nhãn, chúng ta cần nói với máy in rằng nhãn đã sẵn sàng để in. Chúng tôi sử dụng lệnh PRINT m[,n]
để thực hiện việc này:
Lệnh | Sự mô tả |
---|---|
| - Đặt kích thước của nhãn |
Nó in ba nhãn; một nhãn có “Văn bản 1” và hai nhãn có “Văn bản 2”.
Chúng tôi thêm lệnh END
vào cuối để cho máy in biết rằng chúng tôi đã in xong. Nếu không có lệnh này, máy in có thể không in hình ảnh cuối cùng trong bộ đệm.
Các lệnh đã tạo có thể được gửi đến máy in qua Serial hoặc Bluetooth. Để chứng minh điều này, tôi đã tạo một mã đơn giản bằng Node.js. Tôi đã sử dụng gói ' usb ' để kết nối và gửi lệnh (Trên Windows, bạn có thể cần cài đặt trình điều khiển, để tìm hiểu thêm, hãy truy cập trang của gói ).
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(); });
Và kết quả:
Tôi đã phải thu thập thông tin từng phần về việc in nhãn khi triển khai tính năng này trên dự án POS & Inventory của Alto . Vì vậy, tôi viết bài này với hy vọng rằng nó sẽ là điểm khởi đầu cho một ai đó trong hoàn cảnh tương tự.
Không chiến tranh! ✋🏽