BLE芯片正在计算时,Android蓝牙低功耗连接超时

时间:2014-05-20 07:49:34

标签: android bluetooth-lowenergy connection-timeout disconnection

我的BLE应用程序需要在服务器端进行计算(BLE芯片),这需要时间和结果断开连接。

流程是这样的:

1- Android手机将特征值写入BLE芯片。 2-芯片评估该值并开始计算。 3-计算开始后,连接很快就会丢失。

我可以采用什么解决方案来阻止断开连接?我脑子里有两个解决方案:

1-更改连接间隔:目前Android使用7.5毫秒作为连接间隔。由于BLE芯片上的计算需要时间,因此在计算期间不发送或接收分组。增加连接间隔将减少丢失的数据包的数量。但是,无法保证Android手机会接受新的连接参数。

2-在单独的线程中运行计算:我不认为BLE芯片的SDK支持多线程,这样在进行计算过程时,它将继续接收和发送数据包并防止断开连接。我使用CSR芯片,我认为它不支持。

如果我错了,请纠正我。

您还有其他建议可以解决这个问题吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

感谢您的回答。我花了几个小时后发现了问题所在。

首先,当Android给出错误133或129时,很可能是因为远程设备。

一开始我认为问题是由于监督超时而发生的。然后我重新配置了CSR芯片的连接参数,但没有帮助。

使用xIDE(CSR的IDE)进行CSR应用程序开发时出现问题。当由于索引过冲或访问某些无效指针而存在运行时错误时,您将不会在xIDE中收到任何错误。我终于找到了阵列问题并修复了它。现在它完美无缺。

非常感谢!

答案 1 :(得分:0)

我不确切知道我在Android下解释它是否可行,因为我只使用低级应用程序BLE,无论如何,如果您的问题是连接参数,您可以尝试更改的 Slave_Latency

它应该是有用的,因为使用此参数,您可以更改 Central 设备可以等到它认为连接丢失的连接间隔数。

以下公式可用于派生连接参数: Effective_Connection_Interval = (Connection_Interval)*(1+(Slave_Latency))

请记住,可能存在某种 Supervision_Timeout ,可能会与您的 Effective_Connection_Interval

冲突