切换风格

默认Lavender Sky Flowers Wizard Snow Beige California City Dragon Black London Sunset glow Pink Cloud
12下一页

51

主题

2237

积分

0

精华

用户组 

易积分
720
热心
0
好评
1
QQ
E4A自带BLE蓝牙类库组件修复,解决多个bug,唯一解决。[复制链接]
发表于 2024-12-5 14:32:53 | 显示全部楼层 |阅读模式
本帖最后由 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的低功耗蓝牙库大体就以上几个大问题(小问题省略),大问题都比较致命,用于实际的生产环境,问题会频繁出现。

  类库命令截图:

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



易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

2

主题

22

积分

0

精华

用户组 

易积分
16
热心
0
好评
0
发表于 2024-12-5 15:05:39 来自手机 | 显示全部楼层
双击6666。
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

17

主题

1780

积分

0

精华

用户组 

易积分
1669
热心
1
好评
3

活跃会员热心会员

发表于 2024-12-5 18:20:01 | 显示全部楼层
首先支持你的修复  但是呢    不多说  希望你能卖到钱

点评

5块都没人买  详情 回复 发表于 2024-12-5 18:24
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

51

主题

2237

积分

0

精华

用户组 

易积分
720
热心
0
好评
1
QQ
发表于 2024-12-5 18:24:45 | 显示全部楼层
qq8945051q 发表于 2024-12-5 18:20
首先支持你的修复  但是呢    不多说  希望你能卖到钱

5块都没人买
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

0

主题

92

积分

0

精华

用户组 

易积分
162
热心
0
好评
0
发表于 2024-12-9 08:54:29 | 显示全部楼层

5块不是原因,主要是没需求
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

0

主题

78

积分

0

精华
易积分
6
热心
0
好评
0
发表于 2024-12-10 12:17:04 来自手机 | 显示全部楼层
在哪买?我要
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

51

主题

2237

积分

0

精华

用户组 

易积分
720
热心
0
好评
1
QQ
发表于 2024-12-10 13:41:23 来自手机 | 显示全部楼层
wangpython 发表于 2024-12-10 12:17
在哪买?我要

QQ3497893153
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

51

主题

2237

积分

0

精华

用户组 

易积分
720
热心
0
好评
1
QQ
发表于 2024-12-16 18:48:40 来自手机 | 显示全部楼层
dzf2001 发表于 2024-12-9 08:54
5块不是原因,主要是没需求

易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

0

主题

98

积分

0

精华

用户组 

易积分
51
热心
0
好评
0
发表于 2024-12-18 07:41:01 来自手机 | 显示全部楼层
E4A自带BLE蓝牙类库组件修复,解决多个bug,唯一解决。
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

0

主题

16

积分

0

精华
易积分
70
热心
0
好评
0
发表于 2024-12-25 10:21:02 | 显示全部楼层
易如意中文编程学习交流论坛有你更精彩~
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

QQ|sitemap|免责声明|RGB颜色对照表|手机版|小黑屋| 易如意 - E4A中文编程学习交流论坛

GMT+8, 2025-4-30 15:55 , Processed in 0.140118 second(s), 37 queries .

Powered by Discuz! X3.4

© 2001-2018 eruyi.cn

返回顶部