外围writeValue:forCharacteristic:types:返回空错误和值

我正在使用苹果公司编写的下面的代码。

https://developer.apple.com/library/mac/samplecode/HeartRateMonitor/Listings/HeartRateMonitor_HeartRateMonitorAppDelegate_m.html#//apple_ref/doc/uid/DTS40011322-HeartRateMonitor_HeartRateMonitorAppDelegate_m-DontLinkElementID_4

这是Apple写的writeValue部分

if ([aChar.UUID isEqual:[CBUUID UUIDWithString:@"2A39"]]) { uint8_t val = 1; NSData* valData = [NSData dataWithBytes:(void*)&val length:sizeof(val)]; [aPeripheral writeValue:valData forCharacteristic:aChar type:CBCharacteristicWriteWithResponse]; } 

我加了didWriteValueForCharacteristic

 - (void) peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error { NSLog(@"Did write characteristic value : %@ with ID %@", characteristic.value, characteristic.UUID); NSLog(@"With error: %@", [error localizedDescription]); } 

从didWriteValueForCharacteristic打印输出如下:

 Did write characteristic value : (null) with ID Unknown (<2a39>) With error: (null) 

我已经使用了两个不同的心脏监测器和蓝光应用程序(模拟可乐设备),但我得到了相同的结果。

为什么我会得到null的价值和错误didWriteValueForCharacteristic?

你看到的是特征的最后读取值。 既然你从来没有读过它,它是nil 。 您需要显式读取值,以使用readValueForCharacteristic:方法在中心一侧更新它。