zbcb 发表于 2024-12-5 14:32:53

E4A自带BLE蓝牙类库组件修复,解决多个bug,唯一解决。

本帖最后由 zbcb 于 2024-12-5 18:01 编辑

首先说一下E4A自带的BLE低功耗蓝牙类库有哪些问题:一、不支持设置MTU值
一般低功耗蓝牙使用在单片机与APP通信比较多,比如我自己做的项目就使用了ESP32单片机,E4A编写APP来和单片机进行通信控制,数据互传。E4A自带的BLE蓝牙类库是不支持设置MTU值,默认是23个字节,要就是设备通信的时候,数据长度超过23个字节(实际上只能大概20个字节左右),就会出现截断。而这种情况出现在设备给APP上报数据的时候,APP给设备发送数据可以发送任意长度的数据,但是如果设备回复APP数据,长度超过23个字节就出问题,出现截断的情况。这种情况下只能设置MTU值,现在的蓝牙协议一般都支持517个字节的最大长度了,完全足够用。
二、蓝牙经常性断开连接(非常致命的问题)
APP与设备连接成功之后,蓝牙会莫名其妙的断开连接,这个问题我找到了很久,E4A蓝牙类库订阅通知权限的时候,对于所有的UUID都强制开启了通知权限,java代码里面使用一个for循环来遍历开启订阅通知权限的。这个是不行的,设备有些UUID不支持通知权限,而APP强制开启通知权限的后果就会导致上述的情况。因此只能打开特定支持通知权限的UUID才可以。
三、设置MTU不成功、不立刻生效的问题
这个问题是我修复类库之后遇到的问题,增加了设置MTU函数,设置成功之后立刻搜索服务。后面发现MTU设置并没有成功。查了资料,才发现不同手机设置MTU的情况不同,有些手机设置MTU立刻就生效,而有些手机设置了MTU值,需要等待一段时间,才会生效。可能是蓝牙协议栈的问题,因此在请求设置MTU值的时候应该增加有MTU设置超时时间,请求设置MTU值之后,需要等待时间,时间到了无论是设置成功与否,都开始下一步搜索设备的通信服务。
四、通信速度较慢
上述的问题都一一解决了之后,设备连接也成功了,数据传输也稳定了,但是速度总感觉慢半拍,毫秒级的,大概3ms内。看了代码E4A类库使用的默认传输速率应该是:BluetoothGatt.CONNECTION_PRIORITY_LOW_POWER(低功耗模式),这个模式下速度有所折扣,增加了一个设置速率的函数,设置成BluetoothGatt.CONNECTION_PRIORITY_HIGH (高优先级模式),速度慢拍的问题终于得到解决了。
E4A的低功耗蓝牙库大体就以上几个大问题(小问题省略),大问题都比较致命,用于实际的生产环境,问题会频繁出现。

类库命令截图:
https://www.mainurl.cn/png/100.png
    修复了上述的全部问题,已经使用在实际的生产环境中,没有发现任何问题。增加了设置MTU值函数、MTU设置回调函数、搜索GATT服务函数、强制开启通知权限函数、修复蓝牙连接异常断开的问题、支持设置蓝牙通信速率......
下面是我实际用于产品的APP截图,一款蓝牙耳机的APP,一款抖音弹幕娱乐设备APP,这两个APP都是我基于E4A开发的,蓝牙类库稳定连接。{:4_93:}
https://www.mainurl.cn/png/101.jpghttps://www.mainurl.cn/png/102.jpg
类库花了比较长的时间修改的,不免费,需要的联系我QQ3497893153,备注E4A蓝牙类库,注意这是低功耗蓝牙,不是经典蓝牙。E4A基本没看见什么人修复这个类库的,可能是开发需求不同。



yuzhiming 发表于 2024-12-5 15:05:39

双击6666。

qq8945051q 发表于 2024-12-5 18:20:01

首先支持你的修复但是呢    不多说希望你能卖到钱

zbcb 发表于 2024-12-5 18:24:45

qq8945051q 发表于 2024-12-5 18:20
首先支持你的修复但是呢    不多说希望你能卖到钱

{:4_108:}5块都没人买

dzf2001 发表于 2024-12-9 08:54:29

zbcb 发表于 2024-12-5 18:24
5块都没人买

5块不是原因,主要是没需求

wangpython 发表于 2024-12-10 12:17:04

在哪买?我要

zbcb 发表于 2024-12-10 13:41:23

wangpython 发表于 2024-12-10 12:17
在哪买?我要

QQ3497893153

zbcb 发表于 2024-12-16 18:48:40

dzf2001 发表于 2024-12-9 08:54
5块不是原因,主要是没需求

随缘 发表于 2024-12-18 07:41:01

E4A自带BLE蓝牙类库组件修复,解决多个bug,唯一解决。

donald 发表于 2024-12-25 10:21:02

易如意中文编程学习交流论坛有你更精彩~
页: [1] 2
查看完整版本: E4A自带BLE蓝牙类库组件修复,解决多个bug,唯一解决。