1

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

流程是这样的:

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

我可以应用什么解决方案来防止断开连接?我有两个解决方案:

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

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

如果我的观点有误,请纠正我。

您还有其他解决问题的建议吗?

提前致谢。

4

2 回答 2

1

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

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

一开始还以为是监督超时导致的问题。然后我重新配置了CSR芯片的连接参数,但是没有用。

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

非常感谢!

于 2014-05-29T19:04:39.540 回答
0

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

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

以下等式可用于导出连接参数: Effective_Connection_Interval = (Connection_Interval)*(1+(Slave_Latency))

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

于 2014-05-28T18:20:00.140 回答