簡體   English   中英

如何從具有相同服務UUID的兩個設備中查找特定的BLE 4.0外設

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM