收藏
回答

【蓝牙】部分机型稳定复现崩溃闪退问题

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug 蓝牙 客户端 6.7.2 2.3.2

- 当前 Bug 的表现(可附上截图)

循环调用 wx.writeBLECharacteristicValue 写入数据会导致整个app崩溃闪退,查不到任何日志log

- 预期表现

由于业务的需求,需要将大批量数据(40000+ byte)在 100s 内写入BLE 设备

- 复现路径


- 提供一个最简复现 Demo

for (let i = 0;i < 2000; ++i) {

    wx.writeBLECharacteristicValue({

        deviceId: xxxxx,

        serviceId: xxxxx,

        characteristicId: xxxxx,

        value: buffer

    })

}


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

4 个回答

  • 是柿子啊
    是柿子啊
    2018-11-16

    提供一下出现问题的机型和微信版本,以及能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2018-11-16
    赞同
    回复 1
    • 木了@一亮
      木了@一亮
      2018-12-03

      请问现在有没有解决方案了?一直关注这个问题中ing......

      2018-12-03
      回复
  • 黄飞
    黄飞
    01-25

    已解决,注意 Uint8Array 和 buffer的转换

    01-25
    赞同
    回复
  • 昕宇
    昕宇
    2018-12-04

    你这样必然崩溃,写太快了,了解下蓝牙interval和 MTU

    2018-12-04
    赞同
    回复 16
    • 木了@一亮
      木了@一亮
      2018-12-05

      写那里加延时也一样崩溃哦,您有什么好的方式可供参考吗?

      2018-12-05
      回复
    • 昕宇
      昕宇
      01-07回复木了@一亮

      好久没上来了,你用setinterval解决啊,全局变量设几个,把要发送的buff,发送计数cnt,发送包大小设好,interval自己设就好了;还有一种是回调发送,在success里调用发送,如果这个特征值属性是write with response,建议用回调,这样速度快,否则使用interval

      01-07
      1
      回复
    • 木了@一亮
      木了@一亮
      01-11回复昕宇

      非常感谢您!

      按照您说的,我再尝试一下,不知道您是否有试过成功发送这么大量的数据呢?如果有相关demo参考就更加不胜感激了。

      PS:我的应用场景是通过微信小程序的BLE更新我们自己外部设备的Firmware。

      01-11
      回复
    • 昕宇
      昕宇
      01-11回复木了@一亮

      这简单,就是你设个sendcnt记录发送位置,每包大小packagesize,每次写一包数据,在success回调里面调用发送函数就好,我现在刚好也在做BLE的OTA,你升级的是蓝牙芯片的固件还是用蓝牙升级产品固件?

      01-11
      回复
    • 昕宇
      昕宇
      01-11回复木了@一亮

       还有你需要做机型适配,包大小并不是随便设置的

      01-11
      1
      回复
    查看更多(11)
  • 木了@一亮
    木了@一亮
    2018-11-22

    我也遇到了,ios手机闪退,而且我的167K数据,,时间没有一定要求100S内,苹果手机几乎每次都会闪退,闪退时发送了的数据量随机,绝大多数会超过(40000+ byte)。


    安卓手机发了两包(512 byteX2包)数据直接就不发了

    2018-11-22
    赞同
    回复