我看的别人的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是怎么确定的?谢谢
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是怎么确定的?谢谢
如何使用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
(出处: 人工智能研讨论坛)
另外可以下一些工具如ble utility查看蓝牙设备信息。
应该看另一个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的固件中,固件通过广播放出来。
在"centralMananger:didDiscoverPeripheral:advertisementData:SSI:"这个回调中,判断peripheral.identifier 是否为你想要的NSUUID对象,这是个128Bits (合16Bytes的蓝牙芯片唯一标示码),可以很好地识别出是哪一个peripheral设备过来的广播。