收藏
回答

wx.onBLECharacteristicValueChange 怎么样可以一直获取设备的值?

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()

},



回答关注问题邀请回答
收藏

2 个回答

  • kaelyn
    kaelyn
    2020-03-31






    uni.onBLECharacteristicValueChange

    无法获取特征值得改变,要怎么操作才可以看到特征值的改变??

    2020-03-31
    有用
    回复 1
    • 人偶?!
      人偶?!
      2020-03-31
      onBLECharacteristicValueChange 获取到的 res 是ArrayBuffer类型的  不能直接打印
      2020-03-31
      回复
  • 灵芝
    灵芝
    2020-03-02

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

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

    //写操作

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

    writeFlag = false

    }

    2020-03-02
    有用
    回复 1
    • 人偶?!
      人偶?!
      2020-03-03
      因为这个设备厂家没有提供文档,我是遍历设备的所有服务和其所有的特征值,去判断进行读写,所以让他进行一次方便我去排查问题。因为读是用wx.onBLECharacteristicValueChange,我多次调用这个函数来接收设备的值,但是 只读出一次值 ,我更改了设备当前的状态也接收不到值的变化
      2020-03-03
      回复
登录 后发表内容
问题标签