我的CoreBluetooth应用程序需要启用客户端特征配置描述符中的“指示位”。这是我所做的:
discoverServices
discoverCharacteristics
-(void)外围设备:(CBPeripheral *)外围设备didDiscoverServices:(NSError *)错误
discoverDescriptorsForCharacteristic
-(void)外围设备:(CBPeripheral *)外围设备didDiscoverCharacteristicsForService:(CBService *)服务错误:(NSError *)错误
-(无效)外围设备:(CBP外围设备*)外围设备didDiscoverDescriptorsForCharacteristic:(CBCharacteristic *)特征错误:(NSError *)错误
我打了电话:
if ( [[descriptor.UUID representativeString] isEqualToString:@"2902" ] )
{
const unsigned char raw_data[] = {0x02};
NSData *myData = [NSData dataWithBytes: raw_data length: 2];
[self.cBCP writeValue:myData forDescriptor:descriptor];
}
但是我的应用程序在
writeVale
中崩溃了:。控制台中的错误消息是:任何的想法?谢谢
最佳答案
相当老的问题,但由于未得到回答,因此似乎setNotifyValue(_:for:)
方法将为您处理该问题,这取决于下面的charcateristics属性:
因此,如果您需要启用指示,则特征必须仅具有指示属性,并应删除notify。
我想这背后的主要原因是指示要慢得多,因此,除非有必要指示,否则iOS总是会选择尽可能快的选项。
Read more on the Apple docs
关于ios5 - CoreBluetooth writeValue :forDescriptor: issue,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13561136/