外围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:
方法在中心一侧更新它。