微信小程序 BLE 蓝牙数据包粘包
💡
原文中文,约1000字,阅读约需3分钟。
📝
内容提要
Android 手机微信小程序中收到的 BLE 蓝牙数据包出现粘包现象,单个包以 ab 开始,ba 结束,长度均为 20 个字节,02 包对应的长度为 8 个字节,可能是指令收发过快引起的,解决方案有限制 BLE 蓝牙设备的发送频率、每个包固定大小为 20 字节、自定义协议上设置一个结束位等。
🎯
关键要点
- Android 手机微信小程序中收到的 BLE 蓝牙数据包出现粘包现象。
- 粘包的数据包以 ab 开始,ba 结束,长度均为 20 个字节。
- 02 包对应的长度为 8 个字节,猜测是指令收发过快引起的。
- 校验失败的数据包和校验成功的数据包长度不同,成功的包长度为 11 个字节。
- 根本原因是指令收发过快,导致蓝牙粘包问题。
- 常用的解决方案包括限制 BLE 蓝牙设备的发送频率和固定包大小为 20 字节。
- 自定义协议上设置一个结束位,用于分割数据包。
- 微信小程序中 MTU 为 ATT_MTU,实际可传输的数据长度为 ATT_MTU - 3。
- 安卓系统中 MTU 会在系统协商成功后发生改变,建议使用 wx.onBLEMTUChange 监听。
➡️