我看的别人的demoNSString *kTemperatureServiceUUIDString = @"DEADF154-0000-0000-0000-0000DEADF154";
NSString *kCurrentTemperatureCharacteristicUUIDString = @"CCCCFFFF-DEAD-F154-1319-740381000000";
NSString *kMinimumTemperatureCharacteristicUUIDString = @"C0C0C0C0-DEAD-F154-1319-740381000000";
NSString *kMaximumTemperatureCharacteristicUUIDString = @"EDEDEDED-DEAD-F154-1319-740381000000";
NSString *kAlarmCharacteristicUUIDString = @"AAAAAAAA-DEAD-F154-1319-740381000000";NSString *kAlarmServiceEnteredBackgroundNotification = @"kAlarmServiceEnteredBackgroundNotification";
NSString *kAlarmServiceEnteredForegroundNotification = @"kAlarmServiceEnteredForegroundNotification";@interface LeTemperatureAlarmService() <CBPeripheralDelegate> {
@private
    CBPeripheral *servicePeripheral;
    
    CBService *temperatureAlarmService;
    
    CBCharacteristic    *tempCharacteristic;
    CBCharacteristic *minTemperatureCharacteristic;
    CBCharacteristic    *maxTemperatureCharacteristic;
    CBCharacteristic    *alarmCharacteristic;
    
    CBUUID              *temperatureAlarmUUID;
    CBUUID              *minimumTemperatureUUID;
    CBUUID              *maximumTemperatureUUID;
    CBUUID              *currentTemperatureUUID;    id<LeTemperatureAlarmProtocol> peripheralDelegate;
}
@end@implementation LeTemperatureAlarmService
@synthesize peripheral = servicePeripheral;
#pragma  -
#pragma  Init
/****************************************************************************/
/* Init */
/****************************************************************************/
- (id) initWithPeripheral:(CBPeripheral *)peripheral controller:(id<LeTemperatureAlarmProtocol>)controller
{
    self = [super init];
    if (self) {
        servicePeripheral = [peripheral retain];
        [servicePeripheral setDelegate:self];
peripheralDelegate = controller;
        
        minimumTemperatureUUID = [[CBUUID UUIDWithString:kMinimumTemperatureCharacteristicUUIDString] retain];
        maximumTemperatureUUID = [[CBUUID UUIDWithString:kMaximumTemperatureCharacteristicUUIDString] retain];
        currentTemperatureUUID = [[CBUUID UUIDWithString:kCurrentTemperatureCharacteristicUUIDString] retain];
        temperatureAlarmUUID = [[CBUUID UUIDWithString:kAlarmCharacteristicUUIDString] retain];
}
    return self;
}
我怎么知道自己设备的UUID呢,这个UUID是怎么确定的?谢谢

解决方案 »

  1.   

    楼主如何解决的UUID???
      

  2.   

    UUID是通讯双方设订好的,而且是唯一的,当你的手机做central时,这些UUID是有peripheral提供的,你需要查看peripheral的UUID。
      

  3.   

    我也在做这个,我的项目的蓝牙控制血压计,其中中心设备暂时不需要UUID,但是查了一下资料,那个UUID可能是用uuidgen之类的东西生成的吧?!不确定 
      

  4.   

    帮你结贴,UUID是在蓝牙的Firmware中定义好的。你可以使用BLE LightBlue等软件浏览查看,也可以询问设备硬件提供者。定义式硬件定义的,所以软件方面只是查询对应UUID查询,连接,不能自定义一个去找,那是找不到的。硬件层定义UUID,方法如:
    如何使用gattdbgen为CSR uEnergy SDK创建128 UUID的GATT Database?
    http://www.aiseminar.cn/bbs/forum.php?mod=viewthread&tid=2520&fromuid=3
    (出处: 人工智能研讨论坛)如何在蓝牙BLE协议栈中定义和使用128位的UUID?
    http://www.aiseminar.cn/bbs/forum.php?mod=viewthread&tid=2519&fromuid=3
    (出处: 人工智能研讨论坛)
      

  5.   

    这个是硬件那边提供的,我现在的公司就是做蓝牙芯片的 这些UUId就是他们写在固件里的,我连接的时候根据他们给的UUID来搜索就行
      

  6.   

    楼主,你好。前3个月我也刚做过这个类似的项目,很遗憾的告诉你,现在是获取不了uuid的,因为隐私问题,你只能通过第三方的开源,为手机创建一个新的Uuid,存在Keychain里。这样每台机就唯一标识了。
      

  7.   

    楼主如何解决的UUID?
      

  8.   

    >.< 看不到的,跟Android不一样,他这个是根据手机的MAC地址跟蓝牙地址算出来的~想其他办法吧,UUID行不通
      

  9.   

    如果你是要知道Peripheral的UUID的话,可以下一个 BlueTooth,很好的BLE测试程序,会满足你的所有需求。
      

  10.   

    CBCentralManager scan会获得相关信息,包括uuid.
    另外可以下一些工具如ble utility查看蓝牙设备信息。
      

  11.   

    主要有两种,自己用写个小程序,实现center方法,scan就会有,peripheral的详细信息,然后打印出来, 怕麻烦的话直接下载一个LightBlue   我现在做的每次跟硬件方去测试或什么的都是用这个,打开页面就会由peripherals nearby,点击你的那个设备(就是信号最强的那个),然后进去   就会给的很清楚  server UUID   、 notify UUID、  write UUID   一目了然
      

  12.   

    这个Demo正是Apple 提供的CoreBluetooth的最佳实践中Central端如何保存CBPeripheral数据并在启动或退到后台时重连以及处理通信问题的Demo,这个Demo并不能很好地解答你的问题。
    应该看另一个Demo “BTLE_Transfer”这个,这里详细说明了CoreBluetooth通信的基本原理
    central端(实际上作为通信的客户端:discovering\conneting\read\write 从peripheral端来的数据)
    peripheral端(实际上作为通信的数据提供端即服务端 : advertising自己的存在包数据、或者推送数据到订阅者 或 response 从central端过来的请求(read/write请求))
    peripheral端提供的数据,结构如下:
    | ---- CBService0<CBUUID10> | ---- CBCharacteristic0<CBUUID0>
    |                                                 | ----- CBCharacteristic1<CBUUID1>
    |                                                 | ....
    |----  CBService1<CBUUID11> | ---- CBCharacteristic0 <CBUUID2>
    |                                                 | ---  CBCharacteristic1<CBUUID3>
    所以在没有建立任何连接之前,你想iPhone连接到你想要的蓝牙设备上只有一个途径,那就是提前知道这个蓝牙设备的提供的服务的UUID及peripheral设备提供的众多服务中你想要的那个服务的UUID,并且peripheral设备必须通过空气将这个UUID广播出来,iPhone才可能与制定的peripheral设备建立连接,否则识别不了。当然peripheral广播包的总长度不能超过28Bytes,这里面如果硬件能提供一个唯一识别码给你 也是可以的,也可以直接用LightBlue等蓝牙工具读出这个serviceUUID,然后硬件写入blue的固件中,固件通过广播放出来。
      

  13.   

    结个贴!
    在"centralMananger:didDiscoverPeripheral:advertisementData:SSI:"这个回调中,判断peripheral.identifier 是否为你想要的NSUUID对象,这是个128Bits (合16Bytes的蓝牙芯片唯一标示码),可以很好地识别出是哪一个peripheral设备过来的广播。
      

  14.   

    Windows在cmd下命令uuidgen