2017-10-07 26 views
2

我正在研究BLE应用程序(Heath相关),因为我有一个选项可以从BLE设备获取ECG值。在此我需要启用8个波形来获取我的应用程序中的ECG数据。如何启用自定义CBDescriptor值?

我的问题如何使用CBDescriptor来启用所有波形。我需要将如下所示的数据传递给CBDescriptor。 格式波形ID的 0:8位,1:16位,2:32位,3:64位,4:128位,5:8位* 3,6:16位* 3,7:32位* 3

uint8_t waveArray[8] = {0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00}; 
NSData *waveData = [NSData dataWithBytes:waveArray length:sizeof(waveArray)/sizeof(uint8_t)]; 
[peripheral writeValue:waveData forDescriptor:descript]; 

但我没有得到任何设备的回应。请帮帮我。

回答

2

最后,我得到了我的问题的解决方案。首先,我们需要调用CBDescriptor的发现方法。

[peripheral discoverDescriptorsForCharacteristic:characteristic]; 
-(void)peripheral:(CBPeripheral *)peripheral didDiscoverDescriptorsForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error { 
NSArray *Descroptors = [characteristic descriptors]; 
CBDescriptor *descript; 
[peripheral setNotifyValue:YES forCharacteristic:characteristic]; 

for (descript in Descroptors) 
{ 
    if ([descript.UUID isEqual:[CBUUID UUIDWithString:KT_WP_WC_CHARACTERISTIC]]) 
    { 
     uint8_t waveArray[9] = {0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00};//Your data which you need to send to BLE device 
     NSData *waveData = [NSData dataWithBytes:waveArray length:sizeof(waveArray)/sizeof(uint8_t)]; 
     [peripheral writeValue:waveData forDescriptor:descript]; 
      NSLog(@"waveData ==%@",waveData);   
      CBUUID * sCBUUID = [CBUUID UUIDWithString:KT_WP_SERVICE]; 
      CBUUID * cCBUUID = [CBUUID UUIDWithString:KT_WP_WF_CHARACTERISTIC]; 
      [self CBUUIDwriteValue:sCBUUID characteristicUUID:cCBUUID p:peripheral data:waveData]; 
     }else 
     {    
      const unsigned char bytes[] = { 0x28, 0x00 };//Your data which you need to send BLE device 
      NSData *descriptorData = [NSData dataWithBytes:bytes length:2];    
      CBUUID * sCBUUID = [CBUUID UUIDWithString:KT_WP_SERVICE]; 
      CBUUID * cCBUUID = [CBUUID UUIDWithString:KT_WP_WF_CHARACTERISTIC]; 
      [self CBUUIDwriteValue:sCBUUID characteristicUUID:cCBUUID p:peripheral data:descriptorData]; 
     } 
    } 

}