ラベル プリンターは、TSPL、ZPL、EPL などのプログラミング言語をサポートできます。今日は、TSPL 言語の概要を説明します。 TEXT
、 BARCODE
、 QRCODE
などの TSPL コマンドを使用してラベルを作成できます。たとえば、テキストとバーコードを含むラベルを印刷する場合、これらのコマンドを位置やサイズなどのプロパティと共に使用し、これらのコマンドを Bluetooth またはシリアル接続を介してラベル プリンターに送信します。
左側に TSPL コマンド、右側に印刷されたラベルが表示されます。使用可能なすべてのコマンドはここで見つけることができますが、TSPL の使用方法を理解するためにそれらのいくつかを見てみましょう。
TEXT
、 BARCODE
、またはBITMAP
のいずれであっても、通常、座標とサイズはドット単位です。 1 インチあたりのドット数は、プリンターの DPI によって異なります。
たとえば、プリンターが
これによると、高さ 10mm のバーコードを追加したい場合、プリンターが 203DPI の場合、高さを80 (10mm x 8 = 80 ドット) に設定する必要があります。
次のように、ラベルのサイズをプリンターに伝える必要があります。
SIZE 4,1
ここでは、ラベルのサイズは 4x1 インチであると述べました。
メートル法 (mm) で設定することもできます。
SIZE 50 mm,25 mm
ラベル間のスペースであるギャップを設定できます ( GAP m,n
)。
GAP 0,0
ここで、ギャップは 0 インチです。これは、連続したラベルであることを意味します。
TEXT
コマンドを使用して、ラベルにテキストを印刷できます。位置、フォント サイズ、回転などを指定できます。
TEXT x,y,“font”,rotation,x-multiplication,y-multiplication,[alignment,] “content”
パラメータ | 説明 |
---|---|
x、y | x および y 座標 |
フォント | 通常、1 ~ 8 を設定できます (1 は小さい、2 は大きい… 8 は大きい)。 |
回転 | 時計回りに0、90、180、270 |
x と y の乗算 | 倍率 1 ~ 10 |
アラインメント | 1-左、2-中央、3-右 (オプション) |
コンテンツ | テキストの内容 |
サンプル コマンド | 結果 |
---|---|
|
BARCODE
コマンドを使用して、ラベルにバーコードを追加できます。
BARCODE X,Y,”code type”,height,human-readable,rotation,narrow,wide,[alignment,]”content”
パラメータ | 説明 |
---|---|
x、y | x および y 座標 |
コードタイプ | 128、EAN128、EAN13… |
身長 | ドットの高さ |
人間が読める | 0 - バーコード値 (テキスト) は表示されません |
回転 | 時計回りに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 m[,n]
コマンドを使用してこれを行います。
コマンド | 説明 |
---|---|
| - ラベルのサイズを設定 |
3 つのラベルを印刷します。 「テキスト 1」の 1 つのラベルと「テキスト 2」の 2 つのラベル。
最後にEND
コマンドを追加して、印刷が終了したことをプリンターに伝えます。このコマンドがないと、プリンターはバッファー内の最後のイメージを印刷しない場合があります。
生成されたコマンドは、シリアルまたは Bluetooth 経由でプリンターに送信できます。これを実証するために、Node.js を使用して簡単なコードを作成しました。 「 usb 」パッケージを使用して接続し、コマンドを送信しました (Windows では、ドライバーをインストールする必要がある場合があります。詳細については、パッケージのページを参照してください)。
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プロジェクトに実装するとき、ラベルの印刷に関する情報を少しずつ収集する必要がありました。ですから、同じような状況にある誰かの出発点になることを願って、この記事を書きました。
戦争反対! ✋🏽