很有帮助,谢谢
[建议] ble的api 中建议wx.setBLEMTU 这个API 如果完成可以把真实mtu返回mtu的支持多大,是受到BLE的从机开发人员定义的,一般不改默认是23,有效数据是23-3 =20 个byte 另外一个常用的是247(默认也是23,需要主机连上后去exchange,小程序中用wx.setBLEMTU),247就是ble4.2 phy最大支持的单包长度,这时候有效数据长度是244, 然而在实际的开发中,很多ble从机的固件的开发人员会把mtu定义在这个之间,比如100,或者200之类, 如果我们按照247去wx.setBLEMTU,这时候往往会失败,但是实际上ble的从机是有把其实际的值发过来的,但是当前的wx.setBLEMTU 返回值并拿不到。 当然,我可以通过二分法多次尝试wx.setBLEMTU 终究可以找到一个最大值,,但是这个交互起来似乎实在是太难受,在极限情况下,比如连接间隔在很大时候,这个交互是非常漫长的。 示例代码: exchange_mtu(deviceId){ wx.setBLEMTU({ //deviceId: that.data.connectedDeviceId, deviceId: deviceId, mtu: 247, success: function(res) { console.log(res) console.log("mtu update success"); }, fail :function(res) { console.log(res) console.log("mtu update failed"); }, complete: function(res) { console.log(res) console.log("mtu update complete"); } }) },
2021-07-31