获取心率带的心率值,介绍核心蓝牙:构建一个心率监视器。

蓝牙核心框架允许你的iOS和Mac应用程序与蓝牙低耗能设备通信(简称蓝牙勒)。蓝牙设备包括心率监视器,数码恒温器等等。

蓝牙核心框架是一个抽象的蓝牙4.0规范和定义了一组易于使用的协议与蓝牙设备。

你感兴趣的两个服务:一个用于设备信息(180A),和一个心率服务(180D)。

#define POLARH7_HRM_DEVICE_INFO_SERVICE_UUID @"180A" 
#define POLARH7_HRM_HEART_RATE_SERVICE_UUID @"180D"

部分蓝牙规范的特点:
这里列出的三个特征心率服务(2A37读取心率带)

#define POLARH7_HRM_MEASUREMENT_CHARACTERISTIC_UUID @"2A37"
#define POLARH7_HRM_BODY_LOCATION_CHARACTERISTIC_UUID @"2A38"
#define POLARH7_HRM_MANUFACTURER_NAME_CHARACTERISTIC_UUID @"2A29"
//!注意,value的类型是NSData,具体开发时,会根据外设协议制定的方式去解析数据
    if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:@"2A37"]]) {

        //***********方法可用
// Byte *databyte = (Byte *)[characteristic.value bytes];
// for (int i = 0; i<[characteristic.value length]; i++) {
// NSLog(@"收到3蓝牙发来的数据 %d",databyte[i]);//心率带的心率值(经过10进制转换)
// }
        //**********************

        // NSString * string = [NSString hexadecimalString:characteristic.value];
        NSLog(@"打印出(心率带)心率值(十六进制):%@",characteristic.value);//心率带的心率值(没有经过10进制转换)

        //**************将心率带的16进制转换成10进制
        NSRange range = {3,2};
        NSString *subString = [[NSString stringWithFormat:@"%@",characteristic.value] substringWithRange:range];
       int xintiao = (int)strtoul([subString UTF8String],0,16);
        NSLog(@"打印出(心率带)心率值(十进制):%ld",(long)xintiao);//打印出心率值(经过10进制转换)
}

请参照:
https://www.raywenderlich.com/52080/introduction-core-bluetooth-building-heart-rate-monitor

你可能感兴趣的:(获取心率带的心率值,介绍核心蓝牙:构建一个心率监视器。)