簡體   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