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ư , và . 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. TEXT BARCODE QRCODE Ở 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 , nhưng hãy xem một số lệnh trong số đó để hiểu cách sử dụng TSPL. ở đây Tọa độ và kích thước bằng dấu chấm Cho dù đó là , hay , 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. TEXT BARCODE BITMAP Ví dụ: nếu máy in 203 DPI → có nghĩa là có 203 điểm trong một inch, hoặc có 8 điểm trong 1 mm. 300 DPI → có nghĩa là có 300 điểm trong một inch, hoặc có 11,8 điểm trong 1 mm. 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à (10mm x 8 = 80 chấm). 80 Kích thước và khoảng cách của nhãn 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ữ Chúng ta có thể sử dụng lệnh để 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 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ả 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" Mã vạch 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ị 1 - văn bản được căn trái 2 - căn giữa 3 - căn phải 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ả: Lệnh PRINT và END 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 để thực hiện việc này: PRINT m[,n] Lệnh Sự mô tả 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 - Đặt kích thước của nhãn - Xóa bộ đệm - Thêm văn bản - In bộ đệm một lần - Xóa bộ đệm - Thêm văn bản - In bộ đệm hai lần - Kết thúc chương trình 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 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. END In bằng JavaScript (Node.js) 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 ' ' để 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, ). usb để 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 . 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ự. POS & Inventory của Alto Không chiến tranh! ✋🏽