【发布时间】:2016-11-09 13:35:36
【问题描述】:
具有正常特性只读将读取 MTU 大小(20 字节)的数据。 我的客户将提供更大尺寸(约 100 字节)的特征。
我看到 BLE 提供了“长读”功能,它会一直读取直到达到特征的大小。 (https://bluegiga.zendesk.com/entries/25053373--REFERENCE-BLE-master-slave-GATT-client-server-and-data-RX-TX-basics)
attclient_read_long 命令 - 启动一个程序,客户端首先向服务器发送正常的读取请求,如果服务器返回一个长度等于 BLE MTU(22 字节)的属性值,则客户端继续发送“读取长”请求,直到属性的其余部分被读取。这仅适用于读取长度超过 22 个字节的属性。为简单起见,构建 GATT 服务器通常更简单,因此没有长属性。请注意,BLE 协议仍然要求将数据打包成最大值。 22 字节的块,所以使用“read long”不会节省传输时间。
但是如何在 Android 中使用此功能? BluetoothGatt 类只提供一个简单的“Read()”——iOS 也一样。
增加 MTU 是不可能的,因为我们需要支持 AP 级别
【问题讨论】:
-
在 iOS 中,至少,你需要发出多次读取,重复直到你得到少于 22 个字节。这与 BlueGiga 描述的过程相同;你只需要自己实现它。我怀疑 Android 可能也是如此
标签: android ios bluetooth-lowenergy android-bluetooth ios-bluetooth