其他分享
首页 > 其他分享> > 微信蓝牙开发

微信蓝牙开发

作者:互联网

1、经历:最近在进行微信蓝牙打印功能模块的开发,了解了下蓝牙连接的全流程,好记性不如烂笔头,记录一下

2、感想:

  先来说一下蓝牙连接的几个流程吧,虽然官方有且很详细了:https://developers.weixin.qq.com/miniprogram/dev/framework/device/ble.html

  首先是蓝牙适配器模块的初始化wx.openBluetoothAdapter,不初始化是无法使用其他蓝牙接口的

  初始化后,要开始扫描周围的蓝牙设备wx.startBluetoothDevicesDiscovery,还要配置扫描到蓝牙设备的监听方法wx.onBluetoothDeviceFound

  触发扫描到蓝牙设备的监听方法后,我们可以调用wx.getBluetoothDevices获取在蓝牙模块生效期间所有搜索到的蓝牙设备

  获取到devices列表后我们可以在页面展示出来,当点击要连接的蓝牙设备就取出该设备device里面的deviceId进行连接wx.createBLEConnection

  连接成功后我们要停止扫描周围蓝牙设备wx.stopBluetoothDevicesDiscovery,同时取消监听蓝牙适配器状态变化事件wx.offBluetoothDeviceFound,因为扫描设备比较耗费系统资源

  之后调用wx.getBLEDeviceServices获取连接的蓝牙设备提供的所有服务services,这时遍历一下如果有service里的isPrimary是true,说明这个service是主服务,就可以进行通信,如果多个主服务的话,就按业务需求操作就好了

  选了主服务service后用这个服务的uuid和连接设备的deviceId去查该服务的所有特征值wx.getBLEDeviceCharacteristics

  查到这个服务的所有特征值后进行遍历通过辨别特征的properties里面的write、read、notify来判断是否具备读写、订阅等功能

  存在properties.read可以用wx.readBLECharacteristicValue,存在properties.notify的话可以监听订阅的notify事件,简单来说就是建立长连接,获取设备发出的数据

  存在properties.write的话就可以调用wx.writeBLECharacteristicValue传入特征的uuid、服务的uuid和连接设备的deviceId来写入二进制数据数据

  蓝牙打印的话,直接把数据转二进制传过去是不行的,打印机是识别不了的,因为js里面用的Unicode编码,译名为万国码、国际码。而打印机里面用的是GBK编码,也就是国标码,编码不同,所以要经过转义才行

  转义完后,传给打印机的数据也不是随便传,除了传打印数据,还要传打印机能识别的指令,打印机才能动起来,目前主流的打印机控制语言有三种:Epson公司的ESC命令集、HP公司的PCL命令集、Adobe公司的PostScript(简称PS)命令集

  刚好我开发的业务主要是打印票据,而ESC命令集是针式打印机和票据打印领域的事实上的工业标准,所以我用的是ESC命令集

  写完数据后,打印机就成功打印出票据了,就可以调用wx.closeBLEConnection断开连接了,再调用wx.closeBluetoothAdapter关闭蓝牙模块,流程就结束了

wx.openBluetoothAdapter                         //初始化蓝牙模块
wx.startBluetoothDevicesDiscovery               //开始扫描设备
wx.onBluetoothDeviceFound                       //监听发现设备时的事件
wx.getBluetoothDevices                          //获取蓝牙模块生效期间所有的设备
wx.createBLEConnection                          //连接设备
wx.stopBluetoothDevicesDiscovery                //停止扫描设备
wx.offBluetoothDeviceFound                     //取消监听发现设备的事件
wx.getBLEDeviceServices                        //获取该设备所有服务
wx.getBLEDeviceCharacteristics                 //获取单个服务的所有特征
wx.writeBLECharacteristicValue                 //写入数据
wx.readBLECharacteristicValue                  //读取数据
wx.closeBLEConnection                          //断开连接
wx.closeBluetoothAdapter                       //关闭蓝牙模块

 

标签:打印机,微信,蓝牙,监听,开发,wx,连接,设备
来源: https://www.cnblogs.com/lovewhatIlove/p/16151752.html