如何从具有相同服务UUID的两个设备中find特定的BLE 4.0外设

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

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

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

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

核心蓝牙编程指南介绍了重新连接已知外设的过程。

本质上,如果您知道要重新连接的设备的UUID(这是CBPeripheral对象的identifier属性),则可以使用CBCentralManagerretrievePeripheralsWithIdentifiers:方法获取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个设备作为中心angular色,想要连接到一个BLE外设。

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

使用iOS进行开发,请按照核心蓝牙编程指南 。 你有一个很好的教程。

作为苹果文档的一个例子:

 [myCentralManager scanForPeripheralsWithServices:nil options:nil]; 

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