更新记录

1.0.0(2023-12-12)

IPOS蓝牙打印机,打印文本、图片、换行、字体大小等


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 14.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原生插件配置”->”云端插件“列表中删除该插件重新选择


前言

IPOS蓝牙打印机,打印文本、图片、换行、字体大小等

支持定制,联系QQ252797991

功能


// 集成到项目时iposprinter做成全局单例使用
var iposprinter = uni.requireNativePlugin("wrs-iposprinter");
  • 设置回调

            // 设置回调
iposprinter.setCallback((resp) => {
    this.showMsg(JSON.stringify(resp))
    var action = resp.action
    switch (action) {
        case "android.bluetooth.adapter.action.STATE_CHANGED":
            var value = resp.value
            switch (value) {
                // STATE_OFF
                case 10:
                    this.showMsg("蓝牙已关闭")
                    break;
                    // STATE_TURNING_OFF
                case 13:
                    this.showMsg("蓝牙正在关闭")
                    break;
                    // STATE_ON
                case 12:
                    this.showMsg("蓝牙已开启")
                    iposprinter.loadBluetoothPrinterDevice()
                    break;
                    // STATE_TURNING_ON
                case 11:
                    this.showMsg("蓝牙正在开启")
                    break;
            }
            break;
        default:
            break;
    }
})
  • 初始化SDK

iposprinter.initSDK()
  • 加载蓝牙打印机

iposprinter.loadBluetoothPrinterDevice()
  • 初始化打印机

iposprinter.initPrinter()
  • 获取蓝牙打印机状态

iposprinter.getPrinterStatus((resp) => {
    var str = "未知"
    var status = resp.status
    switch (status) {
        // PRINTER_NORMAL
        case 0:
            str = "PRINTER_NORMAL"
            break;
            // PRINTER_PAPERLESS
        case 1:
            str = "PRINTER_PAPERLESS"
            break;
            // PRINTER_THP_HIGH_TEMPERATURE
        case 2:
            str = "PRINTER_THP_HIGH_TEMPERATURE"
            break;
            // PRINTER_MOTOR_HIGH_TEMPERATURE
        case 3:
            str = "PRINTER_MOTOR_HIGH_TEMPERATURE"
            break;
            // PRINTER_IS_BUSY
        case 4:
            str = "PRINTER_IS_BUSY"
            break;
            // PRINTER_ERROR_UNKNOWN
        case 5:
            str = "PRINTER_ERROR_UNKNOWN"
            break;
        default:
            break;
    }
    this.showMsg("打印机状态:" + str)
})
  • 打印

var data = []
// 初始化打印机
data.push({
    opt: "init_printer"
})
// 选择中文字符
data.push({
    opt: "selectChineseMode"
})
// 设置字体大小
data.push({
    opt: "fontSizeSet",
    value: 0x01
})
// 打印文本
data.push({
    opt: "setText",
    value: "您好"
})
// 打印并走纸160点行
data.push({
    opt: "performPrint",
    value: 160
})
var params = {}
params.data = data
iposprinter.printContent(params, (resp) => {
    var code = resp.code
    if (code == 0) {
        // 打印指令发送成功
    } else {
        this.showMsg("打印失败:" + JSON.stringify(resp))
    }
});

更多打印指令参考下面:


{
    opt: "init_printer" // 初始化打印机,放到数组第一个位置
}

{
    opt: "selectChineseMode" // 设置汉字模式
}

{
    opt: "selectCharCodeSystem" ,// 编码系统选择
    value: 0 // mode 0,48 :系统默认  1,49 :GBK
}

{
    opt: "fontSizeSet", // 字体(大小)设置
    value: 1 // 设置倍宽倍高
}

{
    opt: "printLeftMargin", //设置打印左边距
    value: 1 // 单位像素点 为8的整数倍
}

{
    opt: "absolutePrintPosition", //设置绝对打印位置
    value: 1 // 单位像素点 为8的整数倍
}

{
    opt: "relativePrintPosition", //设置横向相对打印位置
    value: 1 // 当前字体大小下ASCII字符个数
}

{
    opt: "setLineHeight", //设置行高
    value: 1 // 行高像素点
}

{
    opt: "alignMode", //对齐模式
    value: 1 // 
}

{
    opt: "nextLines", //换行
    value: 1 //  换行数
}

{
    opt: "underlineWithWidthOn", //下划线设置
    value: 1 //  0, 1 , 2或者 48, 49, 50
}

{
    opt: "printUnderlineModeEn", //打印下划线模式设置
    value: true //  
}

{
    opt: "setText", //设置文本
    value: "您好",
    charsetName: "GBK"
}

{
    opt: "customCmd", // 自定义指令
    value: [0x01, 0x02]
}

{
    opt: "performPrint", // 打印并走纸value点行, 一般放到数组最后一个位置
    value: 160
}

{
    opt: "performPrintFeedPaperLines", // 打印并走纸value行 字符行字符高度, 一般放到数组最后一个位置
    value: 160
}

{
    opt: "set_HT_position", // 水平方向右移n列
    value: [8,12,18] // 单位字符宽度(包含右间距)
}

{
    opt: "HTCmd" // 跳格
}

{
    opt: "setHRIPosition", // 设置HRI字符的打印位置
    value: 0
}

{
    opt: "setBarcodeHeight", // 设置条码高度
    value: 0 // 1-16 单位24个像素点
}

{
    opt: "setBarcodeWidth", // 设置条码宽度
    value: 0 // 1-16 单位24个像素点
}

{
    opt: "barcodePrint", // 条码打印

}

{
    opt: "barcodeData", // 设置条码宽度
    value: "12121",
    mode: 0
}

{
    opt: "setQRsize", // 设置二维码大小
    value: 1 // 1-16 单位 24像素点
}

{
    opt: "setQRCorrectionLevel", // 设置二维码纠错等级
    value: 1 // 
}

{
    opt: "cacheQRData", // 设置二维码纠错等级
    value: "http://www.baidu.com",
     charsetName: "GBK"
}

{
    opt: "getBitmapPrintData", // 设置二维码纠错等级
    value: "/xxx/xxx/aa.png",
     width: 50, // 0-384
     bmpMode: 1
}

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

隐私、权限声明

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

蓝牙

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

插件不采集任何数据

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

暂无用户评论。

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