我正在使用[peripheral writeValue:startFrame forCharacteristic:cbWriteCharacteristic type:CBCharacteristicWriteWithResponse];写入数据,该代码称为“ didWriteValueForCharacteristic ,如下所示”

- (void)peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error
{
    NSLog(@"characteristic.value %@",characteristic.value);
    NSLog(@"Write Data characteristic.value %@",characteristic.value);

    CBCharacteristic * cbReadCharacterstic = [self getCharacteristicWtihCBUUID:MHSW_READ_CHARACTERISTIC_ID];
    [peripheral setNotifyValue:TRUE forCharacteristic:cbReadCharacterstic];

}

当我在did write方法中打印“ Characteristics.value ”的值时,它返回null。
相反,它应该给出要发送的数据的值(value)。当我在write方法中打印特性的值时:-“<CBCharacteristic: 0x166d0, UUID = D0F0-9DD7-7047, properties = 0x8, value = (null), notifying = NO>
值在write方法本身中显示为null。为什么会这样呢?

我该怎么办才能解决。提前致谢。

最佳答案

调用didWriteValueForCharacteristic会通知您带有响应的写操作已完成(即已收到响应)。它没有告诉您有关该特性的值的任何信息,因此nil是正确的值。

在执行写操作和接收响应之间,特征值可能已更改。

如果需要特征的当前值,则需要发出读取请求(或通过notify订阅值更改)。

10-04 10:30