- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们公司开发了一个具有蓝牙 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_Interval 或Slave_Latency 以提高吞吐量,即使功耗会比以前更大.可能您已经尝试过这样做,但我认为这是获得良好结果的唯一方法。
关于android - 蓝牙 BLE Android 以最大吞吐量写入外围设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23802154/
我有一个基于 Java 的应用程序 (Android),我希望能够在后台执行可能长时间的操作。 AsyncTask 上的 Android 文档建议不要将它们用于可能运行时间超过几秒的任务(这是为什么?
所以我有外围 BLE 设备,我需要一些标识符以便稍后与另一部 iPhone 共享。示例我将 iPhone 'A' 连接到外围设备。 iPhone 'A' 将外围设备的标识符保存到数据库中,稍后我可以轻
当我指定这样的服务时: centralManager.scanForPeripherals(withServices:[BEAN_SERVICE_UUID],选项:[CBCentralManagerS
我是一名优秀的程序员,十分优秀!