收藏
回答

蓝牙数据发送问题 。wx封装都接口是否可以发送超过20byte都数据?

问题模块
API和组件

据了解  蓝牙数据包最大为20byte

所以我每次调用接口我只发送20byte数据

超过20byte都数据以递归方式调用 wx.writeBleCharacteristicValue().


以超出20byte数据为例

以递归方式发送数据

ios 表现正常


但android在第一次发送成功后,立即递归发送第二个包时发包失败错误码为   “10008”  但是如果递归时加上延迟时间则可以正常发送 。请问这个是什么问题?


另外 wx.writeBleCharacteristicValue传入超过20byte的数据  wx底层是否会做分包处理。   我在上层做分包处理是否无意义?






最后一次编辑于  2017-08-24  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

9 个回答

  • YuePr
    YuePr
    2017-08-24

    安卓的发送buffer数据区,不同的手机系统/机型处理和设计不一致,大多数机型发送的命令是单条命令,等待回执,然后清空。然而这样是有时延的,区别于iOS的系统IO级buffer。因此你想做安卓的发送FIFO是需要在每次发送之后做一定延时...根据我的经验此延时大约80ms+,就能完成你的需求。

    2017-08-24
    赞同
    回复
  • 胖花生
    胖花生
    2017-08-24

    感谢yuepr 。

    对wx 的接口 wx.writeBleCharacteristicValue() 此接口接收的buffer是否有限制?   我现在不知道我是否需要做分包处理,如果底层已经做过来  我在上层在做一次。这就无端端的浪费掉来一些处理时间。

    2017-08-24
    赞同
    回复
  • Vera
    Vera
    2017-08-24

    请教下楼主android连接蓝牙能成功吗?是wx.openBluetoothAdapter=》wx.startBluetoothDevicesDiscovery=》wx.getBluetoothDevices=》wx.createBLEConnection这样调用的吗?我用android手机时wx.createBLEConnection报10003错误死活连不上,wx.createBLEConnection的参数是mac地址吗?还是要转成uuid?求指教,万分感谢

    2017-08-24
    赞同
    回复
  • 胖花生
    胖花生
    2017-08-24

    android蓝牙连接能成功    wx.createBLEConnection的参数是就是你调用wx.getBluetoothDevices返回的对象中deviceid(ios返回的是uuid,android返回的是mac地址)不需要做额外转换,     你的操作流程是正确的。    

    2017-08-24
    赞同
    回复
  • Vera
    Vera
    2017-08-24

    谢谢楼主的回答,但是我用了三台华为跟一台oppo都是在wx.createBLEConnection报这个错误10003错误,请问下楼主的微信版本是6.5.13吗

    2017-08-24
    赞同
    回复
  • 胖花生
    胖花生
    2017-08-24

    我用的是小米 和 华为 并没有发现10003的错误。    手机版本是6.5.10   你确认一下你的执行流程。    是否在连接之前就调用了 wx.closeBluetoothAdapter()。

    2017-08-24
    赞同
    回复
  • Vera
    Vera
    2017-08-24

    谢谢楼主的提醒,但是我仔细检查了,确实没有在连接之前调用close呢,楼主方便提供个威信吗,给你开通开发体验者,帮我看看吗?



    2017-08-24
    赞同
    回复
  • 胖花生
    胖花生
    2017-08-25

    你说你的微信号吧 我加你。

    2017-08-25
    赞同
    回复
  • Vera
    Vera
    2017-08-25

    sophiavivy,谢谢楼主

    2017-08-25
    赞同
    回复