我的BLE应用程序需要在服务器端(BLE芯片)进行计算,这需要时间和断开连接的结果。
流程是这样的:
1- Android手机将特征值写入BLE芯片。2-芯片评估该值并开始计算。3-计算开始后不久连接就会丢失。
我可以应用什么解决方案来防止断开连接?我的脑海中有两个解决方案:
1-更改连接间隔:目前Android的连接间隔为7.5毫秒。由于在BLE芯片上的计算很耗时,因此在计算过程中不会发送或接收数据包。增加连接间隔将减少丢失的数据包数量。然而,不能保证Android手机会接受新的连接参数。
2-在单独的线程中运行计算:我不认为BLE芯片的SDK支持多线程,这样当计算过程正在进行时,它将继续接收和发送数据包,并防止断开连接。我使用CSR芯片,我认为它不支持。
如果我说错了,请纠正我。
你有什么其他的建议来解决这个问题吗?
提前谢谢。
发布于 2014-05-30 03:04:40
谢谢你的回答。我花了几个小时才发现问题出在哪里。
首先,当Android给出错误133或129时,很可能是因为远程设备。
一开始,我认为问题是由于监督超时而发生的。然后我重新配置了CSR芯片的连接参数,但没有帮助。
在使用xIDE开发企业社会责任应用程序时有一个问题。当由于索引超调或访问一些无效指针而出现运行时错误时,您不会在xIDE中收到任何错误。我终于找到了数组问题并解决了它。现在,它完美地工作了。
非常感谢!
发布于 2014-05-29 02:20:00
我不知道我要解释的东西在安卓系统下是否可行,因为我只在低级应用程序中使用了BLE,无论如何,如果你的问题是连接参数,你可以尝试更改Slave_Latency.
它应该很有用因为使用此参数,您可以更改连接间隔的数量,在此期间中央设备可以等待,直到它认为连接丢失。
下面的方程式可用于导出连接参数:Effective_Connection_Interval = (Connection_Interval)*(1+(Slave_Latency))
请记住,can存在某种可能与您的Effective_Connection_Interval发生冲突的Supervision_Timeout
https://stackoverflow.com/questions/23753898
复制相似问题