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: 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");
}
})
},
太奈斯了,超级感谢
很有帮助,谢谢