收藏
回答

wx.notifyBLECharacteristicValueChanged

问题模块
API和组件

wx.notifyBLECharacteristicValueChanged设置后没有效果,求大神指点!


现象:

蓝牙连接成功后,设备上传消息给小程序,小程序无法自动读取并提示,需要手动执行wx.readBLECharacteristicValue才会在wx.onBLECharacteristicValueChange方法中获得消息。手动执行存在每次点击都会读取Characteristic中的值,无法判断这个值是否已读。


设置步骤如下:


onLoad: function () {

   wx.onBLECharacteristicValueChange(function(res) {//获得消息解码并输出

         console.log('value:',"characteristic "+res.characteristicId+" as changed, now is "+res.value);

         //console.log('value:',"value= "+res.value[0]+"  "+res.value[1]);

         let buffer = res.value

         let dataView = new DataView(buffer)

         console.log('value:',dataView.getUint8(0))

       })


updateBTDevs: function(dev) {

  console.log(JSON.stringify(dev));

  var that = this;


  if(this.btdevshash==null && dev["name"]=='Xinda'){


     this.btdevshash = dev;

     wx.createBLEConnection({  //连接蓝牙设备

        deviceId: that.btdevshash["deviceId"],

        success: function (res) {

          console.log(res);


          setTimeout(function () {

            wx.notifyBLECharacteristicValueChanged({  //连接后设置监听

              deviceId: that.btdevshash["deviceId"],

              serviceId: "0000180f-0000-1000-8000-00805f9b34fb",

              characteristicId: "00002a19-0000-1000-8000-00805f9b34fb",

              state: true,

              success: function (res) {

                console.log('bind:',res);

              },

              fail: function (res) {

                console.log("bind failed", res)

              }

            })

          }.bind(this), 3000)

        }

     })

  }

},


设置过程中,此Characteristic的属性notify可以修改,并成功修改为true,但是notify功能不工作。


于是增加按钮执行readBLECharacteristicValue做测试,每次点击按钮,可以在onBLECharacteristicValueChange函数中获得最新值(读取后再次读取还是这个值)

代码如下:

bindHelp: function() {

  wx.readBLECharacteristicValue({

    deviceId: this.btdevshash["deviceId"],

    serviceId: "0000180f-0000-1000-8000-00805f9b34fb",

    characteristicId: "00002a19-0000-1000-8000-00805f9b34fb",

    success: function (res) {

      console.log('readBLECharacteristicValue:', res)

    }

  })

},




最后一次编辑于  2017-05-15
回答关注问题邀请回答
收藏

2 个回答

  • 解
    2017-05-03

    characteristic 可以设置notify 属性,notifyBLECharacteristicValueChanged在日志中可以看到执行了success

    2017-05-03
    赞同
    回复
  • 大象
    大象
    2017-05-03

    特征值 notify 是否为 true? 仔细查看文档

    2017-05-03
    赞同
    回复