收藏
回答

wx.setBLEMTU设置的mtu超过设备端的mtu后,会直接报错

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.setBLEMTU 微信安卓客户端 7.0.16.1700 2.11.3

https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.setBLEMTU.html

手机型号是华为Mate 30 Pro 5G,

设置蓝牙连接MTU的功能在安卓SDK中叫做 "交换MTU",就是手机跟设备进行MTU的交换,取两者的最小值返回。

MTU使用的时候,一般都是设置一个最大的MTU值比如512。在MTU交换成功后,我就能得到设备端支持的MTU。在后续的传输中,单次传输限制在MTU字节内。

而微信的wx.setMTU功能,当设置值超过设备支持的MTU大小时,会直接返回-1错误,没办法拿到设备的MTU,而设置值小于等于设备MTU时,只返回成功。结果中也没有当前的MTU值。

经过验证,当设置值比设备支持的MTU大1的时候就失败了,等于和小于都能成功。

这个问题可能是接口设计的问题,目前需要用到此功能提升蓝牙传输速率,希望能更新和解决!

最后一次编辑于  2020-07-01
回答关注问题邀请回答
收藏

2 个回答

  • Nextfugitivedust
    Nextfugitivedust
    2020-10-29

    确实设置大于蓝牙设备的MTU 会返回-1错误。

    android 端程序设置MTU的流程,设置512,返回协商后的261.但是小程序端设置512返回-1错误,从android 端拿到261设置就成功了。但是这样也局限了MTU的设置,多款蓝牙设备,希望动态设置的。目前只能先固定261这个数字了。

    2020-10-29
    有用
    回复
  • 疯狂的小辣椒
    疯狂的小辣椒
    2020-07-01

    请具体描述问题出现的流程,并提供能复现问题的简单代码片段https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    2020-07-01
    有用
    回复
登录 后发表内容
问题标签