paint-brush
Cách in nhãn bằng TSPL và JavaScripttừ tác giả@altynberg
24,425 lượt đọc
24,425 lượt đọc

Cách in nhãn bằng TSPL và JavaScript

từ tác giả Altynbek Usenbekov2022/05/26
Read on Terminal Reader
Read this story w/o Javascript

dài quá đọc không nổi

Máy in nhãn có thể hỗ trợ các ngôn ngữ lập trình như TSPL, ZPL, EPL, v.v. Chúng ta có thể tạo nhãn bằng cách sử dụng các lệnh T SPL như `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. Số chấm trên mỗi inch phụ thuộc vào DPI của máy in.

Company Mentioned

Mention Thumbnail
featured image - Cách in nhãn bằng TSPL và JavaScript
Altynbek Usenbekov HackerNoon profile picture

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 , BARCODEQRCODE . 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.

Tọa độ và kích thước bằng dấu chấm

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

  • 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à 80 (10mm x 8 = 80 chấm).

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 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ả

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 PRINT m[,n] để thực hiện việc này:

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 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.

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 ' 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! ✋🏽