1

对于 BLE 4.0,它提供 API 来发现具有服务 UUID 数组的外围设备。

我只想找到具体的。如何做到这一点?

如果需要将标识符分配给特定设备,该怎么做?

(我认为我的问题需要一些iOS核心蓝牙的背景。)

4

2 回答 2

5

Core Bluetooth Programming Guide中描述了重新连接到已知外围设备的过程。

本质上,如果您知道要重新连接的设备的 UUID(这是对象的identifier属性CBPeripheral),那么您可以使用 的retrievePeripheralsWithIdentifiers:方法CBCentralManager来获取CBPeripheral对象,然后尝试连接 -

NSUUID *pid=[[NSUUID alloc]initWithUUIDString:@"45D956BB-75E4-6CEB-C06C-D531B00174E4" ];
NSArray *peripherals=[self.centralManager retrievePeripheralsWithIdentifiers:@[pid]];
if ([peripherals count]>0)
{
      CBPeripheral *peripheral=[peripherals objectAtIndex:0];
      peripheral.delegate=self;
      [self.connectingPeripherals addObject:peripheral];

      NSLog(@"Found peripheral %@ with name %@",peripheral.identifier,peripheral.name);
      [self.centralManager connectPeripheral:peripheral options:nil];
 }

这可能不起作用,并且您可能必须扫描外围设备,因为某些外围设备(尤其是 iOS 设备)的标识符会定期更改其 UUID。

编程指南注释 -

注意:由于某些原因,可能无法连接外围设备。例如,该设备可能不在中心附近。此外,一些低功耗蓝牙设备使用周期性变化的随机设备地址。因此,即使该设备就在附近,该设备的地址也可能自系统上次发现它以来发生了变化,在这种情况下,您尝试连接的 CBPeripheral 对象与实际的外围设备不对应。如果由于其地址已更改而无法重新连接到外围设备,则必须使用 scanForPeripheralsWithServices:options: 方法重新发现它。

您还必须在第一次遇到外围设备时进行扫描。

于 2014-04-01T10:03:52.840 回答
0

如果我错了,请告诉我。您有 2 台设备作为中心角色,想要连接到一个 BLE 外围设备。

重要的是 BLE 外设中服务的 UUID。从您的中心角色设备中,您应该搜索具有所需 UUID 服务的外围设备。就这样。

要使用 iOS 进行开发,请遵循Core Bluetooth Programming Guide。你有一个很好的教程。

作为 Apple 文档的示例:

[myCentralManager scanForPeripheralsWithServices:nil options:nil];

在这行代码中,您可以添加一个 UUID 对象数组 ( CBUUID) 而不是 nilscanForPeripheralsWithServices:

于 2014-04-01T08:38:05.603 回答