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

时间:2014-04-01 06:21:13

标签: ios bluetooth-lowenergy core-bluetooth cbperipheral cbcentralmanager

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

我只想找到具体的一个。怎么做到这一点?

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

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

2 个答案:

答案 0 :(得分:5)

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

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

CBPeripheral

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

编程指南说明 -

  

注意:可能无法连接外围设备   有几个原因。例如,设备可能不在附近   中央。此外,一些蓝牙低功耗设备使用了   随机设备地址定期更改。因此,即使   设备在附近,设备的地址可能已经改变   它最后一次被系统发现,在这种情况下   您尝试连接的CBPeripheral对象不对应   实际的外围设备。如果你不能重新连接到   外围设备,因为它的地址已经改变,你必须重新发现它   使用scanForPeripheralsWithServices:options:方法。

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

答案 1 :(得分:0)

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

重要的是BLE外围设备中的服务的UUID。从中心角色的设备中,您应该使用所需的UUID服务搜索外围设备。多数民众赞成。

要使用iOS开发,请关注Core Bluetooth Programming Guide。你有一个很好的教程。

作为Apple文档的一个示例:

[myCentralManager scanForPeripheralsWithServices:nil options:nil];

在这行代码中,您可以为CBUUID

添加一个UUID对象数组(scanForPeripheralsWithServices:)而不是nil