基于C8051F系列單片機(jī)的標(biāo)簽打印機(jī)接口設(shè)計
2 EPL2打印描述語言
該系統(tǒng)采用斑馬公司的桌面型標(biāo)簽打印機(jī)888-TT,其編程語言為EPL2打印描述語言。EPL2語言主要包含了對打印機(jī)進(jìn)行操作的一系列打印指令。在此主要用到了其中的A指令和B指令:A指令的作用主要是用來打印文本;B指令的作用主要是用來打印條碼。
“A”指令:用于打印文本字符。語法為:Ap1,p2,p3,p4,p5,p6,p7,“DATA”。其中包含了7個參數(shù)p1~p7,和需要打印的文本數(shù)據(jù)“DATA”。下面對參數(shù)進(jìn)行介紹:
p1為以像素點為單位的水平起始位置;
p2為以像素點為單位的垂直起始位置;
p3為旋轉(zhuǎn),參數(shù)的值以及對應(yīng)的角度見表1;本文引用地址:http://m.butianyuan.cn/article/172753.htm
p4為字體選擇;
p5為水平膨脹;
p6為垂直膨脹;
p7中,N代表普通,R表示反轉(zhuǎn)圖像。
“B”指令:用于打印標(biāo)準(zhǔn)條碼。語法為:Bp1,p2,p3,p4,p5,p6,p7,p8,“DATA”。它包含了8個參數(shù)p1~p8,和需要打印的條碼數(shù)據(jù)“DATA”。下面對8個參數(shù)進(jìn)行介紹:
p1為以像素點為單位的水平起始位置;
p2為以像素點為單位的垂直起始位置;
p3為旋轉(zhuǎn),參數(shù)的值以及對應(yīng)的角度與A指令的
p3參數(shù)相同,見表1;
p4為條碼選擇;
p5為窄條的像素寬度;
p6為寬條的像素寬度;
p7為條碼的像素點高度;
p8為打印可讀代碼,B為是,N為否。
3 打印機(jī)驅(qū)動程序設(shè)計
打印機(jī)驅(qū)動程序的流程圖如圖4所示。
打印機(jī)的驅(qū)動程序由三部分組成:打印機(jī)初始化、文本打印和條碼打印。打印機(jī)初始化函數(shù)Printer_Init()的程序代碼段如下:
首先向打印機(jī)發(fā)送“Y96,O,8,1”,作用是將打印機(jī)的波特率設(shè)置為9 600 b/s,沒有校驗,8位數(shù)據(jù)位和1位停止位,與單片機(jī)串口參數(shù)設(shè)置一致。接下來發(fā)送“q500”,作用是將標(biāo)簽的寬度定義為500個像素點。最后發(fā)送“ZT”,作用是控制打印的方向從紙張的頭部開始打印,初始化完成時,返回發(fā)送成功的標(biāo)志true。
文本打印函數(shù)Print_String()的程序代碼段如下:
定義一個數(shù)組,該數(shù)組的作用是用來存放需要打印的臨時數(shù)據(jù)。程序中的注釋部分給出了打印數(shù)據(jù)DATA”的具體格式,首先發(fā)送“N”指令,其作用是清空打印緩沖區(qū),然后送入要打印的文本數(shù)據(jù)。最后發(fā)送“P”指令,其作用是打印,后面的參數(shù)“1”是指打印1份。整個指令段通過數(shù)組的賦值傳入PrintBuffer中,然后通過串口發(fā)送函數(shù)將數(shù)據(jù)發(fā)送給打印機(jī),實現(xiàn)文本的打印操作。條碼打印函數(shù)Print_Bar()的程序代碼段如下:
與文本打印類似,*Str為要打印的條碼數(shù)據(jù)。串口發(fā)送完成時,返回成功標(biāo)志true,即實現(xiàn)條碼的打印操作。當(dāng)需要重新啟動打印機(jī)時,同樣要向打印機(jī)發(fā)送相關(guān)的指令,也就是“^@”指令,該指令的作用是重新啟動打印機(jī)。重新啟動打印機(jī)函數(shù)Printer_Reset()的程序代碼段如下:
4 結(jié)語
在此采用低功耗SoC單片機(jī)C8051F020作為主機(jī)控制器,完成了斑馬公司的888-TT標(biāo)簽打印機(jī)的串行接口設(shè)計及驅(qū)動的實現(xiàn)。系統(tǒng)已成功應(yīng)用于程控耐壓絕緣測試儀中,并取得了良好的效果。不僅節(jié)省了很多人力資源,同時也提高了數(shù)據(jù)記錄的準(zhǔn)確度和效率。
評論