连接间隔核心蓝牙

时间:2013-03-14 06:25:48

标签: iphone ios core-bluetooth

有没有办法通过Core Bluetooth更改连接间隔? 我正在将数据块传输到Peripheral,它正在谈论传输数据的时间。我想减少这个时间。

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

谢谢

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

[_manager setDesiredConnectionLatency:CBPeripheralManagerConnectionLatencyLow forCentral:_central];

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

  

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

     

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

答案 2 :(得分:-4)

我认为这样做的方法是使用Timer。

请参阅:How Do I write a Timer in Objective-C?

目前,这就是我代表连接间隔的方式。您可以在函数的回调函数中使用它: - (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)特征错误:(NSError *)错误

另外,从Corebluetooth框架判断,目前无法从中央端更新连接间隔。

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