繁体   English   中英

核心蓝牙中的peripheral.DiscoverCharacteristic方法-Xamarin

[英]peripheral.DiscoverCharacteristic Method in Core Bluetooth - Xamarin

我正在创建一个Xamarin.Ios蓝牙应用程序,我的问题如下:

是否有任何方法可以立即发现外围设备中所有服务的特征。 我的意思是说我是否有三个服务(a,b,c),并且我呼叫了peripheral.discoverCharacteristic(a); 然后,在所有服务的所有已发现特征中发现特征回叫a,b,c的三个时间。 我知道每当我调用peripheral.discovercharacteristic()时它都可以进行回调,但是我需要在执行任何操作之前从所有服务中发现所有特征。 这是我的使用要求。 请帮忙 !

无法直接进行。

您将必须为每个服务使用一个DiscoverCharacteristic调用,然后使用自定义应用程序逻辑处理结果。

当我发现CBPeripheral的服务时,就将具有我所寻找的所有特征的一次称为discoverCharacteristics

for (CBService *service in peripheral.services)
{
    DDLogInfo(@"Kicking discovery of characteristics for servive %@", service);
    [peripheral discoverCharacteristics:@[[CBUUID UUIDWithString:CHARACTERISTIC_A],
                                          [CBUUID UUIDWithString:CHARACTERISTIC_B],
                                          [CBUUID UUIDWithString:CHARACTERISTIC_C],
                                          [CBUUID UUIDWithString:CHARACTERISTIC_D]]
                             forService:service];
}

然后,在didDiscoverCharacteristicsForService:error: ,我遍历发现的结果并存储对以后将需要的特性的引用,仅此didDiscoverCharacteristicsForService:error:

for (CBCharacteristic *characteristic in service.characteristics)
{
    if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:CHARACTERISTIC_A]])
        self.currentCharacteristicA = characteristic;
    else if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:CHARACTERISTIC_B]])
        self.currentCharacteristicB = characteristic;
    else if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:CHARACTERISTIC_C]])
        self.currentCharacteristicC = characteristic;
    else if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:CHARACTERISTIC_D]])
        self.currentCharacteristicD = characteristic;
}

而且,显然,断开连接后,请很好地清理self.currentCharacteristic *。

好的,在xamarin中,它仅适用于针对服务的特征发现,而不像批处理发现。 我将需要一一发现给定服务的特征,并对其进行处理,然后再次发现下一个服务的特征,如Etan在第一个答案中所述。 它对我有用,并且会考虑相应地更改用例需求。 感谢大家分享您的想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM