对于 BLE 4.0,它提供 API 来发现具有服务 UUID 数组的外围设备。
我只想找到具体的。如何做到这一点?
如果需要将标识符分配给特定设备,该怎么做?
(我认为我的问题需要一些iOS核心蓝牙的背景。)
对于 BLE 4.0,它提供 API 来发现具有服务 UUID 数组的外围设备。
我只想找到具体的。如何做到这一点?
如果需要将标识符分配给特定设备,该怎么做?
(我认为我的问题需要一些iOS核心蓝牙的背景。)
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: 方法重新发现它。
您还必须在第一次遇到外围设备时进行扫描。
如果我错了,请告诉我。您有 2 台设备作为中心角色,想要连接到一个 BLE 外围设备。
重要的是 BLE 外设中服务的 UUID。从您的中心角色设备中,您应该搜索具有所需 UUID 服务的外围设备。就这样。
要使用 iOS 进行开发,请遵循Core Bluetooth Programming Guide。你有一个很好的教程。
作为 Apple 文档的示例:
[myCentralManager scanForPeripheralsWithServices:nil options:nil];
在这行代码中,您可以添加一个 UUID 对象数组 ( CBUUID
) 而不是 nilscanForPeripheralsWithServices: