【发布时间】:2019-01-11 19:08:28
【问题描述】:
我最近在做一个使用低功耗蓝牙的项目。我实现了大部分通信协议,但是我开始担心,实际上我不知道数据传输是如何工作的,以及我实现的解决方案是否会以相同的方式与所有设备一起运行。
所以我主要关心的是当我收到来自peripheral(_:didUpdateValueFor:error:) 的通知时会收到什么数据块?它是否仅与协商的 MTU 大小一样大?或者,iOS 可能会收到有关块大小的信息,并在触发peripheral(_:didUpdateValueFor:error:) 之前等待全部接收?
当外围设备发送块时,假设每个块 100 字节,我可以假设我将始终在单个通知中获得 100 字节吗?或者它可能是前一个块的最后 50 个字节和下一个块的前 50 个字节?这将非常棘手并且难以检测到我的框架的开始位置。
我试图在 Apple 文档中找到更多信息,但没有任何相关信息。
我的猜测是我总是收到一个单一的特征状态。因此,这意味着块取决于外围端的实现。但是如果特征大于 MTU 大小怎么办?
【问题讨论】:
标签: ios bluetooth bluetooth-lowenergy core-bluetooth