0

目的の周辺機器に接続した後にサービスを検出しようとしていますが、UUID に従って存在しないサービスしか検出できません。つまり、確認の手段として、「Light Blue」というアプリストアアプリも使用しています。ライト ブルーは、すべての周辺機器、サービス、および特性を識別する単なる BLE エクスプローラーです。Light Blue を使用して、必要なサービスと特性を確認できるので、それらが存在し、Light Blue が識別したものが正しいことがわかります。

ここに私のコードと、すべてのサービス、含まれるサービス、および特性を特定する方法を示します。

- (void)printAllChar:(CBPeripheral*)p {
    printf("**************************************\n");
    printf("Listing all services and characteristics\n");

    CBService * s, * inc;
    CBCharacteristic * c;

    //Discover all services on peripheral
    [p discoverServices:nil];

    printf("%d services discovered\n", p.services.count);
    for(int i = 0; i < p.services.count; i++){

        //Traverse all services
        s = [p.services objectAtIndex:i];
        printf("Service %d: %s\n", i+1, s.UUID);

        [p discoverIncludedServices:nil forService:s];

        printf("    Included Services Discovered: %d\n", s.includedServices.count);

        //Traverse all included services of each service
        for(int k = 0; k < s.includedServices.count; k++){
            inc = [s.includedServices objectAtIndex:k];
            printf("    %d: %s\n", k+1, inc.UUID]);            
        }

        [p discoverCharacteristics:nil forService:s];

        printf("%d Characteristics discovered\n", s.characteristics.count);

        //Traverse all characteristic of each service
        for(int j = 0; j < s.characteristics.count; j++){
            c = [s.characteristics objectAtIndex:j];
            printf("Characteristic %d: %s\n", j+1, c.UUID);
        }
    }
}

^^^s.UUID は文字列変数ではないため、印刷関数が実際に実行されないことはわかっています。読みやすくするためにすべての変換コードを削除しました。

コールバック関数 didDiscoverServices が呼び出されないことに言及する価値があると思います。

上記のコードの出力例を次に示します。

**************************************
Listing all services and characteristics
3 services discovered
Service 1: 02000000-0200-0000-60D0-E03B02000000
    Included Services Discovered: 0
    0 Characteristics discovered
Service 2: 02000000-0200-0000-18C0-F03B00005444
    Included Services Discovered: 0
    0 Characteristics discovered
Service 3: 00000000-1000-0000-B4CC-E03B82130001
    Included Services Discovered: 0
    0 Characteristics discovered

どのサービスも私が期待するものではありません。正しい周辺機器を接続しましたが、これらのサービスはまったくわかりません。

検索する必要があるサービス ID は次のとおりです。

//Service UUID
#define BLE_DEVICE_SERVICE_UUID             "713D0000-503E-4C75-BA94-3148F18D941E"

//Characteristic UUID  
#define BLE_DEVICE_VENDOR_NAME_UUID         "713D0001-503E-4C75-BA94-3148F18D941E"

#define BLE_DEVICE_RX_UUID                  "713D0002-503E-4C75-BA94-3148F18D941E"

#define BLE_DEVICE_TX_UUID                  "713D0003-503E-4C75-BA94-3148F18D941E"

#define BLE_DEVICE_RESET_RX_UUID            "713D0004-503E-4C75-BA94-3148F18D941E"

#define BLE_DEVICE_LIB_VERSION_UUID         "713D0005-503E-4C75-BA94-3148F18D941E"

何が起こっているのか誰にも分かりませんか?

関連する場合は、RedBearLabs BLEMini を使用しています。

4

1 に答える 1