应用场景

需要试移动端连接蓝牙获取和修改硬件设备数据
根据uniapp文档编写代码,微信小程序调试没有问题,但是打包成安卓app的时候onBLECharacteristicValueChange接收不到uni.writeBLECharacteristicValue(OBJECT)写入后设备返回的数据

原因

获取设备服务uni.getBLEDeviceServices(OBJECT)和特征值uni.getBLEDeviceCharacteristics(OBJECT)的时候,这两个接口返回的都是数组,我原来是把所有返回支持 notify 或者 indicate的特征值都串行用uni.notifyBLECharacteristicValueChange(OBJECT)启用了一次,uni.writeBLECharacteristicValue(OBJECT)使用的是找到所有特征值里面的一个符合write== true作为参数(Array.find(item=>item.properties.write))

解决

uni.notifyBLECharacteristicValueChange(OBJECT)只启用一次和uni.writeBLECharacteristicValue(OBJECT)写入(有设备相应)这两个接口中使用同一个一个特征值,符合
(Array.find(item => (item.properties.notify || item.properties.indicate) && item.properties.write))
后监听数据正常接收

解决后日志正常接收蓝牙数据

在这里插入图片描述

更多推荐