1

对于BLE 4.0,它提供API以发现具有服务UUID阵列的外围设备。如何从具有相同服务的两个设备中查找特定BLE 4.0外围设备UUID

我只想找到具体的一个。如何实现这一目标?

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

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

+0

你找到答案了吗?我有同样的情况。如果你能分享你发现的那样会很好。 – user2210021

+0

你的问题有点含糊:你想发现一个新的外设,或重新连接到一个以前连接的外设,或发现一个发现的外设上的特定服务?看起来Paulw11对你的问题有最好的答案。 –

回答

0

告诉我,如果我错了。您有2个设备作为中心角色,希望连接到一个BLE外设。

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

使用iOS开发请按照Core Bluetooth Programming Guide。你有一个很好的教程。

作为苹果文档的例子:对于scanForPeripheralsWithServices:

6

方法

[myCentralManager scanForPeripheralsWithServices:nil options:nil]; 

在这行代码可以添加UUID对象Array(CBUUID)代替零重新连接到已知的外围设备在Core Bluetooth Programming Guide中描述。

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

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对象不对应于 实际的外围设备。如果由于其地址已更改而无法重新连接到外围设备012xx,则必须使用scanForPeripheralsWithServices:options:method重新发现它 。

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

相关问题