我正在使用Apple BLTE Transfer模仿iPhone作为外围设备。
我的目标是模拟使用心率测量配置文件的心率监视器。
(我知道如何生成数据,但需要在外围设备上定义服务)
我在另一侧已经有一个代码可以从BLE心率监测器收集数据。
我需要一些指导来定义心率服务及其特征(在外围设备上)。
我还看到了特定服务UUID(180D)和某些特征UUID的用法(例如,用于心率测量的2A37,用于制造商名称的2A29等)。从哪里获得这些编号?在哪里定义?
如果还有其他信息,请告知。
最佳答案
心率服务在bluetooth developer portal上有详细说明。
假设您已经初始化了一个名为CBPeripheralManager
的peripheralManager
,并且您已经收到带有peripheralManagerDidUpdateState:
状态的CBPeripheralManagerStatePoweredOn
回调。之后,您可以按照以下方法设置服务本身。
// Define the heart rate service
CBMutableService *heartRateService = [[CBMutableService alloc]
initWithType:[CBUUID UUIDWithString:@"180D"] primary:true];
// Define the sensor location characteristic
char sensorLocation = 5;
CBMutableCharacteristic *heartRateSensorLocationCharacteristic = [[CBMutableCharacteristic alloc]
initWithType:[CBUUID UUIDWithString:@"0x2A38"]
properties:CBCharacteristicPropertyRead
value:[NSData dataWithBytesNoCopy:&sensorLocation length:1]
permissions:CBAttributePermissionsReadable];
// Define the heart rate reading characteristic
char heartRateData[2]; heartRateData[0] = 0; heartRateData[1] = 60;
CBMutableCharacteristic *heartRateSensorHeartRateCharacteristic = [[CBMutableCharacteristic alloc]
initWithType:[CBUUID UUIDWithString:@"2A37"]
properties: CBCharacteristicPropertyNotify
value:[NSData dataWithBytesNoCopy:&heartRateData length:2]
permissions:CBAttributePermissionsReadable];
// Add the characteristics to the service
heartRateService.characteristics =
@[heartRateSensorLocationCharacteristic, heartRateSensorHeartRateCharacteristic];
// Add the service to the peripheral manager
[peripheralManager addService:heartRateService];
之后,您应该收到
peripheralManager:didAddService:error:
回调,指示添加成功。您应该类似地添加device information service (0x180A)最后,您应该以以下内容开始广告:NSDictionary *data = @{
CBAdvertisementDataLocalNameKey:@"iDeviceName",
CBAdvertisementDataServiceUUIDsKey:@[[CBUUID UUIDWithString:@"180D"]]};
[peripheralManager startAdvertising:data];
注意:心率服务也是我首先实施的。好的选择。 ;)