Android 关于佳博和汉印蓝牙热敏打印机开发

接上篇文章Android之BLE(低功耗)蓝牙开发,本篇文章针对上篇博文中提出的两款打印机的开发流程进行记录。java

首先无论时佳博打印机仍是汉印打印机,都是先对他们各自的lib进行导入,如图:ide

导入lib以后,.net

必定要记得进行sync project。一切准备就绪后接着就是根据他们各自提供的文档说明进行开发。本文不作详细说明,下面先贴汉印的打印关键代码(他们家的比较简单):3d

public void printCPCL(View view) {
     
        final int maxPrintNum = 1;
        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < maxPrintNum; i++) {
                    try {
                        PrinterHelper.PortClose();
                        Log.e(TAG, "printCPCL: =======>436");
                        openBT = PrinterHelper.PortOpenBT("00:15:83:FD:6F:E0");
                        Log.e(TAG, "printCPCL: =======>440");
                        if (openBT == 0) {
                            Log.e(TAG, "printCPCL: =======>443");
                            if (PrinterHelper.IsOpened()) {
                                Log.e(TAG, "run: " + PrinterHelper.IsOpened());
                                //链接成功
                                PrinterHelper.Align(PrinterHelper.CENTER);
                                PrinterHelper.SetBold("1");
                                PrinterHelper.SetMag("2", "2");
                                PrinterHelper.Text(PrinterHelper.TEXT, "8", "0", "10", "30", "啦啦啦")
                                PrinterHelper.SetMag("1", "1");
                                PrinterHelper.SetBold("0");
                                PrinterHelper.InverseLine("0", "0", "700", "0", "100");
                                PrinterHelper.Text(PrinterHelper.TEXT, "8", "0", "0", "130", "啦啦啦");
                                PrinterHelper.Text(PrinterHelper.TEXT, "3", "0", "0", "160", "啦啦啦");
                                PrinterHelper.Text(PrinterHelper.TEXT, "3", "0", "0", "190", "啦啦啦");
                                PrinterHelper.PrintQR(PrinterHelper.BARCODE, "10", "240", "2", "16", "eyJxcl90eXBlIjoic3RhZmYiLCJvc19pZCI6Nn0=");
                                PrinterHelper.Form();
                                PrinterHelper.Print();
                            }
                    } catch (Exception e) {
                        Log.e(TAG, "printCPCL: =======>553" + e.getMessage());
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }

相关的方法在厂家集成文档中都有详细的描述,我就不在这里作过多的赘述了。效果以下图:code

佳博的话也同样,下面给出打印代码:orm

public void printSend(View view) {
        threadPool = ThreadPool.getInstantiation();
        threadPool.addTask(new Runnable() {
            @Override
            public void run() {
                if (DeviceConnFactoryManager.getDeviceConnFactoryManagers()[id] == null ||
                        !DeviceConnFactoryManager.getDeviceConnFactoryManagers()[id].getConnState()) {
                    mHandler.obtainMessage(CONN_PRINTER).sendToTarget();
                    return;
                }
                if (DeviceConnFactoryManager.getDeviceConnFactoryManagers()[id].getCurrentPrinterCommand() == PrinterCommand.TSC) {
                    sendLabel();
                } else {
                    mHandler.obtainMessage(PRINTER_COMMAND_ERROR).sendToTarget();
                }
            }
        });
    }  

void sendLabel() {
        LabelCommand tsc = new LabelCommand();
        /* 设置标签尺寸,按照实际尺寸设置 */
        tsc.addSize(40, 30);
        /* 设置标签间隙,按照实际尺寸设置,若是为无间隙纸则设置为0 */
        tsc.addGap(2);
        /* 设置打印方向 */
        tsc.addDirection(LabelCommand.DIRECTION.FORWARD, LabelCommand.MIRROR.NORMAL);
        /* 设置原点坐标 */
        tsc.addReference(0, 0);
        /* 撕纸模式开启 */
        tsc.addTear(EscCommand.ENABLE.ON);
        /* 清除打印缓冲区 */
        tsc.addCls();
        // 绘制简体中文
        tsc.addText(10, 20, LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE, LabelCommand.ROTATION.ROTATION_0, LabelCommand.FONTMUL.MUL_1, LabelCommand.FONTMUL.MUL_1,
                "标准科室名称:药剂科");
        tsc.addText(10, 50, LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE, LabelCommand.ROTATION.ROTATION_0, LabelCommand.FONTMUL.MUL_1, LabelCommand.FONTMUL.MUL_1,
                "标准科室代码:wsd8965325");
        tsc.addText(10, 80, LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE, LabelCommand.ROTATION.ROTATION_0, LabelCommand.FONTMUL.MUL_1, LabelCommand.FONTMUL.MUL_1,
                "实际科室名称:药剂科");
        tsc.addText(10, 110, LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE, LabelCommand.ROTATION.ROTATION_0, LabelCommand.FONTMUL.MUL_1, LabelCommand.FONTMUL.MUL_1,
                "重量" + tv_weight.getText().toString().trim());
        tsc.addQRCode(150, 150, LabelCommand.EEC.LEVEL_L, 4, LabelCommand.ROTATION.ROTATION_0, "12345ss67");
        /* 打印标签 */
        tsc.addPrint(1, 1);
        /* 打印标签后 蜂鸣器响 */
        tsc.addSound(1, 100);
        tsc.addCashdrwer(LabelCommand.FOOT.F5, 255, 255);
        Vector<Byte> datas = tsc.getCommand();
        /* 发送数据 */
        if (DeviceConnFactoryManager.getDeviceConnFactoryManagers()[id] == null) {
            Log.d(TAG, "sendLabel: 打印机为空");
            return;
        }
        DeviceConnFactoryManager.getDeviceConnFactoryManagers()[id].sendDataImmediately(datas);
    }

效果图想象一下超时小票的那种就能够了(,,ԾㅂԾ,,)或者如上图(汉印)效果blog

完整的demo有须要的话能够留下你的邮箱哟~开发