更新记录

1.0.1(2021-12-20)

雷丹打印插件


平台兼容性

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

原生插件通用使用流程:

  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原生插件配置”->”云端插件“列表中删除该插件重新选择


一、获取模块:

const moudle = uni.requireNativePlugin("Leiden-PrintfSDK")

二、扫描接口:

说明:调用这个方法之前,要先确保申请了位置权限。如果没有申请,这个方法会自动申请,但不会启动蓝牙扫描。

moudle.scan();

监听事件:

  1. 监听事件,调用这个,才有会connect_event事件的回调 不需要解监听,页面关闭自动解除

    moudle.listerDevice()

  2. 监听蓝牙扫描到设备的事件

    var globalEvent = uni.requireNativePlugin('globalEvent'); globalEvent.addEventListener("scanBle",function(result){ that.ble.push(result) console.log(JSON.stringify(result)) })

说明

  1. 调用此接口,要确保当前App已经申请了位置权限。如果没有申请,此接口会进行申请,但不会有任何返回值和回调。
  2. 扫描到设备的回调数据为: {"type":"devices","name":"LG920BW","mac":"DC:0D:30:64:FB:D6"}

三、连接接口:

  1. 注册连接是否成功的事件监听

    moudle.listerDevice() var globalEvent = uni.requireNativePlugin('globalEvent'); globalEvent.addEventListener("connect_event",function(result){ if (result.result == "success") { uni.showToast({ title:"连接成功" }) } else if (result.result == "fail" || result.result == "close") { uni.showToast({ title:"连接失败" }) } })

  2. 调用连接接口,此接口会返回开始连接的流程启动是否成功,注意,不是连接是否成功 连接的结果是以全局观察者的形式回调,请查看第一点

    moudle.connect(item.mac,e=> { console.log(JSON.stringify(e)) uni.showToast({ title:e.result ? "开始连接" : "开始连接失败" }) }) 说明

  3. mac参数为蓝牙设备的mac。可以是通过sacan接口扫描到的设备的mac参数。也可以是已配对的设备的mac(一般而言,连接过的设备即为已配对,除非用户手动在系统设置处取消了配对)
  4. 返回的数据格式为: {"name":"LG920BW","mac":"DC:0D:30:64:FB:D6","result":"success"} result参数代表成功或者失败。

四、打印接口

function printf() {
    var json = {
        "labels":[
            {
                "labelW":50 * 8,//标签的宽度 50的单位mm,8 为打印机上 mm 与 px的转化单位。必须
                "labelH":50 * 8,//同标签宽度。必须
                "number":1,// 打印的张数。不必须 默认为1
                "bitmaps":[// 打印的图片数据。不必须。没有数据则打印一张空白标签
                    {
                        "x":0 * 8,//同标签宽度。当前图片的x坐标。必须
                        "y":0 * 8,//同标签宽度。当前图片的x坐标。必须
                        "WD":25 * 8,//同标签宽度。当前图片的宽度。必须
                        "HT":25 * 8,//同标签宽度。当前图片的高度。必须
                        "bitmapPath":"/storage/emulated/0/logo.png"// 图片路径。必须
                    }
                ]
            },{
                "labelW":50 * 8,//标签的宽度 50的单位mm,8 为打印机上 mm 与 px的转化单位。必须
                "labelH":100 * 8,//同标签宽度。必须
                "number":2,// 打印的张数。不必须 默认为1
                "bitmaps":[// 打印的图片数据。不必须。没有数据则打印一张空白标签
                    {
                        "x":0 * 8,//同标签宽度。当前图片的x坐标。必须
                        "y":0 * 8,//同标签宽度。当前图片的x坐标。必须
                        "WD":30 * 8,//同标签宽度。当前图片的宽度。必须
                        "HT":30 * 8,//同标签宽度。当前图片的高度。必须
                        "bitmapPath":"/storage/emulated/0/logo.png"// 图片路径必须
                    }
                ]
            }
        ]
    };
    moudle.printfLabels(json,e =>{
        if (e.resultType == 1) {
            uni.showToast({
                title:"打印成功"
            })
        } else if (e.resultType == 2) {
            uni.showToast({
                title:"打印错误" + e.result
            })
        } else if (e.resultType == 3) {
            uni.showToast({
                title:"蓝牙未连接"
            })
        } 
    })
}

说明

  1. 需要注意的是:bitmapPath要保证有图片并且有权限访问(Android10 无法访问沙盒外的图片,切记)
  2. 返回的数据: {"resultType":1,"result":"打印成功"}

五、环境变量

  1. 一般不要在开发时调整好JSON,不要开放给用户设置
  2. 环境变量设置接口,不需要进行蓝牙连接
  3. 环境变量的JSON代表的意义:

    //打印速度 1 -- 高速 2 -- 标准 3 -- 中速 4 -- 低速 private int printfSpeed = 2; //打印浓度 范围 1 - 15 private int printfPotency = 8; //打印媒介 1 - 热敏 2 - 碳带 private int printfMedium = 2; //标签种类 1 - 黑标 2 - 模切 3 - 连续 private int labelType = 3; //顶部偏移 ±支持标签最大高度 -10 --- +10 private int topDeviation = 0; //打印模式 1 - 标准模式 2 - 连续模式 3 - 剥离模式 4 - 切刀模式 private int printfModel = 1; //剥离方式 1 - 传感器 2 - 按键 当 printfMode = 剥离模式时有效 private int beStrippedModel = 1; //剥离送纸量 当 printfMode = 剥离模式时有效 private int beStrippedFeedVolume = 0; //切纸张数 [0-9999] 当 printfModel == 切刀模式模式时有效 private int cutNumber = 0; //切刀送纸量 当 printfModel == 切刀模式时有效 private int cutterFeedVolume = 0; //标准送纸量 当 printfModel == 标准模式时有效 private int standardFeedVolume = 0;

5. 设置的为连续纸的案例:

setCurrentEnvContinue() {
    moudle.getCurrentEnviron(e => {
        e.labelType = 3;
        moudle.setCurrentEnviron(e)
    });
},

6. 设置的为连续纸的案例:

setCurrentEnvLabel() {
    moudle.getCurrentEnviron(e => {
        e.labelType = 2;
        moudle.setCurrentEnviron(e)
    });
},

六、当前是否已连接

调用案例:

isConnect() {
    moudle.isConnect(e => {
        if (e.result) {
            uni.showToast({
                title:"已连接"
            })
        } else {
            uni.showToast({
                title:"未连接"
            })
        }
    })
},

七、直接写指令

调用案例:

打印一张空白的 具体的指令打印,请看指令集
const content = "JOB\nDEF PW=560,PH=640\nSTART\nQTY P=1\nEND\nJOBE\n"
// 1 代表 发送成功,-2代表发送失败,-1代表未连接
moudle.writer(content,e=>{
    if (e.result == 1) {
        uni.showToast({
            title:"发送成功"
        })
    } else {
        uni.showToast({
            title:"发送失败"
        })
    }
})

八、关闭连接

调用案例:

 moudle.close()

隐私、权限声明

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

<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!--模糊定位权限,仅作用于6.0+--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!--精准定位权限,仅作用于6.0+--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

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

插件不采集任何数据

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

许可协议

作者未提供license.md

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