wx.onBLECharacteristicValueChange 怎么样可以一直获取设备的值?
发布于 5 年前 作者 na27 11571 次浏览 来自 官方Issues

api:wx.onBLECharacteristicValueChange

微信版本号:最新

基础库版本:最新

与一个产品在数据交互过程中只能获取一次设备的值,获取不到之后改变的值

/**

* 获取该服务所有特征值

*/

getCharacteristics(serviceId) {

const that = this

wx.getBLEDeviceCharacteristics({

deviceId: deviceId,

serviceId: serviceId,

success: function(res) {

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

if (res.characteristics[i].properties.write && writeFlag) {

//写操作

that.writeBLEValue(serviceId, res.characteristics[i].uuid)

writeFlag = false

}

if (res.characteristics[i].properties.notify && notifyFlag) {

//开启notify操作

that.notifyBLEValue(serviceId, res.characteristics[i].uuid)

notifyFlag = false

}


if (res.characteristics[i].properties.read && readFlag) {

//读操作

that.readBLEValue(serviceId, res.characteristics[i].uuid)

readFlag = false

}

}

},

})

this.onCharacteristic()

},


1 回复

看这里调用一次读写操作之后,都会把对应的标志位置为false,如果没有再额外修改的话,应该就不再走读写的逻辑了;还请排查下是否本身小程序代码逻辑有误

if (res.characteristics[i].properties.write && writeFlag) {

//写操作

that.writeBLEValue(serviceId, res.characteristics[i].uuid)

writeFlag = false

}

回到顶部