先说一下我们公司的情况,我们叫外面APPS公司写了一件软件(安卓和IOS),
开始时这些软件对应的芯片CC2541(BLE4.0) , 这时候 APP软件工作是正常的,
今年年尾我们开始转向CC2640(BLE4.1),发现 APP软件工作 不正常的,
经常出现断开连接情况,尝试用一些通用的软件模拟测试(如 LIGHTBLUE),感觉通用的软件通信正常。
这样我们可以说是 外面APPS公司 写的APP软件有问题吗?(测试比较均使用同一部手机)
da qin zheng sheng:
用的啥牌子手机?安卓操作系统哪个版本?还有新做的板子可以和usb
Dongle多测试。
cai jingliang:
回复 da qin zheng sheng:
华为手机,MT2-L01, 安卓操作系统是4.4.2,华为是EMUI 3.0 。
另外说明,我使用IPHONE SE(10.2) LIGHTBLUE 连接,并手动模拟
输入相关的命令是没有问题。通信正常没有出现断开连接情况!+-
甜甜的大香瓜:
很显然是你们自己的2640开发没做好。
理由如下:
对于APP端来说,无论对端是2541还是2640,走的都是BLE协议,只要2541与2640的参数、流程一样,两者与app相连的效果是要一样的。
现在出现2640连接app断开,就是2640没有做到与2541一样;2640能跟lightblue连接,那是因为lightblue并没有你们实际项目的通信流程。
能明白?
cai jingliang:
回复 甜甜的大香瓜:
1。能明白你的意思。 但我不知该怎么查 断开连接的 原因, 你能给个建议吗? 我使用TI自带的例子改的。
2。我用LIGHTBLUE也会手动输入数据进行通信模拟测试的。
甜甜的大香瓜:
回复 cai jingliang:
2640在处理代码的要求上,比2541更严格。
在2541上没有问题的代码,直接一直到2640上是可能出问题的。
问题点可能是两个:
1、2640在处理一个事件的时间过长。
2、2640与app的通信时序不对。
对应的解决方法:
1、将原先2640上的一个事件步骤拆开为2个事件。
2、用usb dongle抓包通信时序,抓三个包“2541正常通信包、2640正常通信包、2640断开通信包”,对比三者的不同。
cai jingliang:
回复 甜甜的大香瓜:
我用LIGHTBLUE手动输入命令(数据)进行通信模拟测试的 , 感觉正常,而且长时间反复测试(超2小时反复测试)。
我们的通信其实比较简单,多数是手机发送命令要求CC2640送数据回手机或要求CC2640干什么。
所以总的来说手机只有15个命令发送给CC2640 ,然后CC2640有15个事件对应,
而且,一个命令没有完成的时间,其它命令是无法执行,因为手机APP会屏蔽掉。