- 当前 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
})
}
已解决,注意 Uint8Array 和 buffer的转换
你这样必然崩溃,写太快了,了解下蓝牙interval和 MTU
写那里加延时也一样崩溃哦,您有什么好的方式可供参考吗?
好久没上来了,你用setinterval解决啊,全局变量设几个,把要发送的buff,发送计数cnt,发送包大小设好,interval自己设就好了;还有一种是回调发送,在success里调用发送,如果这个特征值属性是write with response,建议用回调,这样速度快,否则使用interval
非常感谢您!
按照您说的,我再尝试一下,不知道您是否有试过成功发送这么大量的数据呢?如果有相关demo参考就更加不胜感激了。
PS:我的应用场景是通过微信小程序的BLE更新我们自己外部设备的Firmware。
这简单,就是你设个sendcnt记录发送位置,每包大小packagesize,每次写一包数据,在success回调里面调用发送函数就好,我现在刚好也在做BLE的OTA,你升级的是蓝牙芯片的固件还是用蓝牙升级产品固件?
还有你需要做机型适配,包大小并不是随便设置的
我也遇到了,ios手机闪退,而且我的167K数据,,时间没有一定要求100S内,苹果手机几乎每次都会闪退,闪退时发送了的数据量随机,绝大多数会超过(40000+ byte)。
安卓手机发了两包(512 byteX2包)数据直接就不发了
提供一下出现问题的机型和微信版本,以及能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。
请问现在有没有解决方案了?一直关注这个问题中ing......