收藏
回答

wx.onBLECharacteristicValueChange 无响应?

代码如下:

在connect函数中调用getBleDeviceMsg写数据后应该要接受设备回复的,可始终都没有回复。


searchBle(){
    var pg = this;
    this.resetStatus();
    wx.openBluetoothAdapter({
      success:function(res){
        console.log('初始化蓝牙成功:',res);
        pg.startDiscovery();
      },
      fail:function(res){
        console.log('初始化蓝牙失败:', res);
        pg.setData({
          bSearchError:true,
          errMsg:'蓝牙设备初始化错误'
        })
      }
    });
  },
  
  startDiscovery(){
    var pg = this;
    wx.startBluetoothDevicesDiscovery({
      success:function(res){
        console.log('start discovery success:',res);
        wx.onBluetoothDeviceFound(function(res){
          console.log('found new devices');
          for(var i=0; i<res.devices.length; i++){
            console.log(res.devices[i]);
            console.log(res.devices[i].advertisServiceUUIDs);
            console.log(res.devices[i].serviceData);
          }
          wx.stopBluetoothDevicesDiscovery({
            fail:function(res){
              console.log('stopBluetoothDevicesDiscovery error:',res);
            }
          });
          var a = new Uint8Array(res.devices[0].advertisData);
          console.log(a)
          if(a[2] == 128){
            pg.data.isBind = true;
            console.log('already binded');
          }
          pg.setData({
            deviceFound:res.devices[0],
            bSearchOne:true,


          });
          wx.onBLEConnectionStateChange(function(res){
            pg.setData({
              bConnected:res.connected
            });
            console.log('connection state change to:',res.connected);
          });
        });
        
      },
      fail:function(res){
        console.log('start discovery fail:', res);
      },
      services:['0000A201-0000-1000-8000-00805F9B34FB']
    });
    this.setData({
      bSearching:true
    });
  },
  
  connectBle(){
    var that = this;
    this.data.deviceFound.deviceUUID = "bc83912be7b75198";//假设我已经算出来了
    this.data.key4 = this.genKey4()
    wx.createBLEConnection({
      deviceId:that.data.deviceFound.deviceId,
      success(res){
        console.log('连接成功');
        that.setData({
          bConnected:true
        });
        setTimeout(() => {
        wx.getBLEDeviceServices({
          deviceId: that.data.deviceFound.deviceId,
          success:function(res){
            
            for(var i=0; i<res.services.length; i++){
              console.log('service:',res.services[i])
              if (res.services[i].uuid.indexOf("1910") >= 0) {
                that.data.serviceId = res.services[i].uuid;
                wx.getBLEDeviceCharacteristics({
                  deviceId: that.data.deviceFound.deviceId,
                  serviceId: res.services[i].uuid,
                  success:function(res){
                    console.log('特征值:',res);
                    that.data.writeCharacteristicId = res.characteristics[0].uuid;
                    that.data.notifyCharacteristicId = res.characteristics[1].uuid;
                    wx.notifyBLECharacteristicValueChange({
                      deviceId: that.data.deviceFound.deviceId,
                      serviceId: that.data.serviceId,
                      characteristicId: that.data.notifyCharacteristicId,
                      state:true,
                      //type:'notification',
                      success:function(res){
                        console.log('notify set success');
                        //that.readBle();
                        wx.onBLECharacteristicValueChange((characteristics) => {
                          console.log("监听到特征值更新:")
                        });
                        that.getBleDeviceMsg();
                      },
                      failfunction(res){
                        console.log('notify failed : ',res)
                      }
                    });
                    
                  },
                  fail:function(res){
                    console.log('getBLEDeviceCharacteristics error:',res)
                  }
                });
              }
            }
            
          },
          fail:function(res){
            console.log('get bledeviceservices error:',res);
          }
        })
      },1000);
      },
      fail(res){
        console.log('连接失败');
      }
    });
  },


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

1 个回答

登录 后发表内容