更新记录

1.0.1(2023-08-09)

  1. 更新iOS cpcl指令问题

1.0.0(2023-05-04)

佳博打印机,支持ESC小票、TSC标签、CPCL面单打印,支持蓝牙、USB、wifi、串口等多种连接方式


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 12.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:9 - 16

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


前言

佳博打印机,支持ESC小票、TSC标签、CPCL面单打印,支持蓝牙、USB、wifi、串口等多种连接方式

请试用没问题后再采购,插件市场没有退款机制

var gainschaPrint = uni.requireNativePlugin("wrs-gainschaPrint");

支持定制,联系方式 QQ:252797991

打印机连接方式

Android支持蓝牙、USB、串口、wifi,iOS支持蓝牙、Wi-Fi连接

Android 串口连接

先通过getSerialPorts接口获取设备上所有的串口,然后选择连接打印机的那个串口进行连接connect


                        // 获取设备的所有串口
                        this.$gainschaPrint.getSerialPorts((resp) => {
                            // 选择打印机的串口
                            var entryValues = resp.entryValues;
                            this.showActionSheet(entryValues, (index) => {
                                // 打印机串口
                                var serialPort = entryValues[index];
                                // 选择打印命令类型
                                this.selectCommand((commandResp) => {
                                    var params = {};
                                    params.connMethod = 3; // 连接方式,3:串口连接
                                    params.command = commandResp; // 打印命令类型
                                    params.serialPort = serialPort; // 串口路径
                                    params.baudRate = this.baudRate; // 串口波特率
                                    this.$gainschaPrint.connect(params, (conResp) => {
                                        // 连接状态变更回调
                                        this.connectCallbak(conResp);
                                    });
                                });
                            });
                        });

Android USB连接

先通过getUSBDevices获取所有的USB,然后选择连接打印机的那个usb进行连接


                        // 获取设备的所有USB
                        this.$gainschaPrint.getUSBDevices((resp) => {
                            // 选择打印机的USB
                            var devices = resp.devices;
                            var deviceNameArray = [];
                            for (var i = 0; i < devices.length; i++) {
                                deviceNameArray.push(devices[i].deviceName);
                            }
                            this.showActionSheet(deviceNameArray, (index) => {
                                // USB名称
                                var deviceName = deviceNameArray[index];
                                // 选择打印命令类型
                                this.selectCommand((commandResp) => {
                                    var params = {};
                                    params.connMethod = 1; // 连接方式,1:USB连接
                                    params.command = commandResp; // 打印命令类型
                                    params.deviceName = deviceName; // USB名称
                                    this.$gainschaPrint.connect(params, (conResp) => {
                                        // 连接状态变更回调
                                        this.connectCallbak(conResp);
                                    });
                                });
                            });
                        });

Android wifi连接


                // 选择打印命令类型
                this.selectCommand((commandResp) => {
                    var params = {};
                    params.connMethod = 2; // 连接方式,2:wifi连接
                    params.command = commandResp; // 打印命令类型
                    params.ip = this.ip; // 打印机IP
                    params.port = 9100; // 打印唯一端口9100
                    this.$gainschaPrint.connect(params, (conResp) => {
                        // 连接状态变更回调
                        this.connectCallbak(conResp);
                    });
                });

Android 蓝牙连接

蓝牙权限


    <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-feature
        android:name="android.hardware.bluetooth_le"
        android:required="true" />

                        // android蓝牙连接需要用到mac地址作为参数,佳博自带的蓝牙模块不适配Android 12,uniapp官网提供蓝牙API暂时没找到有mac地址参数
                        // 插件市场蓝牙插件有获取mac地址插件,只需调用插件的扫描接口获取到mac即可,无需连接,https://ext.dcloud.net.cn/plugin?id=9710
                        // 选择打印命令类型
                        this.selectCommand((commandResp) => {
                            var params = {};
                            params.connMethod = 0; // 连接方式,2: bluetooth连接
                            params.command = commandResp; // 打印命令类型
                            params.macAddress = "xxx"; // 蓝牙mac地址
                            this.$gainschaPrint.connect(params, (conResp) => {
                                // 连接状态变更回调
                                this.connectCallbak(conResp);
                            });
                        });

ios 蓝牙连接

蓝牙权限:


    <key>NSBluetoothAlwaysUsageDescription</key>
    <string>访问蓝牙需要您的授权</string>

先设置蓝牙的回调setBluetoothCallback,再初始化蓝牙模块initBluetooth,初始化蓝牙模块后,会有蓝牙状态变更的的回到,当蓝牙状态为5(CBManagerStatePoweredOn)状态时,这时可以调用扫描蓝牙接口startScanBle开始扫描,扫描到的蓝牙设备会不断回调onScanBluetooth


                // ios设置蓝牙回调
                    this.$gainschaPrint.setBluetoothCallback((resp) => {
                        var opt = resp.opt;
                        switch (opt) {
                            // 蓝牙状态变更时回调
                            case "onBluetoothUpdateState":
                                this.showMsg(JSON.stringify(resp));
                                var state = resp.state;
                                switch (state) {
                                    // CBManagerStateUnknown
                                    case 0:
                                        break;
                                        // CBManagerStateResetting
                                    case 1:
                                        break;
                                        // CBManagerStateUnsupported
                                    case 2:
                                        break;
                                        // CBManagerStateUnauthorized
                                    case 3:
                                        break;
                                        // CBManagerStatePoweredOff
                                    case 4:
                                        break;
                                        // CBManagerStatePoweredOn
                                    case 5:
                                        this.showMsg("蓝牙已开启,可以开始扫描蓝牙");
                                        break;

                                }
                                break;
                                // 每次扫描到一个蓝牙设备都会回调 
                            case "onScanBluetooth":
                                var device = resp.device;
                                var deviceId = device.deviceId;
                                break;
                            default:
                                break;
                        }
                    });
                    // iOS初始化蓝牙模块
                    this.$gainschaPrint.initBluetooth();

                    // 开始扫描蓝牙
                    this.$gainschaPrint.startScanBle({});

                    // 停止扫描
                    this.$gainschaPrint.stopScan({});

                    // 蓝牙连接打印机      
                    var params = {};
                    params.connMethod = 0; // 连接方式,0:蓝牙连接
                    params.deviceId = "xxxx"; // 蓝牙设备ID
                    params.timeout = 5; // 超时时间
                    this.$gainschaPrint.connect(params, (conResp) => {
                        // 连接状态变更回调
                        this.connectCallbak(conResp);
                    });

ios wifi连接


                    var params = {};
                    params.connMethod = 2; // 连接方式,2:wifi连接
                    params.ip = this.ip; // 打印机IP
                    params.port = 9100; // 打印唯一端口9100
                    this.$gainschaPrint.connect(params, (conResp) => {
                        // 连接状态变更回调
                        this.connectCallbak(conResp);
                    });
  • 获取设备所有的串口

this.$gainschaPrint.getSerialPorts((resp) => {})
  • 获取设备所有的USB

this.$gainschaPrint.getUSBDevices((resp) => {})
  • 连接打印机

                    var params = {};
                    params.connMethod = 2; // 连接方式,0: 蓝牙连接 1: USB连接 2:wifi连接 3: 串口连接
                    if(this.isAndroid()) { // android连接需要command参数
                        params.command = "esc"; // 打印命令类型,取值为:esc、tsc、cpcl
                    }
                    params.macAddress = "xxx"; // android蓝牙连接时需要传蓝牙mac地址

                    params.deviceId = "";// ios蓝牙连接时需要传蓝牙设备ID

                    params.deviceName = "xxx"; // Android USB连接时需要传USB名称

                    params.ip = this.ip; // wifi连接时,打印机的IP
                    params.port = 9100; // wifi连接时,打印唯一端口9100

                    params.serialPort = ""; // android串口连接时需要传串口的路径
                    params.baudRate = 115200; // android串口连接时需要传串口的波特率

                    this.$gainschaPrint.connect(params, (conResp) => {
                        // 连接状态变更回调
                        var opt = conResp.opt;
                        switch (opt) {
                            case "onConnecting":
                                break;
                            case "onCheckCommand":
                                break;
                            case "onSuccess":
                                this.connectSuc();
                                break;
                            case "onReceive":
                                break;
                            case "onFailure":

                                break;
                            case "onDisconnect":

                                break;
                            default:
                                break;
                        }
                    });
  • 断开连接

                // 先关闭上次连接
                this.$gainschaPrint.close();

打印

按照官网的demo,所有的打印指令发送之前需要先判断当前打印机连接状态,当状态正常时再发送打印指令


                // 判断状态是否正常
                this.$gainschaPrint.getPrinterState((resp) => {
                    var code = resp.code;
                    if (code == 0) {
                        var status = resp.status;
                        if (status == 0) { // 0 为正常状态,其他不正常,打印机处于不正常状态,则不发送打印任务
                            // 状态正常,可以发送打印指令
                        }
                    }
                });

ESC小票打印(如需更多接口请联系作者)


                    var data = [];
                    //初始化打印机
                    data.push({
                        type: "addInitializePrinter"
                    });
                    // 设置打印居中
                    data.push({
                        type: "addSelectJustification",
                        value: 1
                    });
                    // 根据业务继续拼装data,详细的data里的对象取之见下面
                    ........

                    var params = {};
                    params.data = data; // data为打印指令逻辑
                    this.$gainschaPrint.printEsc(params, (resp) => {
                        var code = resp.code;
                        if (code == 0) {
                            var suc = resp.suc;
                            if (suc) { // 指令发送成功

                            } else { // 指令发送失败

                            }
                        } else {
                            var msg = resp.msg;
                        }
                    });
  • 打印机初始化

{
    type: "addInitializePrinter"
}
  • 打印并且走纸多少行

{
    type: "addPrintAndFeedLines",
    value: 1
}
  • 设置字符放大
android:

{
    type: "addSetCharcterSize",
    width: 0, // 取之范围:[0, 16, 32, 48, 64, 80, 96, 112]
    height: 1 // 取之范围:[0, 1, 2, 3, 4, 5, 6, 7]
}

ios:
设置字符放大,限制为不放大和放大2倍,n=0x11
{
    type: "addSetCharcterSize",
    n: 0, // n= width | height 宽度放大倍数,0 ≤n ≤255 (1 ≤ 纵向放大倍数 ≤8,1 ≤ 横向放达倍数 ≤8)[描述]   用0 到2 位选择字符高度,4 到7 位选择字符宽度
}
  • 设置对齐方式

{
    type: "addSelectJustification",
    value: 0, // 取之范围:0:left 1: center 2: right
}
  • 设置打印模式

android:
{
    type: "addSelectPrintModes",
    font: "fonta", // 取之范围:fonta、fontb
    emphasized: true,
    doublewidth: true,
    doubleheight: true,
    underline: true
}

ios:
/**
 * 方法说明:设置打印模式,0x1B 0x21 n(0-255),根据n的值设置字符打印模式
 * @param font     选择FONTA or FONTB
 * @param emphasized    是否加粗
 * @param doubleheight  是否倍高,当倍宽和倍高模式同时选择时,字符同时在横向和纵向放大两倍。
 * @param doublewidth   是否倍宽
 * @param underline     是否下划线
 *参数n二进制默认为00000000(0X0),10001000(0X88)表示下划线和加粗,00001000(0X08)表示加粗,10000000(0X80)表示下划线
 */
{
    type: "addSelectPrintModes",
    n: 0
}
  • 插入文字

{
    type: "addText",
    value: "xxx", 
    charsetName: "xx" // 可选值,只支持Android
}
  • 进纸一行,即换行

{
    type: "addPrintAndLineFeed"
}
  • 打印光栅位图

{
    type: "addRastBitImage",
    image: {
        type: "url",
        value: "/xxxx/xxx/aa.png" // 本地文件绝对路径,路径以/开头,不能以file://开头
    },
    width: 384,// 打印在标签上图片的宽度 传入参数为点数, 200dpi打印机 1mm=8dot 若打印图片在200dpi打印机上,需要打印的宽度为20mm 即传入该参数为20*8=160 58打印机最大可以传入参数为 384dot 80打印机为576dot
    mode: 0 // 图片模式,只支持Android
}
  • 设置条码可识别字符

{
    type: "addSelectPrintingPositionForHRICharacters",
    value: 0 // 0:NO_PRINT 1: ABOVE 2: BELOW 3: ABOVE_AND_BELOW
}
  • 设置条码高度

{
    type: "addSetBarcodeHeight",
    value: 0 // 字节类型
}
  • 设置条码单元宽度

{
    type: "addSetBarcodeWidth",
    value: 0 // 字节类型
}
  • 打印CODE128码

{
    type: "addCODE128",
    value: “codevalue”,
    code: "b", // android(b: CodeB c: CodeC 128: Code128) ios(b: CodeB c: CodeC a: A)
}
  • 设置QRCode纠错级别
android:
{
    type: "addSelectErrorCorrectionLevelForQRCode",
    value: 0x31 // 字节类型
}

ios:
/*
 2、设定纠错等级;(一般无需设定,忽略)
 [格式] ASCII码 GS ( K pL pH cn fn m d1...dk
 十六进制码 1D 28 6B 03 00 31 45 n
 [范围] (pL+pH×256)=3 (pL=3,pH=0)
 cn=49
 fn=69
 48≤n≤51
 [默认值] n=48
 */
{
    type: "addSelectErrorCorrectionLevelForQRCode",
    pL: 0,
    withpH: 0,
    withcn: 0,
    withyfn: 0,
    withn:0
}
  • 设置QRCode单元模块大小
android:
{
    type: "addSelectSizeOfModuleForQRCode",
    value: 0x04 // 字节类型
}

ios:
/*
 正确的ESC指令下QRCode打印流程为四步:
 1、设定QRCode大小;(可以省略)
 2、设定纠错等级;(一般无需设定,忽略)
 3、将QRCode对应的文字信息存入打印机缓存中;(必须要有)
 4、发送打印QRCode命令。
 一共有四个命令对应上述四步。
 */
/*
 1、设定QRCode大小;(可以省略)
 [格式] ASCII码 GS ( K pL pH cn fn n
 十六进制码 1D 28 6B 03 00 31 43 n
 [范围] (pL+pH×256)=3 (pL=3,pH=0)
 cn=49
 fn=67
 1 ≤n≤16
 [默认值] n=3
 */
{
    type: "addSelectSizeOfModuleForQRCode",
    pL: 0,
    withpH: 0,
    withcn: 0,
    withyfn: 0,
    withn: 0
}
  • 存入QRCode数据在打印机
android:
{
    type: "addStoreQRCodeData",
    value: "xxx"
}

ios:
/*
 3、将QRCode对应的文字信息存入打印机缓存中;(必须要有)
 [格式] ASCII码 GS ( K pL pH cn fn m d1...dk
 十六进制码 1D 28 6B pL pH 31 50 30 d1...dk
 [范围] 4≤(pL+pH×256)≤7092 (0≤pL≤255,0≤pH≤27)
 cn=49
 fn=80
 m=48
 k=(pL+pH×256)-3
 [描述] 存储QR CODE数据(d1...dk)到符号存储区
 [注释] • 将QRCode的数据存储到打印机中
 • 执行esc @或打印机掉电后,恢复默认值
 */
{
    type: "addStoreQRCodeData",
    pL: 0,
    withpH: 0,
    withcn: 0,
    withyfn: 0,
    withm: 0,
}
  • 打印存储的QRCode

android:
{
    type: "addPrintQRCode"
}

ios:
/*
 4、发送打印QRCode命令。
 [格式] ASCII码 GS ( K pL pH cn fn m
 十六进制码 1D 28 6B 03 00 31 51 m
 [范围] (pL+pH×256)=3 (pL=3,pH=0)
 cn=49
 fn=81
 m=48
 [描述] 打印QRCode条码,在发送此命令之前,需通过( K< Function 180)命令将QRCode数据存储在打印机中。
 */
{
    type: "addPrintQRCode",
    pL: 0,
    withpH: 0,
    withcn: 0,
    withyfn: 0,
    withm: 0
}
  • 设置字符类型,仅支持Android

{
    type: "addSelectCharacterFont",
    font: "fonta" // fonta、fontb
}
  • 开钱箱

{
    type: "addGeneratePlus",
    foot: 0,// 钱箱引脚号, 0: F2 1: F5
    t1: 255, // 高电平时间
    t2: 255 // 低电平时间
}
  • 切纸(带切刀打印机才可用)

{
    type: "addCutPaper",
    m: 0 //  0全切纸,1是半切,仅支持iOS
}
  • 添加用户自定义指令

{
    type: "addUserCommand",
    value: "FFAABB"
}
  • 打印图片

{
    type: "drawImage",
    image: {
        type: "url",
        value: "/xxx/aa.png"
    },
    width: 30
}
  • 设置加粗模式

{
    type: "addTurnEmphasizedModeOnOrOff",
    value: "on" // on、off
}

TSC标签打印(如需更多接口请联系作者)


                    var data = [];
                    if (!this.isAndroid()) {
                        // ios 需要以startZpl开始
                        data.push({
                            type: "startZpl"
                        });
                    }
                    if (this.isAndroid()) {
                        data.push({
                            type: "addUserCommand",
                            value: "\r\n"
                        });
                    }
                    // 根据业务继续拼装data,详细的data里的对象取之见下面
                    ........

                    if (!this.isAndroid()) {
                        // ios 需要以endZpl结束
                        data.push({
                            type: "endZpl"
                        });
                    }

                    var params = {};
                    params.data = data; // data为打印指令逻辑
                    this.$gainschaPrint.printTsc(params, (resp) => {
                        var code = resp.code;
                        if (code == 0) {
                            var suc = resp.suc;
                            if (suc) { // 指令发送成功

                            } else { // 指令发送失败

                            }
                        } else {
                            var msg = resp.msg;
                        }
                    });
  • 设标签起始,起始命令必须以这个开始,仅支持iOS

{
    type: "startZpl"
}
  • 标签结束,最后命令必须以这个结束,仅支持iOS

{
    type: "endZpl"
}
  • 设置标签尺寸的宽和高 单位 mm

{
    type: "addSize",
    width: 10,
    height: 10
}
  • 增加用户自定义指令,仅支持Android

{
    type: "addUserCommand",
    value: "FFAABB"
}
  • 清除命令缓冲区,仅支持Android

{
    type: "clrCommand"
}
  • 设置标签间隙尺寸 单位mm,仅支持Android

{
    type: "addGap",
    value: 10
}
  • 设置打印方向

{
    type: "addDirection",
    direction: "forward" // forward、backward
    mirror: "mirror" // normal、mirror
}
  • 查询打印机实时状态,仅支持Android

{
    type: "addQueryPrinterStatus",
    value: "on" // 可选值,on、off、batch
}
  • 设置标签原点坐标

{
    type: "addReference",
    x: 0,
    y: 0
}
  • 设置打印浓度

{
    type: "addDensity",
    value: 0 // 取之范围,android:0~15 ios:0~30
}
  • 设置打印机撕离模式,仅支持Android

{
    type: "addTear",
    value: "on" // on、off、batch
}
  • 清除打印缓冲区/清除上张标签内容

{
    type: "addCls",
    isCls: true // 仅支持iOS
}
  • 在标签上绘制文字

android:

{
    type: "addText",
    value: "xxx",
    x: 0,
    y: 0,
    font: "TSS16.BF2", // 参数见下面 
    rotation: 0, // 0、90、180、270
    Xscal: 1, //  1~10
    Yscal: 1  // 1~10
}

ios:

{
    type: "addText",
    value: "xxx",
    x: 0,
    y: 0,
    font: 0, // 默认值:0 其他值:A-Z,0-9(打印机的任何字体,包括下载字体,EPROM 中储存的,当然这些字体必须用^CW 来定义为 A-Z,0-9)
    rotation: "N", // 字符串类型,旋转角度 N = 正常 (Normal) R = 顺时针旋转 90 度(Roated) I = 顺时针旋转 180 度(Inverted) B = 顺时针旋转 270 度 (Bottom)
    width: 1, //  
    height: 1  // 
}

android font: 0.TTF: FONT_0 1.TTF: Bold 2.TTF: SongTi 4.TTF: Thai 1: FONT_1 2: FONT_2 3: FONT_3 4: FONT_4 5: FONT_5 6: FONT_6 7: FONT_7 8: FONT_8 9: FONT_9 10: FONT_10 TSS16.BF2: SIMPLIFIED_16_CHINESE TSS20.BF2: SIMPLIFIED_20_CHINESE TSS24.BF2: SIMPLIFIED_24_CHINESE TSS32.BF2: SIMPLIFIED__32_CHINESE TST24.BF2: TRADITIONAL_CHINESE K: KOREAN

  • 打印其他编码语言,仅支持Android

{
    type: "addUnicodeText",
    textType: "BIG5", // BIG5: 繁体 EUC_KR: 韩文
    value: "BIG5碼繁體中文",
    x: 0,
    y: 0,
    font: "TSS16.BF2", // 参数见addText的font
    rotation: 0, // 0、90、180、270
    Xscal: 1, //  1~10
    Yscal: 1  // 1~10
}
  • 在标签上绘制图片

{
    type: "addBitmap",
    x: 0,
    y: 0,
    width: 50, 
    mode: 0 // 可选值,仅支持Android,0: OVERWRITE 1: OR 2: XOR
}
  • 打印二维码

android:

{
    type: "addQRCode",
    value: "xxx",
    x: 0,
    y: 0,
    cellWidth: 50, 
    level: "l", // l: LEVEL_L m: LEVEL_M q: LEVEL_Q h: LEVEL_H
    rotation: 0 // 0、90、180、270
}

ios:

{
    type: "addQRCode",
    value: "xxx",
    x: 0,
    y: 0
}
  • 标签上绘制一维条码, 仅支持Android

{
    type: "add1DBarcode",
    value: "xxx",
    x: 0,
    y: 0,
    height: 50, 
    barType: "128", // 128、128M、EAN128、25、25C、39、39C、39S、93、EAN13、EAN13+2、EAN13+5、EAN8、EAN8+2、EAN8+5、CODA、POST、UPCA、UPCA+2、UPCA+5、UPCE13、UPCE13+2、UPCE13+5、CPOST、MSI、MSIC、PLESSEY、ITF14、EAN14
    readable: 0, // 0:DISABLE 1:EANBEL
    rotation: 0, // 0、90、180、270
    narrow: 0, // 非必填
    width: 50 // 非必填
}
  • 执行打印

android:

{
    type: "addPrint",
    m: 1, // 份数
    n: 0 // 非必填,每张拷贝数 默认值:0(不复制) 每张标签需重复打印的张数 1≤n≤99999999
}

ios:

{
    type: "addPrint",
    m: 1, // 份数
    n: 0, // 每张拷贝数 默认值:0(不复制) 每张标签需重复打印的张数 1≤n≤99999999
    pauseCut: 0, // 多少张后暂停,默认0(不暂停
    isPause: false // 如果参数设定为 YES,打印机打印不会有暂停操作,如果设定为 NO,打印机每打印一组标签就会暂停,直到用户按下 FEED
}
  • 矩阵二维码,仅支持Android

{
    type: "addDMATRIX",
    x: 1, 
    y: 0,
    width: 50,
    height: 50,
    value: "xxx",
    rotation: 0, // 0、90、180、270
}
  • 设置蜂鸣器,仅支持Android

{
    type: "addSound",
    level: 1, // 频率
    interval: 0 // 时间
}
  • 打开钱箱命令,仅支持Android

{
    type: "addCashdrwer",
    foot: 0, // 钱箱号 0: F2 1:F5
    t1: 0, // 高电平时间
     t2: 0// 低电平时间
}
  • 已分割压缩图片算法,打印挽联可用 (部分机器可用)不支持,打印空白或不打印,仅支持Android

{
    type: "addZLibNoTrembleBitmapheight",
    x: 0, // 
    y: 0, // 
    width: 0,
    image: {
        type: "url",
        value: "/xxxx/sss.png"
    }
}
  • 设置标签黑标尺寸 单位mm,仅支持Android

{
    type: "addBline",
    value: 0, // 
}
  • 打印图片

{
    type: "drawImage",
    x: 0, // 
    y: 0, // 
    width: 100,
    image: {
        type: "url",
        value: "/xxxx/sss.png"
    }
}
  • 打印图片,仅支持Android

{
    type: "drawJPGImage",
    x: 0, // 
    y: 0, // 
    width: 100,
    image: {
        type: "url",
        value: "/xxxx/sss.png"
    }
}

CPCL面单打印(如需更多接口请联系作者)


                    var data = [];
                    if(this.isAndroid()) {
                        data.push({
                            type: "addUserCommand",
                            value: "\r\n"
                        });

                        data.push({
                            type: "addInitializePrinter",
                            height: 900,
                            qty: 1
                        });
                    } else {
                        data.push({
                            type: "addInitializePrinter",
                            height: 900,
                            qty: 1,
                            offset: 0
                        });
                    }
                    // 根据业务继续拼装data,详细的data里的对象取之见下面
                    ........

                    data.push({
                        type: "addPrint"
                    });
                    var params = {};
                    params.data = data;
                    this.$gainschaPrint.printCpcl(params, (resp) => {
                        var code = resp.code;
                        if (code == 0) {
                            var suc = resp.suc;
                            if (suc) { // 指令发送成功

                            } else { // 指令发送失败

                            }
                        } else {
                            var msg = resp.msg;
                        }
                    });
  • 标签初始化指令
android:

{
    type: "addInitializePrinter",
    height: 10, // 非必填
    qty: 1,// 非必填
    offset: 0 // 非必填
}

ios:
{
    type: "addInitializePrinter",
    height: 10, 
    qty: 1,
    offset: 0 
}
  • 增加用户指令,仅支持Android

{
    type: "addUserCommand",
    value: "FFBB"
}
  • 控制字段对齐方式

{
    type: "addJustification",
    value: "center", // center、left、right
    end: 0 // 非必填,仅支持Android
}
  • 放大字体指令

{
    type: "addSetmag",
    w: 1, // 字体宽度放大倍数 1-16
    h: 1 // 字体高度放大倍数 1-16
}
  • 在打印缓冲器添加文字指令
android:
{
    type: "addText",
    value: "xxx",
    x: 1,
    y: 1,
    font: "1" // 0、1、2、3、4、5、6、7、8、10、11、13、20、24、41、42、43、44、45、46、47、48、49、50
}

ios:
{
    type: "addText",
    value: "xxx",
    x: 1,
    y: 1,
    textCommand: 0, // 0: 横向打印文本 1:逆时针旋转 90 度,纵向打印文本。 2:同上  3: 逆时针旋转 180 度,反转打印文本。 4: 逆时针旋转 270 度,纵向打印文本。
    font: "1" // 0、1、2、3、4、5、6、7、8、10、11、13、20、24、41、42、43、44、45、46、47、48、55、58
}
  • 打印位映射图像

{
    type: "addEGraphics",
    x: 1, 
    y: 1,
    width: 20,
    image: {
        type: "url",
        value: "/xxxx/aa/aa.png"
    }
}
  • 注释条码,仅支持Android

{
    type: "addBarcodeText",
    font: 1, // 注释条码使用的字体号
    offset: 1 // 文本距离条码的偏移量
}
  • 横向打印条形码 ,选择理想宽窄比和理想窄点宽

android:
{
    type: "addBarcode",
    value: "xx",
    command: "barcode", // barcode、vbarcode
    code: "128",// 128、UPCA、UPCE、EAN13、EAN8、39、93、CODABAR
    height: 10,
    x: 1, 
    y: 1 
}

ios:
{
    type: "addBarcode",
    value: "xx",
    command: 0, // 0: barcode、1: vbarcode
    code: 1,// 1:128、2:UPCA、3:UPCE、4:EAN13、5:EAN8、6:39、7:93、8:CODABAR
    width: 50,
    height: 10,
    ratio: 0, // 见下面ratio说明
    x: 1, 
    y: 1 
}

ratio: // 宽窄比枚举 typedef enum { Point0 = 0,//1.5:1 Point1 = 1,//2.0:1 Point2 = 2,//2.5:1 Point3 = 3,//3.0:1 Point4 = 4,//3.5:1 Point20 = 20,//2.0:1 Point21 = 21,//2.1:1 Point22 = 22,//2.2:1 Point23 = 23,//2.3:1 Point24 = 24,//2.4:1 Point25 = 25,//2.5:1 Point26 = 26,//2.6:1 Point27 = 27,//2.7:1 Point28 = 28,//2.8:1 Point29 = 29,//2.9:1 Point30 = 30,//3.0:1 }BARCODERATIO;//宽窄比

  • 打印二维码

android:
{
    type: "addBQrcode",
    value: "xx",
    x: 1, 
    y: 1,
    n: 2, // 非必填,QRcode规范编码,1或2,推荐为2
    u: 6 // 非必填,模块的单位宽/单位高度 1-32 默认为6
}

ios:
{
    type: "addBQrcode",
    value: "xx",
    command: 0, // 0: barcode、1: vbarcode
    x: 1, 
    y: 1,
    n: 2, // QRcode规范编码,1或2,推荐为2
    u: 6 // 模块的单位宽/单位高度 1-32 默认为6
}
  • 打印标签指令

{
    type: "addPrint"
}
  • 设置标签内存宽度

{
    type: "addPagewidth,
    value: 20
}
  • 设置打印速度

{
    type: "addSpeed,
    value: 1 // 0~5
}
  • 行模式 文本加粗

{
    type: "addSetbold,
    isBold: true
}

如果觉得可以就点个👍吧,欢迎粉丝收藏,土豪打赏,您的关注就是我们创作的动力!

隐私、权限声明

1. 本插件需要申请的系统权限列表:

蓝牙权限、网络权限

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问