收藏
回答

小程序蓝牙写入操作问题

问题模块 框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
客户端 小程序 Bug Android Android6.0.1 小米note 6.7.2

- 当前 Bug 的表现

    对蓝牙设备进行扫描连接和写操作,使用wx.writeBLECharacteristicValue(buffer) 写入的指令不超过20字节时,写入返回ok,能正常接收notify设备返回的值;

但是当写入的指令超过20字节时,写入指令能成功返回ok,但是不能接收设备返回的值,估计是设备没有接收完整的指令,把指令当做错误的指令了;


    经查看小程序官方api文档,发现小程序不支持MTU,唯有自己做分包发送,由于本人对蓝牙也是半知半解,所以还要请教各位关于分包发送的步骤,还有就是是不是需要硬件开发那边配合,谢谢各位大神哈


邀请回答
复制链接收藏投诉关注问题回答

4 个回答

  • 无言
    无言
    2018-08-30

    这方面也不算太了解,但是20字节是标准包,我们这边用的处理方案是发送的指令首尾字符是标志位,当收到的指令标志位不符合时,放入队列中,等待下一个指令到达后,拼接后做统一的标志位识别处理。肯定收发要约定好规则

    2018-08-30
    赞同 2
    回复
  • 木了@一亮
    木了@一亮
    2018-08-31

    小程序的不知道。

    1、android/ios 是判断写入的字节长度,≤20个字节,直接写入。

    2、大于20个字节的,先写入前20个字节,再对剩下的进行长度判断,≤20个字节,直接写入,

    大于20个字节,重复1、2两步。


    你能分享一下你的源码demo吗?


    2018-08-31
    赞同 1
    回复 7
    • ChessLuo
      ChessLuo
      2018-08-31

      我过段时间整理下,再分享出来,我写了个蓝牙调试工具

      2018-08-31
      回复
    • 木了@一亮
      木了@一亮
      2018-08-31回复ChessLuo

      我也公司业务需要,现在在弄微信小程序的蓝牙+外设。现在扫描、连接都完成了,但是读写这里还不行,android notify时有用到这个00002902-0000-1000-8000-00805F9B34FB

              BluetoothGattDescriptor descriptor =00002902-0000-1000-8000-00805F9B34FB

              mBluetoothGatt.writeDescriptor(descriptor);

      不知道小程序这里是不是也要呢?


      2018-08-31
      回复
    • ChessLuo
      ChessLuo
      2018-08-31回复木了@一亮

      小程序也一样;你结合官方demo: wechatide://minicode/OF4Y9Gme6rZ4 来做好理解一点


      2018-08-31
      回复
    • 木了@一亮
      木了@一亮
      2018-09-13回复ChessLuo

      跟android还是有些不一样的地方的,已经全部实现所要的功能

      2018-09-13
      1
      回复
    • ChessLuo
      ChessLuo
      2018-09-13回复木了@一亮

      真棒,Android手机的我测试都没问题了;那ios设备的你也实现了吗

      2018-09-13
      回复
    查看更多(2)
  • ChessLuo
    ChessLuo
    2018-08-30

    急呀,跪求分包发送教程

    2018-08-30
    赞同
    回复
  • Aleda
    Aleda
    2018-08-30

    BLE的 单帧 标准就是20字节, 如果超过 需要自己分包。

    否则发送要不会截断, 要不就会报错。。

    2018-08-30
    赞同
    回复