连接间隔(Core Bluetooth)

4

是否有办法通过Core Bluetooth更改连接间隔?我正在向外围设备传输数据块,并且传输数据的时间很长。我想缩短这个时间。

请告诉我,是否有可能使用core bluetooth从iOS编写或更新连接间隔。

谢谢!

3个回答

5

只有通过从您的外围设备向iOS发送连接参数更新才能实现。 根据CoreBluetooth,最佳合法参数为:Min:20ms(parameter = 16)Max:40(parameter = 32)。实际上,如果将Min设置为10,Max设置为20或30,则会获得更好的性能,因为CoreBluetooth将选择约20ms而不是30ms。令人烦恼的是,我们无法进行设置。


1
是的,我已经从外设设置了相同的内容。但我想知道,iOS应用程序是否可以使用Core Bluetooth读取或更新连接间隔? - spaleja

1
[_manager setDesiredConnectionLatency:CBPeripheralManagerConnectionLatencyLow forCentral:_central];

我在创建的iOS外设应用程序中使用了这种方法。但是,你仍然无法低于20毫秒。非常沮丧,因为我需要低于16毫秒。除非它是HID配置文件(允许11.25ms),否则目前看起来不可能 - 但你不能从iOS设备创建HID配置文件。
如果你的蓝牙智能链接的另一端有一个iOS设备,苹果会对最小连接间隔施加自己的限制。这个值是20毫秒,而不是官方的蓝牙4.0规范最小值7.5毫秒。苹果这样做是为了确保单个应用程序不会占用蓝牙硬件上所有可用的带宽,并/或过快地耗尽电池。有关此限制的详细信息,请参见Apple蓝牙设计指南(PDF)第18页的连接参数部分。
请注意,iOS不允许您从iOS端设置或请求连接参数。CoreBluetooth CBCentralManager对象的connectPeripheral方法需要一个“options”参数,但这不包括连接参数。相反,从机必须在连接后请求连接更新以获取新的所需参数,然后iOS将根据上面链接的Design Guidelines文档中的标准接受或拒绝它们。

-4

我认为实现这个功能的方法是使用定时器。

请参考:如何在Objective-C中编写定时器?

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

此外,根据Corebluetooth框架,目前没有办法从中央端更新连接间隔。

不过,我对您关于连接间隔的信息很感兴趣,Henrik。


嗨,我已经通过在单个连接间隔中发送多个数据包来找到了解决方案。 - spaleja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接