微信小程序蓝牙坑(1)
2018-08-07
编程
一时兴起,就想做一个微信小程序了。
花了点时间,决定还是做一个和蓝牙相关的。
看了微信小程序的蓝牙文档,发现还是好理解的。
流程
1 开启蓝牙适配器
wx.openBluetoothAdapter(OBJECT)
这个说法和Android是一样的,在Android中也是叫蓝牙适配器的,iOS中是CBCentralManager。
2 搜索蓝牙外设
wx.startBluetoothDevicesDiscovery(OBJECT)
从OBJECT的参数可以知道,程序员们还是挺辛苦的~
为了在Android和iOS上面有统一的接口,自己特地封装了一层。
比如allowDuplicatesKey
就是iOS特有的
interval
是Android后期有的
3 连接蓝牙外设
wx.createBLEConnection(OBJECT)
不容易啊,这应该是以iOS为原型设计的接口~
iOS中是让CentralManager来连接外设的,Android中是BluetoothDevice自己提供了连接的方法~
4 发现服务
wx.getBLEDeviceServices(OBJECT)
5 获取特征
wx.getBLEDeviceCharacteristics(OBJECT)
6 设置notify
wx.notifyBLECharacteristicValueChange(OBJECT)
这里文档中只说了两个tip,也不知道快速订阅多个characteristic有没有做特别的优化,至少写原生Android的时候,订阅多个characteristic并不是那么方便~因为之前的文章里面说了,系统会阻塞~
7 读读写写以及notify的回调
wx.readBLECharacteristicValue(OBJECT)
wx.writeBLECharacteristicValue(OBJECT)
wx.onBLECharacteristicValueChange(CALLBACK)
看函数名就能理解,这里最难过的就是字节流操作了~
坑儿
不知道是不是我手机的问题,蓝牙连接需要特别长的时间~
auto connect,是没有的~如果在连接外设那里不加上timeout的话,他会一直在那儿连接,而且如果连不上,就会一直连不上~
不要想当然的以为只要填写对了characteristicID和serviceID就可以直接读写收,还是要搜索到才行的!