收藏
回答

notifyBLECharacteristicValueChange方法报错10008?

工具:微信开发者工具

背景:通过小程序蓝牙连接低功率设备,小程序获取wifi账号密码后,以json格式发送给设备,使之能够联网

问题:

1、尝试使用onBLECharacteristicValueChange监听变化,接口返回的value一直为空

characteristic xxxxxxxx-0000-1000-8000-00805F9B34FB has changed, now is {"value":{},"deviceId":"xxx","serviceId":"xxx","characteristicId":""xxx}

2、查看文档,发现调用onBLECharacteristicValueChange前需要调用notifyBLECharacteristicValueChange


3、尝试调用notifyBLECharacteristicValueChange,接口报错,打印如下

notifyBLECharacteristicValueChange fail {"errno": 1500104, "errCode": 10008, "errMsg": "notifyBLECharacteristicValueChange:fail:no descriptor"}



demo代码片段:

wx.getBLEDeviceCharacteristics({

// 这里的 deviceId 需要已经通过 wx.createBLEConnection 与对应设备建立链接

deviceId: this.data.deviceId,

serviceId: this.data.serviceId,

success: (resCharacteristics) => {

console.log("device getBLEDeviceCharacteristics:", resCharacteristics);


for (let i = 0; i < resCharacteristics.characteristics.length; i++) {

let item = resCharacteristics.characteristics[i];

console.log("characteristics-item", item);

if (item.properties.notify) {

wx.notifyBLECharacteristicValueChange({

state: true, // 启用 notify 功能

deviceId: this.data.deviceId,

serviceId: this.data.serviceId,

characteristicId: item.uuid,

success: (res) => {

console.log(

"notifyBLECharacteristicValueChange success",

res.errMsg

);

},

fail: (err) => {

console.log("notifyBLECharacteristicValueChange fail", err);

},

});

}


wx.onBLECharacteristicValueChange(function (res) {

console.log(

`characteristic ${

res.characteristicId

} has changed, now is ${JSON.stringify(res)}`

);

// console.log(ab2hex(res.value))

});


wx.readBLECharacteristicValue({

deviceId: this.data.deviceId,

serviceId: this.data.serviceId,

characteristicId: item.uuid,

success: (rr) => {

console.log("readBLECharacteristicValue", rr);

},

});

}

},

fail: (err) => {

console.log("device getBLEDeviceCharacteristics-err:", err);

},

});






回答关注问题邀请回答
收藏
登录 后发表内容