为什么simpleBLEPeripheral与Android手机蓝牙4.0第一次通信慢?
我是使用CC2541芯片运行例子simpleBLEPeripheral,作为终端从机,手机端开发的软件为主机,
操作步骤如下:
1、把手机蓝牙关闭(清除蓝牙之前连接的缓存),然后再打开(让蓝牙初始化完毕)。
2、运行simpleBLEPeripheral终端。
3、把手机慢慢的靠近终端,当手机扫描到的终端信号达到一定值时就建立连接通信,通信完毕断开连接。
4、通信过程使用抓包软件,抓取到的数据包如下图:
上面是第一次通信抓取的数据包,通信过程到断开连接需要700多毫秒(手机软件做记时),中间有比较多的通信数据包。
当不用关闭手机蓝牙第二次通信时,抓取的数据包如下:
终端与手机之间的通信过程就很快了,只需100多毫秒(手机软件记时),现在我就是不明白为什么第一次通信时中间需要传递那么多数据包,那些数据包有什么用的?能否去掉那些不必要的数据包,缩短两者之间的通信时间。不管第一次通信还是第二次通信如果通信保持在100多毫秒多好啊。希望TI工程师们帮帮忙,如何解决这个问题?
1、看了一下你的数据,有错误的答复,ATT_NO+FOUND(0X0A),可能与你模块的发射功率等有关,具体待查
2、设备广播与连接的流程如下图所示:
3、你可以使用bonding 试一下
4、我也坐等TI 相关FAE的答复,希望能增长点姿势^_^
不清楚,是不是第一次需要查找服务?以后就缓存了?
看一下连接流程吧,或许给你点启发
第一次连接主从设备之间通信环节就多了很多,不知道为什么多那些数据包,按我们正常理解应该是第二次连接后的通信数据包就可以了。
顶起来,我这边也是手机与从机通讯,第一次连接相当慢,之后就快很多。也很纠结这个问题,希望TI工程师能够及时回复,解答,谢谢!
这个问题要顶!望TI的工程师们解答啊
是否还有回复?期待
楼主现在解决了这个问题了吗? 我也碰到这个问题了 跪求解决方案啊
我现在也遇到这个问题了,不过你说的ATT_NO+FOUND(0X0A)好像是正确的回应,不是出错回应
我也是有这个严重的问题,请问楼主解决了没,有没有什么方法
我的理解是:
就像人跟人第一次见面,需要相互介绍自己。而第二次见面,则不需要相互介绍自己。
手机在第一次与CC2541“见面”后,会把必要数据缓存下来。第二次则可以直接利用缓存数据进行使用。
如果你把手机的app缓存清除(关闭手机蓝牙开关,再打开手机蓝牙开关),则应该又会像第一次连接一样,需要“重新认识”一遍。