IOS BLE通信写入值;

时间:2014-08-15 17:47:32

标签: ios bluetooth-lowenergy core-bluetooth

我正在编写我的第一个IOS应用程序,与Bluegiga BLE芯片进行通信。我需要读写值。我遇到的问题是,我第一次运行程序时无法写入值。我没有得到任何错误。它显示最后一个写为当前值的值。当我重新运行程序时,正确的值会正确更新。它推迟了我的项目。任何建议都会有很大帮助。我正在使用以下代码段。

CBPeripheral        *servicePeripheral;
NSData              *readIndex;
CBCharacteristic    *readIdxCharacteristic;

[servicePeripheral writeValue:readIndex forCharacteristic:readIdxCharacteristic type:CBCharacteristicWriteWithResponse];

- (void) peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error
{

    if ([characteristic isEqual:readIdxCharacteristic] ){
        [peripheral readValueForCharacteristic:readIdxCharacteristic];
        NSLog(@"Read Index Characteristic Written Check%@",characteristic.value);
    }
}

1 个答案:

答案 0 :(得分:1)

您的问题是您在致电characteristic.value后立即访问readValueForCharacteristic,但Core-Bluetooth需要一些时间才能联系外围设备,请求特性值以及回复的外围。

如果您参考documentation for this method,您会看到 -

  

<强>讨论

     

当您调用此方法来读取a的值时   特点,外围称呼   peripheral:didUpdateValueForCharacteristic:error:方法   委托对象。如果特征值成功   检索后,您可以通过特征值来访问它   属性。

因此,您需要在characteristic.value didUpdateValueForCharacteristic:委托方法中访问CBPeripheral