我以前从没和蓝牙合作过。我必须通过BLE发送数据,并且我已经找到了每块20个字节的限制。
发送者是Arduino,接收者可能是个人电脑上的Android或Node.js应用程序。
我必须发送9个值,存储在浮点值中,所以4个字节*9=36个字节。我需要通过BLE获得所有数据的2块。接收部分需要两个块来处理它们。如果有些数据丢失了,我不在乎。
我不是网络协议方面的专家,我认为我必须给每条消息一个递增的时间戳,以便接收方可以用相同的时间戳将两个块粘合在一起,或者如果新的时间戳较高,则丢弃最后一个。但我不知道如何做一个校验和,如果我真的需要它,如果我真的需要它,或者如果--对于我的系统的一个简单的测试版--我可以忽略所有这些问题。
有人能给我一些建议吗?比如用BLE通讯处理类似情况的例子?
发布于 2014-12-15 20:13:51
您可以使用ATT的"Read请求“绕过大小限制。它允许您读取属性并提供偏移量。因此,您可以使用它读取偏移量为0的属性,如果有超过ATT_MTU字节的值,而不是ATT_MTU*1上的偏移量,或者还有更多的ATT_MTU*2等等.(您可以在蓝牙v4.1规范的3.4.4.5中阅读它;它也在4.0规范中,但我现在还没有看到它)
如果请求之间的值发生了变化,我不知道您如何检测到这样的更改。在发生更改时,可以让属性发送通知来中断进程,以防在读取过程中值发生变化。
https://stackoverflow.com/questions/27459852
复制相似问题