最近公司特賣會(huì)在國(guó)際博覽中心開展,由于場(chǎng)地沒(méi)有網(wǎng)絡(luò)只能采用PDA收銀翔试,連接藍(lán)牙打印機(jī)打印小票。PDA使用的安卓系統(tǒng),連接打印機(jī)有兩種方式:
手持POS和打印機(jī)都是采購(gòu)的斑馬設(shè)備
PDA 使用的是TC25
打印機(jī)使用的是EZ320
IP地址方式
藍(lán)牙Mac地址
由于本次只接觸了藍(lán)牙連接方式瓣距,所以這里只記錄一下藍(lán)牙打印實(shí)現(xiàn)的過(guò)程。
首先獲取已配對(duì)的藍(lán)牙設(shè)備
獲取所有已配對(duì)的藍(lán)牙設(shè)備代咸,從中找到打印設(shè)備蹈丸,并獲取Mac地址。關(guān)鍵代碼如下:
private static String findPrinterMac()throws Exception {
BluetoothAdapter defaultAdapter = BluetoothAdapter.getDefaultAdapter();
if (defaultAdapter ==null){
throw new Exception("本機(jī)不支持藍(lán)牙功能");
}
if(!defaultAdapter.isEnabled()){
throw new Exception("請(qǐng)檢查藍(lán)牙功能是否打開");
}
Set bondedDevices = defaultAdapter.getBondedDevices();
for (BluetoothDevice bond:bondedDevices) {
// 如果設(shè)置是打印機(jī)設(shè)備
if (bond.getBluetoothClass().getMajorDeviceClass() == BluetoothClass.Device.Major.IMAGING){
// 返回設(shè)備的Mac地址
return bond.getAddress();
}
}
return null;
}
根據(jù)mac地址連接打印機(jī)
拿到mac地址就好辦,調(diào)用斑馬的sdk提供的連接方式逻杖,連接到打印機(jī)奋岁。
/**
* 連接打印機(jī)
* @return
*/
private static ZebraPrinter connect()throws Exception {
String macAddress =findPrinterMac();
if (macAddress ==null){
throw new Exception("未找到藍(lán)牙打印機(jī)");
}
printerConnection =null;
printerConnection =new BluetoothConnection(macAddress);
try {
printerConnection.open();
}catch (ConnectionException e) {
disconnect();
System.out.println(e.getMessage());
throw new Exception("打印機(jī)連接失敗");
}
ZebraPrinter printer =null;
if (printerConnection.isConnected()) {
try {
printer = ZebraPrinterFactory.getInstance(printerConnection);
}catch (ConnectionException e) {
printer =null;
System.out.println("打印機(jī)連接失敗:"+e.getMessage());
disconnect();
throw e;
}catch (ZebraPrinterLanguageUnknownException e) {
printer =null;
System.out.println("獲取打印機(jī)語(yǔ)言失敗:"+e.getMessage());
disconnect();
throw e;
}
}
return printer;
}
打印
連接連接成功后就可以調(diào)起打印功能了荸百,首先要看打印機(jī)支持的語(yǔ)言闻伶。打印機(jī)指令語(yǔ)言分為兩種,ZPL和CPCL够话。這兩種語(yǔ)言的中文文檔非常少蓝翰,有空了我把整理的中文文檔一起發(fā)出來(lái)。EZ320默認(rèn)使用的是CPCL語(yǔ)言女嘲,編寫起來(lái)比ZPL稍微簡(jiǎn)單一點(diǎn)畜份。
! U1 JOURNAL 打印開始
! U1 PAGE-WIDTH 600 設(shè)置頁(yè)面寬度
! U1 SPEED 2 設(shè)置打印速度
! U1 ENCODING UTF-8 設(shè)置編碼格式
! U1 LMARGIN 0 設(shè)置偏移量(距離左邊)
! U1 SETLP GBUNSG24.CPF 0 24 設(shè)置字庫(kù)(有些字庫(kù)需要購(gòu)買)
! U1 PCX 0 0 !<LOGO.PCX 打印圖片(我們公司的logo)
! U1 SETBOLD 1 設(shè)置粗體
! U1 B 128 1 1 50 0 0 123456 打印條形碼
PRINT 不要忘記
以上是行模式打印的指令,比定位模式簡(jiǎn)單多了欣尼。最后發(fā)一張實(shí)際打印的效果圖爆雹。