- 当前 Bug 的表现
对蓝牙设备进行扫描连接和写操作,使用wx.writeBLECharacteristicValue(buffer) 写入的指令不超过20字节时,写入返回ok,能正常接收notify设备返回的值;
但是当写入的指令超过20字节时,写入指令能成功返回ok,但是不能接收设备返回的值,估计是设备没有接收完整的指令,把指令当做错误的指令了;
经查看小程序官方api文档,发现小程序不支持MTU,唯有自己做分包发送,由于本人对蓝牙也是半知半解,所以还要请教各位关于分包发送的步骤,还有就是是不是需要硬件开发那边配合,谢谢各位大神哈
这方面也不算太了解,但是20字节是标准包,我们这边用的处理方案是发送的指令首尾字符是标志位,当收到的指令标志位不符合时,放入队列中,等待下一个指令到达后,拼接后做统一的标志位识别处理。肯定收发要约定好规则
小程序的不知道。
1、android/ios 是判断写入的字节长度,≤20个字节,直接写入。
2、大于20个字节的,先写入前20个字节,再对剩下的进行长度判断,≤20个字节,直接写入,
大于20个字节,重复1、2两步。
你能分享一下你的源码demo吗?
我过段时间整理下,再分享出来,我写了个蓝牙调试工具
我也公司业务需要,现在在弄微信小程序的蓝牙+外设。现在扫描、连接都完成了,但是读写这里还不行,android notify时有用到这个00002902-0000-1000-8000-00805F9B34FB:
BluetoothGattDescriptor descriptor =00002902-0000-1000-8000-00805F9B34FB
mBluetoothGatt.writeDescriptor(descriptor);
不知道小程序这里是不是也要呢?
小程序也一样;你结合官方demo: wechatide://minicode/OF4Y9Gme6rZ4 来做好理解一点
跟android还是有些不一样的地方的,已经全部实现所要的功能
真棒,Android手机的我测试都没问题了;那ios设备的你也实现了吗
BLE的 单帧 标准就是20字节, 如果超过 需要自己分包。
否则发送要不会截断, 要不就会报错。。
急呀,跪求分包发送教程