收藏
回答

部分安卓 writeBLECharacteristicValue发生1008错误

问题模块
API和组件


部分安卓机型执行 writeBLECharacteristicValue 发生 1008 错误,如小米5,尝试过忽略这个错误,但蓝牙没有接受到信息

下面是写入的代码,做了3秒的等待,但 onBLECharacteristicValueChange 没有接受到返回。只有部分安卓机型会这样


  wx.writeBLECharacteristicValue({

    // 这里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取 

    deviceId: app.bleOptions.targetDevice.deviceId,

    // 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取 

    serviceId: serUuid,

    // 这里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中获取 

    characteristicId: cmdUuid,

    // 这里的value是ArrayBuffer类型 

    value: buffer,

    success: function (res) {

      console.log('写入特征信息成功', res.errMsg);

    },

    fail: function (res) {

      console.log('写入特征信息失败', JSON.stringify(res));

      if (app.bleOptions.scanLogCallBack) {

        app.bleOptions.scanLogCallBack(null, JSON.stringify(res));

      }

    },

    complete: function () {

      //等待响应

      sendCommandCallBackHandle = setTimeout(function () {

        if (failHandle) {

          failHandle();

        }

      }, 3000);

    }

  })


最后一次编辑于  2017-10-25  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

5 个回答

  • 王翊夫if
    王翊夫if
    2017-10-25

    你可以试试在notify成功后延迟几百毫秒调用write,目前发现部分安卓系统在notify调用后立刻调用write会发生系统错误。

    2017-10-25
    赞同
    回复
  • 王翊夫if
    王翊夫if
    2017-10-25

    你好,请问在什么时机下调用 wx.writeBLECharacteristicValue

    2017-10-25
    赞同
    回复
  • Exception
    Exception
    2017-11-14

    @王翊夫if

    如果是notify就报错10008,该如何解决呢

    2017-11-14
    赞同
    回复
  • 黎永锋
    黎永锋
    2017-10-25

    好的,我试试

    2017-10-25
    赞同
    回复
  • 黎永锋
    黎永锋
    2017-10-25

    现在是再连接蓝牙成功后,注册监听事件后,进行握手连接,代码如下:


    //注册监听事件

              wx.notifyBLECharacteristicValueChange({

                state: true, // 启用 notify 功能 

                // 这里的 deviceId 需要在上面的 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取 

                deviceId: app.bleOptions.targetDevice.deviceId,

                // 这里的 serviceId 需要在上面的 getBLEDeviceServices 接口中获取 

                serviceId: serUuid,

                // 这里的 characteristicId 需要在上面的 getBLEDeviceCharacteristics 接口中获取 

                characteristicId: cmdUuid,

                success: function (res) {

                  console.log('notifyBLECharacteristicValueChange success', res.errMsg);

                  handShake();//《------------------在这里

                },


    2017-10-25
    赞同
    回复