2014-12-31 91 views
2

我有多個BLE設備連接,每個設備在電池狀態發生變化時都會'通知'。識別正在通知的BLE設備

如何識別在通知狀態變化後讀取數據時通知哪個BLE?

// Instance method to get the battery state 
- (void) getBattery:(CBCharacteristic *)characteristic 
{ 
    //---------------- 
    NSLog(@"getBattery"); 
    //---------------- 
    { 
     // Get the Battery Data 
     NSLog(@"Battery Level is : %@ (HEX)" , characteristic.value); 
    } 
} 

這是代碼的時候通知...

謝謝您的回答讀取數據,但它似乎我只能從最後一個服務設置接收數據從通知。這裏是通知的呼叫代碼...

嗨,太棒了。我可以識別數據發生變化時通知設備。

但是,看起來我的代碼只是通知和收集來自最後識別特徵的數據。

這裏是調用代碼:

- (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error 
{ 

// Retrieve the characteristic value for battery 
if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:SR1_DEVICE_BATTERY_LEVEL_SERVICE_UUID]]) { 
[self getBattery:characteristic]; 
} 
} 

回答

1

當外設發送一個值已改變的通知,則CBPeripheralDelegate方法didUpdateValueForCharacteristic被調用。此方法包含對CBPeripheral的引用。你不會說明你如何從這種方法到你的方法,但你需要通過外設。

您也可以參考的CBCharacteristic服務屬性的周邊物業 -

CBPeripheral *p=characteristic.service.peripheral;