由 小飛 | 2019/12/08
飛印盒子驅動標簽打印機的時候具有各種模式,這里常見的ZPL和EPL、TSC等概念是什么呢?
這些都是標簽語言的術語
條碼打印機是一種專業的打印設備,其打印實現方式與普通的激光、噴墨或針式打印機有所不同。
世界各大條碼打印設備廠商生產的打印機都采用了各自不同的打印語言以實現其打印,如Zebra系列的ZPL(斑馬條碼打印機工業型號),Eltron的EPL(斑馬條碼打印機桌面小機器),Datamax的DPL等。
與普通打印方式相比,采用打印語言的優點在于速度快,精度高,但由于沒有統一的標準打印語言,使得用戶在使用不同機器時會產生一定的麻煩,好在各種打印語言的語法比較類似,上手也是比較簡單的。
它們的工作原理其實很簡單:利用這些編程語言,編輯好一個打印的指令集,發送給條碼打印機,條碼打印機就會按照你事先編輯的命令去進行打印的工作。
不同品牌的打印機,打印指令是不一樣的,所以你用了ZPL來編程出來的指令,不能用在其他品牌的打印機上,包括EPL語言的機器上了。
ZPL標簽開發實例
一個最基本的標簽示例:
^XA ‘標簽格式開始命令
^LH30,30 ‘Label Home position設置標簽起始參考點坐標為30,30,默認為0,0
^FO20,10^AD^FDEXAMPLE^FS ‘ ^FO20,10-設置數據域起始坐標,距參考點20,10
^AD-設定字體為D(內部字體)
^FD-數據域開始命令
EXAMPLE實際打印內容
^FS-數據域分隔命令
^FO20,60^B3^FDAAA001^FS ‘^B3-選擇條碼類型為39碼
^XZ ‘標簽格式結束命令
打印示例如下:
下表中,對ZPLII一些常用命令做出解釋
| 命令 | 含義解釋 |
|---|---|
| _____________ | _____________________________________________ |
| ^XA | 標簽格式開始命令,請注意,每張標簽打印都需以此命令開頭 |
| _____________ | _____________________________________________ |
| ^LHx,y | 設置標簽起始參考點坐標,不使用此命令時默認為0,0 x:x軸坐標(0-9999),y:y軸坐標(0-9999) 注:計量單位為點(dot) 200dpi機器,8點=1mm 300dpi機器,12點=1mm |
| _____________ | _____________________________________________ |
| ^LTx | “標簽內容上下(Y軸)位置整體移動 x:移動的數值,范圍:-120 - +120點” |
| _____________ | _____________________________________________ |
| ^LSa | 標簽內容左右(X軸)位置整體移動 a:移動的數值,范圍:-9999 - +9999點 |
| _____________ | _____________________________________________ |
| ^FOx,y | 設置數據域(包括文字、條碼、圖形等) 起始坐標(左上角) |
| _____________ | _____________________________________________ |
| ^FDa | 定義打印數據字符,a:打印內容 |
| _____________ | _____________________________________________ |
| ^FS | 數據域分隔命令 |
| _____________ | _____________________________________________ |
| ^Af,o,h,w | 打印文字格式定義 f:字體,默認為0,選擇范圍:A-Z,0-9 (均為打印機內部字體,非TrueType字體) o:文字方向,N=普通,R=旋轉90度,I=旋轉180度, B=旋轉270度 h:字符高度,范圍:10-1500點 w:字符寬度,范圍:10-1500點” |
| _____________ | _____________________________________________ |
| ^BYw,r,h | 設定條碼默認參數 w:條寬,缺省為2點,選擇范圍:1-10點 r:條空比率,缺省為3.0,選擇范圍:2.0-3.0 h:條碼高度 |
| _____________ | _____________________________________________ |
| ^B3o,e,h,f,g | 打印39碼 o:條碼方向 e:Mod-43校驗位,N=No(默認),Y=Yes h:條碼高度,范圍:1-9999點 f:是否打印字符行,Y=Yes(默認),N=No g:字符行位置,N:條碼下方,Y:條碼上方 |
| _____________ | _____________________________________________ |
| ^BCo,h,f,g,e,m | 打印128碼 e:UCC校驗位,N=No(默認),Y=Yes m:模式,一般設為A(自動選擇)或忽略不計 |
| _____________ | _____________________________________________ |
| ^PRp | 打印速率 p:速度——2-8(或A-E)=2英寸/秒-8英寸/秒” |
| _____________ | _____________________________________________ |
| ^PQq | 打印數量 q:總數量,選擇范圍:1-99999999 |
| _____________ | _____________________________________________ |
| ^GBw,h,t | 打印方框 w:方框寬度,h:方框寬度,t:線寬 |
| _____________ | _____________________________________________ |
TSPL語言開發實例
以下代碼內容為一個最簡單標簽的必備要素,以此為例,詳解設計標簽時必備的內容和要點。
一個基本的標簽實例
SIZE 60 mm,40 mm
GAP 2 mm
CLS
TEXT 50,50,"4",0,1,1,"DEMO FOR TEXT"
PRINT 1
一張標簽通常包含三個部分,即系統設定、打印內容設定和執行打印指令。
系統設定包括標簽尺寸(SIZE、GAP)和清除緩沖區數據指令(CLS)等。
打印內容設定可以參考本文檔卷標內容設計指令內容,本例中系打印文本。
執行打印指令用于打印出設計好的標簽,在此指令發送后打印機才執行打印動作。
需要特別注意,在每一條指令結尾需要加入換行符,即字符串“\r\n”或 16 進制 0x0D 0x0A
語法說明
以下為打印標簽時的常用控制指令(在飛印盒子測試頁中默認會帶有一段這種語法的控制指令):
SIZE
該指令用于設定卷標紙的寬度和長度。 使用公制單位,現在我們的標簽大小為60mm*40mm。 注 : 200DPI:1mm = 8dots 使用公制單位,在單位與數字之間必須添加一個空。 指令示例: SIZE 60 mm,40 mm
GAP
該指令用于定義兩張卷標紙間的垂直間距距離。 可以設置2mm或者不設置 指令示例: GAP 2 mm
CLS
該指令用于清除圖像緩沖區(image buffer)的數據。 注:此項指令必須置于SIZE指令之后。 指令示例: CLS
該指令用于打印出存儲于影像緩沖區內的數據 可設置打印多張,需放在全部指令最后的位置。 指令示例,打印一張: PRINT 1
TEXT
該指令用于打印字符串。
指令語法:
TEXT x,y,"font",rotation,x-multiplication,y-multiplication,"content"
以下是詳細參數說明:
| 參數 | 說明 |
|---|---|
| _____________ | _____________________________________________ |
| x | 文字 X 方向起始點坐標 |
| y | 文字 Y 方向起始點坐標 |
| _____________ | _____________________________________________ |
| font | 字體名稱 |
| 1 | 8×12 dot 英數字體 |
| 2 | 12×20 dot 英數字體 |
| 3 | 16×24 dot 英數字體 |
| 4 | 24×32 dot 英數字體 |
| 5 | 32×48 dot 英數字體 |
| 6 | 14×19 dot 英數字體 OCR-B |
| 7 | 21×27 dot 英數字體 OCR-B |
| 8 | 14×25 dot 英數字體 OCR-A |
| 9 | 9×17 dot 英數字體 |
| 10 | 12×24 dot 英數字體 |
| TST24.BF2 | 繁體中文 24×24Font(大五碼) |
| TSS24.BF2 | 簡體中文 24×24Font(GB 碼) |
| K | 韓文 24×24Font(KS 碼) |
| _____________ | _____________________________________________ |
| rotation | 文字旋轉角度(順時針方向) |
| 0 | 0 度 |
| 90 | 90 度 |
| 180 | 180 度 |
| 270 | 270 度 |
| _____________ | _____________________________________________ |
| x-multiplication | X 方向放大倍率 1-10 |
| y-multiplication | Y 方向放大倍率 1-10 |
| _____________ | _____________________________________________ |
注意:五號字英文字母僅可打印大寫字母
若要打印雙引號時(“)在程序中請使用 [”] 來打印雙引號
若要打印0D(hex)字符時,請在程序中使用[R]來打印CR
若要打印0A(hex)字符時,請在程序中使用[A]來打印LF
使用說明:
一倍倍率下,60mm寬的標簽,可以打印19個全角中文字符或者39個半角字母數字,中文字體高度為24dtos。
TSPL打印時沒有居中指令,需要手動設置
打印不會自動換行,超出寬度的文字將無法正常打印,所以多行文本,需要用到多個TEXT指令,每一打印文本的起始打印位置都需要手動設置,單位為dtos,即點陣數。60mm*40mm的點陣比為480*320。
常見的文字打印指令示例:
TEXT 0,10,"TSS24.BF2",0,1,1,"一二三四五六七八九十二二三四五六七八九十"
TEXT 0,30,"TSS24.BF2",0,1,1,"12345678902234567890323456789042345678905234567890"
BAR
該指令用于在標簽上畫線。
指令語法:
BAR x,y,width,height
以下是詳細參數說明:
| 參數 | 說明 |
|---|---|
| _____________ | _____________________________________________ |
| x | 線條左上角 X 坐標,單位 dot |
| y | 線條左上角 Y 坐標,單位 dot |
| _____________ | _____________________________________________ |
| width | 線寬,單位 dot |
| height | 線高,單位 dot |
| _____________ | _____________________________________________ |
指令示例:
BAR 100,100,300,200
BARCODE
該指令用來畫一維條碼
指令語法:
BARCODE x,y,"code type",height,human readable,rotation,narrow,wide,"content"
以下是詳細參數說明:
| 參數 | 說明 |
|---|---|
| _____________ | _____________________________________________ |
| x | 左上角水平坐標起點,以點(dot)表示 |
| y | 左上角垂直坐標起點,以點(dot)表示 |
| _____________ | _____________________________________________ |
| code type | 建議使用39或128 |
| _____________ | _____________________________________________ |
| height | 條形碼高度,以點(dot)表示 |
| Human readable | 0 表示人眼不可識,1 表示人眼可識,即在條碼下顯示內容 |
| _____________ | _____________________________________________ |
| rotation | 條形碼旋轉角度,順時針方向 |
| 0 | 不旋轉 |
| 90 | 順時針方向旋轉 90 度 |
| 180 | 順時針方向旋轉 180 度 |
| 270 | 順時針方向旋轉 270 度 |
| _____________ | _____________________________________________ |
| narrow | 窄 bar 寬度,以點(dot)表示 |
| wide | 寬 bar 寬度,以點(dot)表示 |
| _____________ | _____________________________________________ |
| content | 一維碼內容 |
| _____________ | _____________________________________________ |
注:條碼肉眼可見時,需要預留條碼內容的顯示位置,內容高度24dot
指令示例:
BARCODE 100,100,"128",50,0,0,2,4,"4600408762105840"
QRCODE
該指令用來打印二維碼
程序語法:
QRCODE x,y,ECC level,cellwidth,mode,rotation,"data string"
| 參數 | 說明 |
|---|---|
| _____________ | _____________________________________________ |
| x | 二維碼水平方向起始點坐標 |
| y | 二維碼垂直方向起始點坐標 |
| _____________ | _____________________________________________ |
| ECC level | 選擇 QRCODE 糾錯等級 |
| L | 7% |
| M | 15% |
| Q | 25% |
| H | 30% |
| _____________ | _____________________________________________ |
| cell width | 二維碼寬度 1-10 |
| mode | 手動/自動編碼 |
| A | Auto |
| M | Manual |
| _____________ | _____________________________________________ |
| rotation | 旋轉角度(順時針方向) |
| 0 | 0 度 |
| 90 | 90 度 |
| 180 | 180 度 |
| 270 | 270 度 |
| data string | 編碼的字符串 |
| _____________ | _____________________________________________ |
指令示例:
QRCODE 50,50,M,6,A,0,"m.bnwtw.cn"
結束語:ZPL與TSPL這兩種典型的標簽開發語言的對比通過這篇文章可以略知一二,盡管用的關鍵詞不同,但是基本功能是接近的,另外有一些較不常用的打印及控制命令未做說明,用戶也最好不要輕易使用,以免造成機器軟硬件設置的混亂。