2012-09-04 11 views
7

Próbowałem utworzyć 128 bit z architekturą iOS CoreBluetooth.Tworzenie identyfikatora UUID o długości 128 bitów za pomocą ciągu znaków

Kod, który pisałem tutaj:

//16Bit Value-String 
static NSString * const [email protected]"FFC0"; 

//Var for 128Bit String 
static NSString * ADVERTISING_SERVICE; 


//A Base UUID 
static NSString * const [email protected]"0405060708090A0B0C0D0E0F"; 

+ (NSString*) get128BitUUID:(NSString*)uuid{ 
    return [[NSString alloc] initWithFormat:@"0000%@%@",uuid,BASE_UUID]; 
} 

ADVERTISING_SERVICE = [UUIDFuncs get128BitUUID:ADVERTISING_SERVICE_16]; 

A teraz, gdy próbuję uzyskać UUID z tym:

if([service.UUID isEqual:[CBUUID UUIDWithString:ADVERTISING_SERVICE] ]){ 
    [peripheral discoverCharacteristics:nil forService:service]; 
} 

mi się ten komunikat o błędzie:

2012-09-04 14:18:06.127 blukiiFirmwareTest[3154:707] *** Terminating app due to uncaught 
exception 'Invalid UUID string', reason: 'String 0000FFC00405060708090A0B0C0D0E0F 
does not represent a valid UUID' 

Nie rozumiem, dlaczego; ciąg ma długość 16-bajtowego UUID, to 128-bitowy, więc dlaczego otrzymuję ten błąd?

+1

[UUID] (http://en.wikipedia.org/wiki/Universally_unique_identifier#Definition) to standardowy format, a nie tylko prosty ciąg HexText. – PenguinCoder

+0

Ten sam błąd pojawia się, gdy korzystam z podstawowego identyfikatora UUID Bluetooth. – nivek

+1

@nivek Jak rozwiązałeś ten problem, używając Base UUID takiego jak "1813"? Może to naprawdę dawno temu, ale ja też się z tym spotykam. – Calios

Odpowiedz

19

Na typu linii poleceń uuidgen aby utworzyć nowy losowy UUID:

0C50D390-DC8E-436B-8AD0-A36D1B304B18 

Musisz to zobaczyć jest formą 8-4-4-4-12 jak wspomniano przez strony wikipedia połączonych @PenguinCoder też.

Tworzenie CBUUID sznurkiem w tym formacie będzie działać:

CBUUID *uuid = [CBUUID UUIDWithString:@"0C50D390-DC8E-436B-8AD0-A36D1B304B18"];