基于LPC2103的藍(lán)牙熱敏打印機(jī)的開(kāi)發(fā)
4.3 打印協(xié)議:
串口緩沖區(qū)采用循環(huán)隊(duì)列,RS232的串口0與藍(lán)牙的串口1共用同一緩沖區(qū),打印處理的主要依據(jù)是協(xié)議主要是基于ESC/POS® 標(biāo)準(zhǔn)的命令協(xié)議,它包括打印控制命令,字符參數(shù)設(shè)置命令,打印排版設(shè)置命令,圖形打印命令,條碼打印命令,曲線打印命令,用戶自定義命令,漢字打印命令等,下表給出一些打印控制命令的格式化式和功能:
還有一些具體命令,可以參考
UnifiedPOS Version 1.10 -- Released February 10, 2006
4.4 字庫(kù)部分說(shuō)明:
支持英數(shù)字符ANK、GB18030 漢字字符。
字庫(kù)在FLASH中從0X30存放,0X10起為英文字庫(kù)的行列(兩個(gè)字) ,起始位置(2個(gè)字,高位在前),結(jié)束字節(jié)((2個(gè)字,高位在前); 0X20起為中文字庫(kù)的行列(兩個(gè)字) 起始位置(2個(gè)字,高位在前),結(jié)束字節(jié)((2個(gè)字,高位在前);
英文字庫(kù)下載命令為: 1D 55 ziku_line ziku_row Plongl Plongh,Pl Ph ;
中文字庫(kù)下載命令為: 1D 5A ziku_line ziku_row Plongl Plongh,Pl Ph ;
代碼如下:
unsigned char doGS(void)
{
unsigned char mm;
if(comcome()==TRUE) mm = comcomedata ;
else return FALSE;
switch(mm)
{
case 'U':englishZiKuDown();break; // 0x55='U'
case 'Z':chinaZiKuDown();break; // 0x5a='Z'
default :break;
}
return ENABLE;
}
5.小結(jié)
為了使打印機(jī)易于使用,我們?cè)O(shè)計(jì)了簡(jiǎn)潔的按鍵和指示燈。在這款打印機(jī)中,我們?cè)O(shè)計(jì)了兩個(gè)LED燈,用來(lái)指示打印機(jī)的狀態(tài),一個(gè)是錯(cuò)誤指示燈,一個(gè)是有紙無(wú)紙指示也作電源指示用,在不同狀態(tài)下燈的閃爍情況也不一樣,在正常打印下,錯(cuò)誤指示燈滅,有紙燈亮;在下載位圖和字庫(kù)的時(shí)候,有紙燈會(huì)閃爍;當(dāng)無(wú)紙時(shí),錯(cuò)誤指示燈亮,有紙燈滅;當(dāng)打印頭溫度這高時(shí),錯(cuò)誤指示燈也會(huì)亮。
本文創(chuàng)新點(diǎn):通過(guò)增加藍(lán)牙通信模塊的增加,使得此熱敏打印機(jī)的應(yīng)該范圍更廣,只要上位機(jī)擁有一個(gè)藍(lán)牙Dongle,就可以實(shí)現(xiàn)無(wú)線打印??蓮V泛使用在移動(dòng)政務(wù)、警務(wù)、煙草、郵政、運(yùn)輸、配送等等行業(yè)。通過(guò)合理的配置加熱時(shí)間,可使得打印效果和打印速度之間的實(shí)現(xiàn)最最佳配置。
參考文獻(xiàn):
[1]王俊紅,等.基于AT89C52 單片機(jī)的變量噴霧控制器設(shè)計(jì)[J].微計(jì)算機(jī)信息,2006,2:8- 10 .
[2] UnifiedPOS Version 1.10 -- Released February 10, 2006
[3]林銳.軟件工程思想
[4]林銳.高質(zhì)量C++/C 編程指南,2001.7
[5]美國(guó) Micbeal Barr .C/C++嵌入式系統(tǒng)編程,中國(guó)電力出版社
[6]美國(guó)Steve McConnell.代碼大全, 學(xué)苑出版社,1993
評(píng)論