收藏
回答

wx.writeBLECharacteristicValue iOS 发送成功,但数据没有收完整呢?

手机:iPhone 11Pro

小程序开发工具版本:1.05.2111300

接收设备:单片机

现象:

wx.writeBLECharacteristicValue 发送一个比较大的数据,均返回OK

但接收设备只收到只是部分数据,某些情况却是完整的:

接收尺寸 发送尺寸

34799 362474

9900 75431

34555 34555【完整】


我感觉稍微小的文件发送没问题,超过一个阈值,小程序会只发送一个很小的百分比。

我猜这个值可能是65535。难道是蓝牙底层限制的?那应该发送前就可以判断吧?不用给我返回成功啊!

而且不符合wx.writeBLECharacteristicValue文档的描述,文档说,iOS发送太长数据,可能会无响应,但是我是有响应,告诉我成功了,实际却没发完整。浏览了很多历史问题,没有我这种情况,故提此新帖。


下面是日志,白底是小程序控制台(buff length比byteLength多5个字节是加了协议头),黑底是设备的BLE日志(含每个包的尺寸和偏移及总长度)

ble write done 后面的0是errCode,再后是errMsg


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

1 个回答

  • Riven.
    Riven.
    2022-01-09

    你好,麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    2022-01-09
    有用
    回复 3
    • fyter
      fyter
      2022-01-09
      辛苦了,周日还上班,看来腾讯真是997啊……😄
      机型在问题中已提供。代码很简单,打开图片文件,BLE发送
      2022-01-09
      回复
    • Riven.
      Riven.
      2022-01-10回复fyter
      这个发送的数据太大了,最好是使用wx.getBLEMTU接口提前获取单次写入最大值,超过该值则无法保证写入成功,表现因蓝牙硬件而异,小程序蓝牙接口基本是透传系统接口,写入这里没有做额外逻辑
      2022-01-10
      回复
    • fyter
      fyter
      2022-01-10回复Riven.
      不超过65535目前没问题,BLE协议会自动切割到MTU尺寸分段发送。
      关键是误导,根本没发送完,就提示成功,太坑!
      2022-01-10
      回复
登录 后发表内容