一时兴起,就想做一个微信小程序了。

花了点时间,决定还是做一个和蓝牙相关的。

看了微信小程序的蓝牙文档,发现还是好理解的。

流程

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就可以直接读写收,还是要搜索到才行的!