识别正在通知的BLE设备

时间:2014-12-31 15:29:49

标签: objective-c cocoa bluetooth-lowenergy

我有多个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 个答案:

答案 0 :(得分:1)

当外围设备发送值已更改的通知时,将调用CBPeripheralDelegate方法didUpdateValueForCharacteristic。此方法包括对CBPeripheral的引用。您没有显示从这种方法到getBattery方法的方法,但是当您这样做时需要通过外围设备。

您还可以引用CBCharacteristic -

的服务属性的外围属性
 CBPeripheral *p=characteristic.service.peripheral;