4

有什么方法可以通过 Core Bluetooth 更改连接间隔?我正在将大块数据传输到外围设备,并且传输数据需要花费很多时间。我想减少这个时间。

如果可以使用核心蓝牙从 iOS 写入或更新连接间隔,请告诉我。

谢谢你

4

3 回答 3

5

仅通过从外围设备向 iOS 发送连接参数更新。Min:20ms (parameter=16) Max:40 (parameter=32) 是根据CoreBluetooth 的最佳合法参数。实际上,当 Min=10 Max=20 或 30 时,CoreBluetooth 将选择大约 20ms 而不是 30ms,这样您将获得更好的性能。烦人的我们无法设置它。

于 2013-03-15T07:52:23.127 回答
1
[_manager setDesiredConnectionLatency:CBPeripheralManagerConnectionLatencyLow forCentral:_central];

我在我创建的 iOS 外设应用程序上使用了这种方法。你仍然不能低于 20 毫秒。非常令人沮丧,因为我需要低于 16 毫秒。目前看来不可能,除非它是 HID 配置文件(它们允许 11.25 毫秒)——但您无法从 iOS 设备创建 HID 配置文件。

如果您在 Bluetooth Smart 链接的另一端有 iOS 设备,Apple 会对最小连接间隔施加自己的限制。这个值是 20ms 而不是官方蓝牙 4.0 规范的最小值 7.5ms。Apple 这样做是为了确保单个应用程序不会占用蓝牙硬件上的所有可用带宽,和/或过快耗尽电池。有关此限制的详细信息,请参阅 Apple 蓝牙设计指南 (PDF) 第 18 页的连接参数部分。

请注意,iOS 不允许您从 iOS 端设置或请求连接参数。CoreBluetooth CBCentralManager 对象的 connectPeripheral 方法采用“选项”参数,但这不包括连接参数。相反,slave 必须在连接后使用新的所需参数请求连接更新,然后 iOS 将根据上面链接的设计指南文档中的标准接受或拒绝它们。

于 2015-09-03T14:23:05.183 回答
-4

我相信做到这一点的方法是使用计时器。

请参阅:如何在 Objective-C 中编写计时器?

现在,这就是我表示连接间隔的方式。您可以在函数的回调中使用它: - (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error

另外,从Corebluetooth框架来看,目前还没有办法从Central端更新连接间隔。

但是,我对您的连接间隔信息感兴趣,henrik。

于 2013-04-22T18:12:28.577 回答