蓝牙数据发送问题 。wx封装都接口是否可以发送超过20byte都数据?
发布于 6 年前 作者 taohuang 14256 次浏览 来自 问答

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

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

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

以超出20byte数据为例

以递归方式发送数据

ios 表现正常

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

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


9 回复

感谢yuepr 。

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

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

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

sophiavivy,谢谢楼主

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

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

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

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

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

回到顶部