gpt4 book ai didi

android - 蓝牙Android RFCOMM/SPP错误处理建议

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:06:14 33 4
gpt4 key购买 nike

我正在计划在 Android 设备和使用商用蓝牙模块的自定义传感器之间使用的通信协议(protocol)。我会使用 SPP 配置文件,据说它“向用户提供简单可靠的数据流,类似于 TCP”。

我对蓝牙技术不太熟悉,对设计这样的协议(protocol)有一些疑问。

首先,我不清楚是否需要担心传输损坏的数据。底层协议(protocol)栈是否能保证我从 Android 提供的 InputStream 读取的字节与 UART 在传感器端接收到的字节相同?我是否必须定义自己的受 CRC 或其他东西保护的数据包,否则会不会太过分了?

根据 Android 蓝牙文档,我不清楚如果信号微弱并丢失一段时间,我的应用程序会发生什么。我是立即得到 IOException,还是平台为我提供了一些隐藏的错误处理和恢复功能,让我看不到如此短的中断?

感谢您的任何建议。

最佳答案

您不必担心 SPP 上的数据损坏,蓝牙提供 2 个级别的 CRC,一个在基带级别,然后一个在 L2CAP 级别,两者都具有针对任何检测到的损坏的重传机制 - 因此应用程序将只接收良好的数据包。

关于第二个问题 - 是的,如果底层蓝牙连接断开,您将在连接的套接字流上收到 IOExceptions,Android 无法处理自动恢复 - 通常应用程序需要检测断开连接的原因并尝试重新连接如适用。因此,如果您想从上次成功接收/发送的点继续数据交换,那么您的应用程序应该维护某种序列号和轻型协议(protocol)以实现恢复。另一种选择是在重新连接时简单地从数据交换开始(因此这取决于您的用例)

关于android - 蓝牙Android RFCOMM/SPP错误处理建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14498530/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com