收藏
回答

蓝牙的writeBLECharacteristicValue接口,写入数据后,怎么用另一个特征监听?

如上图所示,一个服务力获取两个特征,00002761-0000-1000-8000-00805F9B34FB的write属性为true,notify属性为false,00002762-0000-1000-8000-00805F9B34FB的write属性为false,notify属性为true

现在我要用00002761-0000-1000-8000-00805F9B34FB写入信息,然后用00002762-0000-1000-8000-00805F9B34FB监听设备返回的数据。调用writeBLECharacteristicValue接口写数据,成功,返回{errCode: 0,errMsg: "writeBLECharacteristicValue:ok",errno: 0}。之后一直没有监听到返回的数据。这个问题要怎么解决?

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

1 个回答

  • Lipeng
    Lipeng
    2022-11-04

    你是怎么监听的?监听需要两个步骤,先用wx.notifyBLECharacteristicValueChange订阅这个UUID,然后用wx.onBLECharacteristicValueChange设置回调函数,这样返回数据才会触发回调函数。

    如果以上都做了。就检查对端蓝牙设备有没有收到你发的数据,它有没有给你回数据。

    2022-11-04
    有用
    回复 4
    • jxfyys
      jxfyys
      2022-11-04
      在获取到服务特征之后调用notifyBLECharacteristicValueChange,在getBLEDeviceCharacteristics的success方法里调用onBLECharacteristicValueChange。写数据和notify在同一个特征里的时候能收到设备返回的数据,不在同一个特征里的时候写入返回{errCode: 0,errMsg: "writeBLECharacteristicValue:ok",errno: 0},收不到返回数据
      2022-11-04
      回复
    • Lipeng
      Lipeng
      2022-11-07回复jxfyys
      这两个方法调用要在你发送数据之前做好。我看你的代码“发送首包”是在notifyBLE之前做的。
      2022-11-07
      回复
    • jxfyys
      jxfyys
      2022-11-08
      这两个方法调用要在你发送数据之前做好,是这样写吗?还是没有返回结果。
      2022-11-08
      回复
    • Lipeng
      Lipeng
      2022-11-08回复jxfyys
      这三个都是异步方法,你应该确保前两个都回调success后再write
      我们的程序都是在获取特征值后调用nofityBLEChar***Change和onBLEChar***Change
      你没必要等“手表升级返回”后再做呀
      2022-11-08
      回复
登录 后发表内容