首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蓝牙串口通信(SPP)

蓝牙串口通信(SPP)
EN

Stack Overflow用户
提问于 2015-10-29 01:35:02
回答 2查看 3.2K关注 0票数 3

我们正在开发一个应用程序,它将通过蓝牙使用SPP (串行端口配置文件),开发人员正在讨论使用某种类型的协议和数据包传送,而不是仅仅在没有任何形式的ACK、序列或大小信息的情况下流式传输数据。

蓝牙是否提供了有保证的传输和数据完整性,以便我们不需要数据包协议设计的开销?我们能仅仅依靠蓝牙来确保数据的传送吗?

EN

回答 2

Stack Overflow用户

发布于 2017-07-21 23:07:40

送货有保证吗?

交货的顺序是有保证的。这是由于蓝牙协议的较低层中内置的确认/序列编号方案。因此,在较低层,分组被重传,直到它被确认。请注意,这等同于停止并等待ARQ方案。如果超过一个超时时间,则认为连接丢失(通常为30秒)

数据完整性是否得到保证?

蓝牙4.2引入了BT secure connection.This,每个发送的数据包都包含一个消息完整性检查( MIC ),接收端的MIC不匹配将触发重新传输,并且许多MIC不匹配可能会断开连接。

因此,如果您没有使用安全连接功能,那么完整性将得不到保证。存在用于保护数据的16位CRC方案,但众所周知,在很长一段时间内将存在CRC转义(位翻转使得CRC保持正确)。但这种情况相对较少,而且发生在嘈杂的环境中。如果您的应用程序需要非常高的数据完整性,那么可以使用SecureConnection或引入应用程序级完整性检查。

请注意,SPP配置文件本身没有任何错误/序列检查,RFCOMM具有检查报头损坏的8位FCS (帧检查序列)。L2CAP流/重传模式有一个可选的16位FCS,它覆盖了L2CAP报头和数据,请注意,基本L2CAP模式根本没有FCS。

如果您可以选择启用RFCOMM,那么在较低级别的16位L2CAP + L2CAP层的16位FCS +RFCOMM级别的8位FCS将提供足够好的数据完整性,适用于大多数应用程序。但是,如前所述,如果确实很关键,则需要引入额外的应用程序级完整性检查。

票数 4
EN

Stack Overflow用户

发布于 2017-07-21 04:10:22

从本质上讲,BT有自己的安全转移机制。然而,这一点同样重要-我想让您知道数据开始和结束的时间,您应该使用数据包类型的传输,例如STX和ETX来分隔每个数据包。有些加密狗有这样的坏习惯,即在传输过程中出现延时时会重复最后发送的字节,但遇到ETX或EOT时会停止。而且,为了您的系统安全,您也可以在数据包的末尾包含一个校验和。那你就很确定。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33397802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档