2014-12-31 2 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); 
    } 
} 

Это код чтения данных при уведомлен ...

Спасибо за ваш ответ, но это, кажется, я только получать данные из последней настройки службы уведомления от. Вот код вызова для Notify ...

Привет, Отлично. Я могу идентифицировать устройство, уведомляющее, когда данные были изменены.

Но, похоже, что мой код только уведомляет и собирает данные с последнего идентифицированного признака.

Вот код, вызывающий:

- (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. Вы не показываете, как вы получаете этот метод до вашего метода getBattery, но вам нужно пройти периферийное устройство, когда вы это сделаете.

Вы можете также ссылаться на периферическую свойство имущества службы CBCharacteristic -

CBPeripheral *p=characteristic.service.peripheral; 
Смежные вопросы