Android服务一个BLE Blob请求大约需要多少时间?



我正在使用Blob请求读取超过23字节的属性。我的应用程序的MTU是23。我可以在嗅探器中看到,要传输512字节,它需要24个内部blob请求,增量偏移量为22,服务器将数据发回给我。在我的情况下,每个内部Blob请求大约需要105毫秒,并且以LightBlue应用程序为中心。我不太清楚Android BLE的这种内部分裂。有人能确认我,如果105ms的每个内部请求和2.5秒读取512字节是由于内部机制?

听起来很合理。我猜你没有更新连接间隔,因此使用默认的~52毫秒。我还猜测您的远程设备没有优化到能够在相同的连接事件中响应Read Blob Response(必须在150微秒内完成)。因此,每个事务将占用两个连接事件,最终占用105 ms。考虑增加MTU,切换到通知或切换到L2CAP CoC以获得更高的吞吐量,以及使用LE数据长度扩展。否则,只需降低连接间隔以增加每秒可以执行的事务数。

您观察的时间取决于许多因素,因此您的观察只是许多可能性中的一种。它可以快一点,但也可以慢很多。

由于蓝牙无线电是共享资源,其他应用程序也可以同时访问它。接收端的无线电也可能有其他事情要做,从而改变时间延迟。最后但并非最不重要的是,通常还依赖于2.4 GHz WLAN,因此,例如,同时在那里进行的数据传输也会影响传输速度。

最新更新