美文网首页
安卓蓝牙打印

安卓蓝牙打印

作者: 键盘小蟲 | 来源:发表于2018-09-13 22:44 被阅读0次

    最近公司特卖会在国际博览中心开展,由于场地没有网络只能采用PDA收银,连接蓝牙打印机打印小票。PDA使用的安卓系统,连接打印机有两种方式:

    手持POS和打印机都是采购的斑马设备

    PDA 使用的是TC25

    打印机使用的是EZ320

    • IP地址方式

    • 蓝牙Mac地址

    由于本次只接触了蓝牙连接方式,所以这里只记录一下蓝牙打印实现的过程。

    首先获取已配对的蓝牙设备

    获取所有已配对的蓝牙设备,从中找到打印设备,并获取Mac地址。关键代码如下:

    
    private static String findPrinterMac()throws Exception {
        BluetoothAdapter defaultAdapter = BluetoothAdapter.getDefaultAdapter();
        if (defaultAdapter ==null){
            throw new Exception("本机不支持蓝牙功能");
        }
        if(!defaultAdapter.isEnabled()){
            throw new Exception("请检查蓝牙功能是否打开");
        }
        Set bondedDevices = defaultAdapter.getBondedDevices();
        for (BluetoothDevice bond:bondedDevices) {
            // 如果设置是打印机设备
            if (bond.getBluetoothClass().getMajorDeviceClass() == BluetoothClass.Device.Major.IMAGING){
                // 返回设备的Mac地址
                return bond.getAddress();
            }
        }
        return null;
    }
    
    

    根据mac地址连接打印机

    拿到mac地址就好办,调用斑马的sdk提供的连接方式,连接到打印机。

    
    /**
      * 连接打印机
      * @return
      */
    
    private static ZebraPrinter connect()throws Exception {
        String macAddress =findPrinterMac();
        if (macAddress ==null){
            throw new Exception("未找到蓝牙打印机");
        }
        printerConnection =null;
        printerConnection =new BluetoothConnection(macAddress);
        try {
            printerConnection.open();
        }catch (ConnectionException e) {
            disconnect();
            System.out.println(e.getMessage());
            throw new Exception("打印机连接失败");
        }
    
        ZebraPrinter printer =null;
        if (printerConnection.isConnected()) {
            try {
                printer = ZebraPrinterFactory.getInstance(printerConnection);
            }catch (ConnectionException e) {
                printer =null;
                System.out.println("打印机连接失败:"+e.getMessage());
                disconnect();
                throw e;
            }catch (ZebraPrinterLanguageUnknownException e) {
                printer =null;
                System.out.println("获取打印机语言失败:"+e.getMessage());
                disconnect();
                throw e;
            }
        }
        return printer;
    }
    
    

    打印

    连接连接成功后就可以调起打印功能了,首先要看打印机支持的语言。打印机指令语言分为两种,ZPL和CPCL。这两种语言的中文文档非常少,有空了我把整理的中文文档一起发出来。EZ320默认使用的是CPCL语言,编写起来比ZPL稍微简单一点。

    ! U1 JOURNAL 打印开始
    ! U1 PAGE-WIDTH 600 设置页面宽度
    ! U1 SPEED 2 设置打印速度
    ! U1 ENCODING UTF-8 设置编码格式
    ! U1 LMARGIN 0 设置偏移量(距离左边)
    ! U1 SETLP GBUNSG24.CPF 0 24 设置字库(有些字库需要购买)
    ! U1 PCX 0 0 !<LOGO.PCX 打印图片(我们公司的logo)
    ! U1 SETBOLD 1 设置粗体
    ! U1 B 128 1 1 50 0 0 123456 打印条形码
    PRINT 不要忘记
    

    以上是行模式打印的指令,比定位模式简单多了。最后发一张实际打印的效果图。


    小票

    相关文章

      网友评论

          本文标题:安卓蓝牙打印

          本文链接:https://www.haomeiwen.com/subject/lrtngftx.html