2012-09-04 33 views
7

Tôi đã cố tạo 128Bit với khung công tác CoreBluetooth của iOS.Tạo UUID 128Bit với chuỗi

Mã mà tôi đã viết là ở đây:

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

Và bây giờ khi tôi cố gắng để có được một UUID với điều này:

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

tôi nhận được thông báo lỗi này:

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' 

Tôi không hiểu tại sao; chuỗi là 16 Byte dài UUID, đây là 128 Bit vậy tại sao tôi nhận được lỗi này?

+1

[UUID] (http://en.wikipedia.org/wiki/Universally_unique_identifier#Definition) là một định dạng tiêu chuẩn, không chỉ là một chuỗi thẳng của HexText. – PenguinCoder

+0

Cùng một lỗi xảy ra khi tôi sử dụng Bluetooth UUID cơ sở. – nivek

+1

@nivek Vì vậy, làm thế nào bạn giải quyết vấn đề này sau đó khi sử dụng Base UUID như "1813"? Có lẽ nó thực sự là một thời gian dài trước đây, nhưng tôi cũng gặp vấn đề này. – Calios

Trả lời

19

Trên dòng lệnh gõ uuidgen để tạo ra một uuid ngẫu nhiên mới:

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

Bạn sẽ thấy nó là hình thức 8-4-4-4-12 như đã đề cập bởi các trang wikipedia liên kết bởi @PenguinCoder quá.

Tạo một CBUUID với một chuỗi ở định dạng này sẽ làm việc:

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