2012-09-04 27 views
7

Intenté crear un 128Bit con el marco iOS CoreBluetooth.Crear un UUID de 128 bits con la cadena

El código que he escrito es aquí:

//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]; 

Y ahora cuando trato de conseguir un UUID con esto:

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

me sale este mensaje de error:

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' 

No entiendo por qué; la cadena es un UUID de 16 bytes, esto es de 128 bits, ¿por qué recibo este error?

+1

[UUID] (http://en.wikipedia.org/wiki/Universally_unique_identifier#Definition) es un formato estándar, no sólo una cadena recta de HexText. – PenguinCoder

+0

El mismo error aparece cuando uso el UUID base Bluetooth. – nivek

+1

@nivek Entonces, ¿cómo resolvió este problema cuando usa UUID base como "1813"? Tal vez fue hace mucho tiempo, pero me encuentro con este problema también. – Calios

Respuesta

19

En la línea de comandos tipo uuidgen para crear un nuevo UUID al azar:

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

Verás que es la forma de 8-4-4-4-12 como se ha mencionado por la página de Wikipedia unidos por @PenguinCoder también.

Creación de una CBUUID con una cadena en este formato funciona:

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