微信小程序连接标签打印机,打印标签

这篇具有很好参考价值的文章主要介绍了微信小程序连接标签打印机,打印标签。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

授权蓝牙并且搜索蓝牙设备

// 授权定位和蓝牙
authorizationBluetooth() {
    wx.getSetting({
        success: (res) => {
            if (res.authSetting.hasOwnProperty('scope.bluetooth')) {
                if (!res.authSetting['scope.bluetooth']) {
                    this.setData({
                        showManual: true
                    })
                } else {
                    this.bluetoothState()
                }
            } else {
                wx.authorize({
                    scope: 'scope.bluetooth',
                    success: () => {
                        // 用户已经同意小程序使用手机蓝牙功能,后续调用 蓝牙 接口不会弹窗询问
                        this.bluetoothState()
                    },
                    fail: () => {
                        Toast('你已拒绝开启蓝牙功能')
                    }
                })
            }
        }
    })
},
// 第一步,蓝牙初始化
bluetoothState() {
    wx.openBluetoothAdapter({
        mode: 'central',
        success: (res) => {
            console.log('第一步,蓝牙初始化成功', res)
            this.startBluetoothDevicesDiscovery()
        },
        fail: (err) => {
            console.log('蓝牙设备错误', err)
            if (err.errCode == 10001) {
                wx.onBluetoothAdapterStateChange((ress) => {
                    if (ress.available) {
                        this.startBluetoothDevicesDiscovery()
                    } else {
                        Toast('蓝牙设备不可用')
                    }
                })
            } else {
                Toast('蓝牙设备不可用')
            }
        }
    })
},
// 第二步 开始搜索附近的蓝牙设备
startBluetoothDevicesDiscovery() {
    wx.startBluetoothDevicesDiscovery({
        allowDuplicatesKey: false,
        success: (res) => {
            this.onBluetoothDeviceFound()
        },
    })
},
// 第三步 监听发现附近的蓝牙设备
onBluetoothDeviceFound() {
    wx.showLoading({
        title: '重新搜索中',
        mask: true
    })
    wx.onBluetoothDeviceFound(() => {
        wx.getBluetoothDevices({
            success: res => {
                let deviceList = []
                if (res.devices.length > 0) {
                    res.devices.forEach(v => {
                        if (v.RSSI < 0 && v.name != '未知设备') {
                            deviceList.push(v)
                        }
                    })
                }
                wx.hideLoading()
                this.setData({
                    deviceList
                })
            }
        })
    })
},


// 第四步、 建立连接
connectDevice(e) {
    const item = e.currentTarget.dataset.item
    this.setData({
        linkShow: true,
        activeItem: item
    }, () => {
        app.linkBluetooth(item.deviceId).then(res => {
            console.log('蓝牙连接成功', res)
            Toast('蓝牙连接成功')
            // 更新连接历史记录
            this.updateHisList(this.data.activeItem)
            this.setlinkDeviceId(this.data.activeItem.deviceId)
            this.setData({
                linkShow: false
            })
        }).catch(err => {
            console.log(err.message, err)
            Toast(err.message)
            this.closeBLEConnection(item.deviceId)
            this.setData({
                linkShow: false,
            })
        })
    })
},
// 断开蓝牙连接
closeBLEConnection(deviceId, tip) {
    app.closeBluetooth(deviceId).then(res => {
        this.setlinkDeviceId('')
        if (tip) {
            Toast(tip)
        }
    }).catch(err => {
        Toast('断开连接失败')
    })
},

连接断开方法

// 连接蓝牙
linkBluetooth(deviceId) {
    return new Promise((resolve, reject) => {
        wx.createBLEConnection({
            deviceId: deviceId,
            success: (res) => {
                setTimeout(() => {
                    wx.getBLEDeviceServices({
                        deviceId: deviceId,
                        success: (res) => {
                            for (let i = 0; i < res.services.length; i++) {
                            if (res.services[i].isPrimary) {
                                    let serviceId = res.services[i].uuid
                                    let Iswrite = false
                                    wx.getBLEDeviceCharacteristics({
                                        deviceId,
                                        serviceId,
                                        success: (res) => {
                                            let characteristicId = ''
                                            for (let i = 0; i < res.characteristics.length; i++) {
                                                let item = res.characteristics[i]
                                                //支持写入就行了
                                                if (item.properties.write) {
                                                    Iswrite = true
                                                    characteristicId = item.uuid
                                                }
                                            }
                                            if (Iswrite) {
                                                wx.setStorageSync('linkDeviceId', deviceId)
                                                wx.setStorageSync('serviceId', serviceId)
                                                wx.setStorageSync('characteristicId', characteristicId)
                                                resolve({
                                                    message: '蓝牙连接成功'
                                                })
                                            } else {
                                                reject({
                                                    message: '蓝牙服务不支持此功能,已断开'
                                                })
                                            }
                                        },
                                        fail(err) {
                                            reject({
                                                message: '获取蓝牙低功耗设备某个服务中所有特征失败',
                                                err
                                            })
                                        }
                                    })
                                    return
                                }
                            }
                        },
                        fail(err) {
                            reject({
                                message: '获取蓝牙低功耗设备所有服务失败',
                                err
                            })
                        }
                    })
                }, 3000)
            },
            fail: (err) => {
                reject({
                    message: '蓝牙连接失败',
                    err
                })
            }
        })
    })
},
// 断开蓝牙连接
closeBluetooth(deviceId) {
    return new Promise((resolve, reject) => {
        wx.closeBLEConnection({
            deviceId: deviceId,
            success: res => {
                wx.removeStorageSync('linkDeviceId')
                wx.removeStorageSync('serviceId')
                wx.removeStorageSync('characteristicId')
                resolve(res)
            },
            fail: err => {
                wx.removeStorageSync('linkDeviceId')
                wx.removeStorageSync('serviceId')
                wx.removeStorageSync('characteristicId')
                reject(err)
            }
        })
    })
},

打印命令

// GBK的方法随便找一个就行
import GBK from './gbk.min.js';

// 打印商品标签
export const printGoodsTag = (option) => {
    if (!wx.getStorageSync('linkDeviceId')) {
        wx.showToast({
            title: '请连接打印机',
            icon: 'none',
            mask: true
        })
        return
    }
    let data =
        'SIZE 40 mm,30 mm\n' +
        'GAP 2 mm,0 mm\n' +
        'DIRECTION 1\n' +
        'CLS\n' +
        `TEXT 20,30,"0",0,1,1,"商品名称:${option.goodsName}"\n` +
        `TEXT 20,80,"0",0,1,1,"规格:${option.skuName || ''}"\n` +
        `QRCODE 20,130,M,3,M,0,M1,S2,"${option.id}_1"\n` +
        `TEXT 120,140,"0",0,1,1,"零售价"\n` +
        `TEXT 120,180,"0",0,1.5,1.5,"¥${option.price || ''}"\n` +
        'PRINT 1,1'
    sendDataToDevice(new Uint8Array([...GBK.encode(data), ...[10]]).buffer);
}
// 打印维修单标签
export const printRepairTag = (option) => {
    if (!wx.getStorageSync('linkDeviceId')) {
        wx.showToast({
            title: '请连接打印机',
            icon: 'none',
            mask: true
        })
        return
    }
    let data =
        'SIZE 40 mm,30 mm\n' +
        'GAP 2 mm,0 mm\n' +
        'DIRECTION 1\n' +
        'CLS\n' +
        `QRCODE 20,30,M,3,M,0,M1,S2,"${option.id}_2"\n` +
        `TEXT 110,30,"0",0,1,1,"${option.equModel || ''}"\n` +
        `TEXT 110,60,"0",0,1,1,"${option.okey || ''}"\n` +
        `TEXT 110,90,"0",0,1,1,"${option.imei || ''}"\n`
    let str = option.reason || ''
    if (str) {
        let length = str.length
        let maxNum = 12
        let top = 130
        for (let i = 0, len = length; i <= len; i += 12) {
            let text = str.slice(i, maxNum)
            data = data + `TEXT 20,${top},"0",0,1,1,"${text}"\n`
            maxNum += 12
            top += 30
        }
    }
    data = data + 'PRINT 1,1'
    sendDataToDevice(new Uint8Array([...GBK.encode(data), ...[10]]).buffer);
}

const sendDataToDevice = value => {
    let byteLength = value.byteLength;
    const speed = 20;
    if (byteLength > 0) {
        wx.writeBLECharacteristicValue({
            deviceId: wx.getStorageSync('linkDeviceId'),
            characteristicId: wx.getStorageSync('characteristicId'),
            serviceId: wx.getStorageSync('serviceId'),
            value: value.slice(0, byteLength > speed ? speed : byteLength),
            success: res => {
                if (byteLength > speed) {
                    sendDataToDevice(value.slice(speed, byteLength));
                } else {
                    console.log('已完成打印   laster success', res);
                }
            },
            fail: err => {
                console.log(err)
            },
        });
    }
}

文章来源地址https://www.toymoban.com/news/detail-696921.html

到了这里,关于微信小程序连接标签打印机,打印标签的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uni-app微信小程序使用佳博蓝牙打印机

    1.佳博打印js copy到项目里 2.需要打印的vue页面引入js 3.打印数据初始化 4.打印按钮事件 蓝牙列表连接页面 已连接处打印方法

    2024年02月12日
    浏览(149)
  • Python 直连打印机打印,可排版设置字体,附标签贴打印案例。

    前言:我用的是下面这款标签贴打印机,一开始试了好多打印方式,图片打印很糊,docx文件打印效果最好,但是每次打印会打开Word 影响效率,PDF也会打开PDF软件,打印效果略差于docx文件,TXT文件又不能设置字体,找了好久,结合几个文章得到了以下几乎完美的打印方式,可

    2024年02月08日
    浏览(41)
  • 惠普打印机---共享打印机安装 --连接

    输入 win+R ,再输入共享打印机的连接的IP 2.进入 连接 界面 3.右击打印机 ,点击连接 ,就可以添加打印机设备 方法二、 添加打印机

    2024年02月03日
    浏览(134)
  • 无条码商品新建商品档案,搭配蓝牙便携打印机移动打印条码标签

    null 无条码商品的商品档案新建,并打印条码标签,即可实现仓库条码管理,扫码入库,出库,盘点等操作。, 视频播放量 1、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 汉码盘点机PDA, 作者简介 ,相关视频:条码标签打印,蓝牙便携打印机的设置,

    2024年02月14日
    浏览(48)
  • 老毛子、华硕固件USB连接打印机,普通打印机变无线打印机

    本次作为打印机服务器的是Newifi Mini,1千兆wan口,2百兆lan口,1USB2.0接口,打印机型号为canon ip1180,年代非常久远,不过墨盒可以反复加墨,算下来打印费用很便宜,无奈不支持无线打印,于是利用路由器的usb口使其变成无线打印机。 由于打印机离主机位置较远,且布线不方

    2024年02月08日
    浏览(139)
  • mac Canon打印机连接教程(附打印机驱动下载)

    网上大多是windows版驱动和安装教程,mac链接相对参考材料较少,记录于此方便节省大家时间。本篇以Canon iR C3025打印机为例,流程大同小异。

    2024年02月12日
    浏览(75)
  • windows无法连接到打印机?三个方法连接打印机(Win10系统)

    在日常办公中,我们经常会用到打印机。一般情况下,打印机要与电脑连接才可以使用。有很多用户反馈, windows无法连接到打印机,这是怎么回事呢? 请看文章是如何解决打印机无法连接到计算机的问题! 操作环境: 演示机型:华硕X8AE43In-SL 系统版本:Windows 10 有时遇到:

    2024年02月04日
    浏览(82)
  • 运维知识讲解之打印机连接以及电脑局域网共享打印机

    市面上比较常见的打印机主要是惠普(hp)、佳能(Canon)、爱普生(EPSON)、Brother和联想(Lenovo)几个品牌,这些品牌一般都有自己的打印机驱动下载网站,如果是杂牌的,则只能通过原装配送的驱动,或者网上百度的网站下载了(一般有插件),所以尽量用官网下载驱动比

    2024年02月16日
    浏览(70)
  • Windows11连接共享打印机失败,提示以下错误:Windows 无法连接到打印机。请检查打打印机名并重试。如果这是网络打印机,请确保打印机已打开

    1.在确定打印机所在的主机是开机状态且局域网内其他电脑连接打印机正常情况下; 2.检查所需安装打印机的电脑打印服务运行状态; 2.1 按住Win+R键输入 services.msc 点击确 定后,打开服务; 2.2 Print Spooler、DCOM Server Process Launcher、RPC Endpoint Mapper,将其运行状态设置为自动启动

    2024年02月04日
    浏览(248)
  • win10连接win7共享打印机提示无法连接到打印机

    一、有很多Win10系统用户反馈,在局域网中想要连接Win7共享的打印机无法连接,无法安装的问题,下面和大家分享操作步骤。 步骤1:开启SMB1.0组件 在Win10小娜搜索框,搜索控制面板打开; 来到控制面板,选择查看方式为小图标,然后点击程序和功能; 点击启用或关闭Windo

    2024年02月08日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包