微信小程序的setBLEMTU说明

最近在做微信小程序的蓝牙功能,连接的设备是MPOS,但是收发数据发现,如果手机端接收的数据超过20byte就无法有效收到。

查询了很多资料,也尝试了抓报蓝牙的btsnoop_hci.log来进行分析,发现并没有收到notify的数据,说明手机端没有收到。

网上大多数的结论是:BLE做了收发的data最大数据限制,单个数据包的默认系统最大长度是23byte(字节),超过了就会出问题【20byte的Data数据 + 3byte的蓝牙 Header】。之前微信也没有做相关的处理,其实Android本身如果做BLE连接的话是可以修改单个数据包的最大长度值的,也就是MTU值。

这个问题在IOS上是不存在的。

有两种解决办法:

1.蓝牙模块的BLE底层修改,厂商更改发包逻辑,每次最大发包的长度不超过23byte就行。【这种情况一般比较难】

2.微信在2.11.0的lib库支持了修改BLEMTU值来更改系统的默认值,代码如下:

const mtu = 512;
    wx.setBLEMTU({
      deviceId: that.data.deviceId,
      mtu,
      success:(res)=>{
        console.log("setBLEMTU success>>", res)
      },
      fail:(res)=>{
        console.log("setBLEMTU fail>>", res)
      }
    }),

支持设置的范围是(20,512);

调试发现,我的小米9手机如果设置超过180byte就会报错,

但是失败了貌似还是有效,初步判断如果设置超过了系统的最大值,默认使用系统支持的最大值?这个无法判断,但是确认更改有效,即使设置显示失败。后续多测试几种类型的android手机再做结论。

设置了该值之后,就可以正常收发了。我的蓝牙设备单个包最大数据长度为129byte,超过了就会分包,所以在实际开发的过程中,只要满足自己蓝牙设备发送单个包的最大长度就可以实现接收数据了。

发送分包类似,对于太大的数据,最好做分包发送。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
微信小程序使用说明书模板可以按照以下格式进行编写: [标题] 微信小程序使用说明书 [目录] 1. 简介 2. 下载与安装 3. 登录与注册 4. 功能介绍 4.1 主界面 4.2 搜索功能 4.3 用户中心 5. 常见问题解答 6. 联系我们 [1. 简介] 在这一部分,可以对微信小程序进行简单介绍,包括它的作用、适用范围以及特点等。 [2. 下载与安装] 在这一部分,可以提供微信小程序的下载方式和安装步骤,可以包括扫描二维码、搜索小程序名称、从应用商店下载等。 [3. 登录与注册] 在这一部分,可以介绍如何进行微信小程序的登录和注册操作,包括使用微信账号登录、手机号登录、第三方登录等。 [4. 功能介绍] 在这一部分,可以详细介绍微信小程序的各项功能,可以按照模块进行划分,并逐一介绍每个功能的使用方法和操作步骤。 [4.1 主界面] 在这一部分,可以介绍微信小程序的主界面布局和各个模块的功能入口,让用户了解如何快速找到需要的功能。 [4.2 搜索功能] 在这一部分,可以介绍微信小程序的搜索功能,包括关键词搜索、筛选和排序等操作方法,让用户能够快速找到相关内容。 [4.3 用户中心] 在这一部分,可以介绍微信小程序的用户中心功能,包括个人信息管理、订单管理、收藏夹等模块的使用方法。 [5. 常见问题解答] 在这一部分,可以列举一些用户常见的问题,并给出解答,帮助用户快速解决问题。 [6. 联系我们] 在这一部分,可以提供微信小程序开发方或运营方的联系方式,例如客服电话、邮箱等,方便用户反馈问题或咨询。 以上是一个简单的微信小程序使用说明书模板,你可以根据实际情况进行修改和补充。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值