【问题标题】:Slow reading speed of GATT characteristics BLEGATT特性BLE读取速度慢
【发布时间】:2018-11-26 09:12:11
【问题描述】:

我正在开发一个在蓝牙设备 (TI CC2650) 和 android 之间传输数据的项目。为此,必须以至少 24 kbps 的速度读取 GATT 特性。低功耗蓝牙规范允许这种传输速率。 我在 Android Studio 工作并使用工作室提供的 BLE 标准库。当请求从主设备读取时,使用mBluetoothLeService.readCustomCharacteristic () 或mBluetoothLeService.readCharacteristic () 命令的从设备的特性至少需要 100 毫秒才能获得数据。通过增加 GATT 特性的大小,时间可以达到 1500 ms。这种限制的原因是什么?如何规避?

【问题讨论】:

标签: java android bluetooth bluetooth-lowenergy


【解决方案1】:

读取操作需要每个块进行一次往返。并且往返时间至少是连接间隔的一倍。

如果您改用通知,则可以非常快速地发送此类消息,因为每个连接事件都可以发送多个数据包。还可以尝试增加 mtu 并尽可能使用 LE 数据长度扩展。

【讨论】:

  • 感谢您的回答。我尝试了通知,更改了 MTU 和连接间隔。更改 MTU 后,Android 开始浪费更多时间来处理大包。当我使用通知时,一些包丢失了。我认为Android中的问题。它无法在要求的时间内处理包裹。你知道我该如何应对吗?
  • Android 不会丢失通知包,所以你的问题一定出在其他地方。您应该查看 hci snoop 日志(您可以在 Android 开发人员设置中将其打开,然后传输到计算机并在 Wireshark 中查看)以查看所有时间和数据包。或者更好的是,使用空气嗅探器。
  • 是的,Android 不会丢失通知,但有时它会读取两次下一个包。例如,我发送了三个包:第一个 {1,2,3},第二个 {4,5,6},第三个 {7,8,9}。在 Android 上也收到三个包,但第一个 {1,2,3},第二个 {7,8,9} 和第三个 {7,8,9}。包裹的数量总是正确的。可能,这是因为在我们的程序保存之前的包之前已经重写了包。你怎么看?
猜你喜欢
  • 1970-01-01
  • 2016-07-26
  • 2014-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多