我之前从未使用过蓝牙技术。我必须通过BLE发送数据,我发现每个块的限制为20个字节。
发件人是Arduino,接收者可以是个人电脑上的Android或Node.js应用程序。
我必须发送9个值,存储在浮点值中,所以4个字节* 9 = 36个字节。我需要通过BLE为我的所有数据提供2个块。接收部分需要两个块来处理它们。如果丢失了一些数据,我就不在乎了。
我不是网络协议方面的专家,我认为我必须为每条消息添加一个增量时间戳,以便接收方可以使用相同的时间戳粘贴两个块,或者如果新的时间戳更高,则丢弃最后一个。但我不确定如何做校验和,如果我真的需要它,如果我真的需要关心它,或者如果 - 对于我系统的简单测试版 - 我可以忽略所有这些问题。
有人能给我一些建议吗?就像使用BLE通信处理类似情况的例子一样?
答案 0 :(得分:1)
您可以使用ATT的“读取Blob请求”来解决大小限制。它允许您读取属性并提供偏移量。因此,您可以使用它来读取偏移量为0的属性,如果超过ATT_MTU字节,则可以使用ATT_MTU * 1处的偏移量再次请求,如果还有更多ATT_MTU * 2等等...(您可以在蓝牙v4.1规范的3.4.4.5中读到它;它也在4.0规范中,但我现在没有在我面前)
如果请求之间的值发生变化,我不确定如何检测这种变化。当值发生变化时,如果值在读取过程中发生变化,您可以使用属性发送通知。