据了解 蓝牙数据包最大为20byte
所以我每次调用接口我只发送20byte数据
超过20byte都数据以递归方式调用 wx.writeBleCharacteristicValue().
以超出20byte数据为例
以递归方式发送数据
ios 表现正常
但android在第一次发送成功后,立即递归发送第二个包时发包失败错误码为 “10008” 但是如果递归时加上延迟时间则可以正常发送 。请问这个是什么问题?
另外 wx.writeBleCharacteristicValue传入超过20byte的数据 wx底层是否会做分包处理。 我在上层做分包处理是否无意义?
sophiavivy,谢谢楼主
你说你的微信号吧 我加你。
谢谢楼主的提醒,但是我仔细检查了,确实没有在连接之前调用close呢,楼主方便提供个威信吗,给你开通开发体验者,帮我看看吗?
我用的是小米 和 华为 并没有发现10003的错误。 手机版本是6.5.10 你确认一下你的执行流程。 是否在连接之前就调用了 wx.closeBluetoothAdapter()。
谢谢楼主的回答,但是我用了三台华为跟一台oppo都是在wx.createBLEConnection报这个错误10003错误,请问下楼主的微信版本是6.5.13吗
android蓝牙连接能成功 wx.createBLEConnection的参数是就是你调用wx.getBluetoothDevices返回的对象中deviceid(ios返回的是uuid,android返回的是mac地址)不需要做额外转换, 你的操作流程是正确的。
请教下楼主android连接蓝牙能成功吗?是wx.openBluetoothAdapter=》wx.startBluetoothDevicesDiscovery=》wx.getBluetoothDevices=》wx.createBLEConnection这样调用的吗?我用android手机时wx.createBLEConnection报10003错误死活连不上,wx.createBLEConnection的参数是mac地址吗?还是要转成uuid?求指教,万分感谢
感谢yuepr 。
对wx 的接口 wx.writeBleCharacteristicValue() 此接口接收的buffer是否有限制? 我现在不知道我是否需要做分包处理,如果底层已经做过来 我在上层在做一次。这就无端端的浪费掉来一些处理时间。
安卓的发送buffer数据区,不同的手机系统/机型处理和设计不一致,大多数机型发送的命令是单条命令,等待回执,然后清空。然而这样是有时延的,区别于iOS的系统IO级buffer。因此你想做安卓的发送FIFO是需要在每次发送之后做一定延时...根据我的经验此延时大约80ms+,就能完成你的需求。