繁体   English   中英

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

[英]Bluetooth Android RFCOMM / SPP error handling suggestions

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

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

首先,我不清楚是否必须担心传输的数据是否被传输。 底层协议栈是否保证我从InputStream Android读取的字节与UART在传感器端接收的字节相同? 我是否必须定义我自己的受CRC或东西保护的数据包,或者它是否过度杀伤?

从Android蓝牙文档中我不清楚如果信号很弱并且丢失了一段时间,我的应用程序会发生什么。 我是否立即获得IOException ,或者平台为我提供了一些隐藏的错误处理和恢复,这会使我看不到这么短暂的中断?

谢谢你的建议。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM