![]() |
1
2
首先,请记住,通过特性发送流数据并不是特性的目的。特征点是表示一些小的(大约20字节)信息,如当前电池电量、设备名称或当前心跳。其思想是,只有当参考底图值更改时,特征才会更改。它从未被设计成串行协议。所以你默认的假设应该是一切都由你来管理。
您不应该向特征写入的数据超过从中获取的值
你所写的每一个单独的值都会以原子的方式呈现给接收者。请记住,这些值都是单独的值,而不是从较大的数据流中分块出来的,因此重叠来自同一个特征的值是没有意义的。”原子“意味着它全部或全部到达。所以如果你的MTU可以处理100个字节,你写100个字节,另一方将收到100个字节或什么都没有。 也就是说,BLE中几乎没有错误检测,而且您绝对可以丢弃数据包。由你来验证数据是否正确到达。 如果你能瞄准iOS 11+,请看看L2CAP,它是为串行协议而不是使用GATT设计的。 如果您不能这样做,我建议您观看WWDC 2013会话703,它详细介绍了这个用例。(不过,我再也找不到它的链接了。) |
![]() |
JustinAngel · 具有触觉反馈的BLE设备 7 年前 |
![]() |
Jeremy P · 能否同时通知Java BLE多个特征? 7 年前 |
![]() |
Lechucico · BLE从特性接收GATT通知 7 年前 |
![]() |
Lechucico · 如何连接到配对的BLE设备 7 年前 |
![]() |
wheresmycookie · 蓝牙LE iOS无法在后台扫描 7 年前 |
![]() |
Axel · 在iPhone上使用蓝牙5 7 年前 |