gpt4 book ai didi

android - 蓝牙 BLE Android 以最大吞吐量写入外围设备

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:02 24 4
gpt4 key购买 nike

我们公司开发了一个具有蓝牙 BLE 的硬件单元,我们在 Nexus 7 (2013) 中有一个服务应用程序,我们想用它向该单元发送固件文件。文件最大可达 500kb。

蓝牙芯片是德州仪器CC2540。

我翻阅了大量网页,并扫描 Stack Overflow 以获取有关如何加速从 Android 设备到 CC2540 的数据传输的信息,但还没有找到任何真正好的示例。

在 Nordic semiconductors 主页上,我找到了一个示例,说明他们如何计算 Android 设备的最大吞吐量:( https://devzone.nordicsemi.com/index.php/how-do-i-calculate-throughput-for-a-ble-link )

Nexus 4 with nRF51822: 4 * 20 B * 1/0.0075 s = 10.6 kB/s = 84 kbps

它表示一个 Android 单元可以在每个连接间隔发送 4 个 20 字节的数据包,并且 Android 可以处理 7.5ms 的连接间隔。

在我们的应用程序中,我们目前正在使用 writeCharateristics 发送数据,并在发送下一个数据 block 之前等待 onWriteCharateristics 回调。然而,发送速度非常慢,因为回调需要大约 2 秒才能被调用 (!!)。这使得数据传输速率为 10 字节/秒,与上面示例计算中的 10.6kb/s 相去甚远。

我们已经尝试在两个 iOS 设备之间传输 50kb 的数据(使用 iOS KeyFob 演示的修改版本)并获得 3.4kb/s 的传输速率。但那是使用 CBPeripheralManager UpdateValue,据我所知,这是一种从外围设备向中央设备发送通知的方式。

据我所知,目前无法让 Android 设备充当外围设备。这是否意味着 CC2540 无法向 Nexus 7 发送通知?最大化吞吐量的唯一方法是通过通知发送数据吗?

是 TI 设备中的堆栈使它变慢了,还是有任何方法可以更改任何参数以使 Nexus 和 CC 单元之间的数据传输更快?

我们有一个想法,即在 Nexus 7 设备中实现 GATT 服务器,并让 CC2540 订阅来自它的通知。那可能吗?这意味着 Nexus 首先必须扫描 CC2540 并在找到服务时连接到它。建立连接后,CC2540 开始订阅来自 Nexus 7 的通知。之后从 Nexus 以更高的传输速率向 CC2540 发送通知。

希望其他人一直在尝试做与我们正在尝试做的事情相同的事情!

最佳答案

几个月前,我参与了一个使用 CC2540 的项目,不幸的是该项目是关于另一个应用领域的。

无论如何,我记得您可以设置连接参数,例如Connection_IntervalSlave_Latency 以提高吞吐量,即使功耗会比以前更大.可能您已经尝试过这样做,但我认为这是获得良好结果的唯一方法。

关于android - 蓝牙 BLE Android 以最大吞吐量写入外围设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23802154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com