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重新發現它 。

您還必須在您第一次遇到外圍設備時進行掃描。

相關問題