收藏
回答

蓝牙设备写入得不到正确反馈数据?

蓝牙设备接收数据可以,现在要加写入的功能。

多组可用的serviceId+uuid值写入回调正常writeBLECharacteristicValue:ok,但在onBLECharacteristicValueChange得不到正确的反馈数据(安卓和IOS都是如此)

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

2 个回答

  • 敏
    2020-04-17

    可以接收蓝牙设备的数据,但写入得不到对应的反馈数据 相关代码片段如下(字节数不超过20,也有延时处理)

    MG4J2CH/A 苹果6  8.3     微信版本6.7.4

    华为畅享8        安卓8.0.0  微信版本7.0.13

     //取蓝牙服务特征值
      getBLEDeviceCharacteristics(deviceId, serviceId) {
          wx.getBLEDeviceCharacteristics({
              deviceId,
              serviceId,
              success: (res) => {
                  console.log("getBLEDeviceCharacteristics");
                  console.log(res);
                  for (let i = 0; i < res.characteristics.length; i++) {
                      let item = res.characteristics[i]
                      console.log(item);
                      if (item.properties.notify || item.properties.indicate) {
                          wx.notifyBLECharacteristicValueChange({
                              deviceId,
                              serviceId,
                              characteristicId: item.uuid,
                              state: true,
                              success: function (res) {
                                  console.log("notifyBLECharacteristicValueChange");
                                  console.log(res);
                              }
                          });
                      }
                      if (item.properties.write) {
    
                          let uuid = item.uuid;
                          if(arr_info[serviceId])
                          {
                              arr_info[serviceId].push(uuid);
                          }else{
                              arr_info[serviceId] = [uuid];
                          }
    
                          this.writeBLECharacteristicValue(deviceId, serviceId, uuid);
                      }
                  }
              },
              fail(res) {
                  console.error('getBLEDeviceCharacteristics', res)
              }
          })
        // 操作之前先监听,保证第一时间获取数据
      wx.onBLECharacteristicValueChange((characteristic) => {
          console.log("onBLECharacteristicValueChange");
          console.log(characteristic);
          let value = new Uint8Array(characteristic.value);
          getUint8Value(characteristic.value, function (res) {
              console.log(res);
          });
      })
      },
        
        //写入一个特征值 预期在onBLECharacteristicValueChange拿到蓝牙设备传输过来的反馈数据
        writeBLECharacteristicValue(deviceId, serviceId, characteristicId) {
        let buffer = new ArrayBuffer(6);
        let dataView = new DataView(buffer);
        //判断是否开启鉴权的命令  
        dataView.setUint8(0, 0xa5); //头部
        dataView.setUint8(1, 0x01); //
        dataView.setUint8(2, 0x04); //命令字
        dataView.setUint8(4, 0x00); //流水号
        dataView.setUint8(3, 0x23); 
        dataView.setUint8(5, 0x57); //校验
        setTimeout(()=>{
            console.log(arr_info); //{"serviceId1": [uuid1, uuid2], "serviceId2": [uuid1, uuid2] }
            console.log(Object.keys(arr_info));
            let keys = Object.keys(arr_info);
            wx.writeBLECharacteristicValue({
                deviceId: deviceId,
                serviceId: keys[1], //serviceId,
                characteristicId:   arr_info[keys[1]][0],//characteristicId,
                value: buffer,
                success(res){
                    console.log('writeBLECharacteristicValue success', res)
                },
                fail(err){
                    console.log('writeBLECharacteristicValue fail', err)
                }
            })
        }, 5000);
    
    
    2020-04-17
    有用
    回复 2
    • 疯狂的小辣椒
      疯狂的小辣椒
      2020-04-22
      代码片段按照上面的链接来提供,另外,麻烦再重现一次,在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,提供一下微信号,复现问题的详细时间点(如:2020-4-10 10:10)
      2020-04-22
      回复
    • 敏
      2020-04-22回复疯狂的小辣椒
      已经解决了,特征值和serviceId要转成小写。等你们解决问题,花都谢了。
      2020-04-22
      回复
  • 疯狂的小辣椒
    疯狂的小辣椒
    2020-04-17

    你好,麻烦具体描述问题流程,提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    2020-04-17
    有用
    回复
登录 后发表内容
问题标签