[英]How to find the specific BLE 4.0 peripheral from two devices with same service UUID
對於BLE 4.0,它提供API來發現帶有服務UUID陣列的外圍設備。
我只想找到特定的一個。 如何實現呢?
如果需要將標識符分配給特定設備,該怎么辦?
(我認為我的問題需要iOS核心藍牙的某些上下文。)
《 核心藍牙編程指南》中介紹了重新連接到已知外圍設備的過程。
本質上,如果您知道要重新連接的設備的UUID(這是CBPeripheral
對象的identifier
屬性),則可以使用CBCentralManager
retrievePeripheralsWithIdentifiers:
方法獲取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];
在這行代碼中,您可以為scanForPeripheralsWithServices:
添加一個UUID對象數組( CBUUID
)而不是nil scanForPeripheralsWithServices:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.