2014-11-10 4 views
4

Я пишу данные, используя [peripheral writeValue:startFrame forCharacteristic:cbWriteCharacteristic type:CBCharacteristicWriteWithResponse];, который вызывает «didWriteValueForCharacteristic, как показано ниже»didWriteValueForCharacteristic возвращает characteristic.value утратившим ИОС

- (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]; 

} 

Когда я печать значение «characteristic.value» в сделал write метод возвращает null. Вместо этого он должен предоставлять значение данных для отправки. Когда я печатаю значение charateristics в методе записи: - «<CBCharacteristic: 0x166d0, UUID = D0F0-9DD7-7047, properties = 0x8, value = (null), notifying = NO>» значение появляется null в самом методе записи. Почему это так?

Что я должен сделать, чтобы решить проблему. Заранее спасибо.

+0

Прежде всего попробуйте проверить значение 'error'. Написание может не получиться. – sbeliakov

ответ

4

Вызов didWriteValueForCharacteristic сообщает, что запись с ответом завершена (т. Е. Ответ получен). Он ничего не говорит о значении этой характеристики, поэтому nil является правильным значением.

Значение характеристики могло быть изменено между исполнением вашей записи и приемом ответа.

Если вы хотите получить текущее значение характеристики, вам необходимо выдать запрос на чтение (или подписаться на изменение значения посредством уведомления).

+0

Я выдаю запрос на чтение через уведомление, а также для чтения того же значения, но я не могу получить то же значение –

+0

Нет требования, чтобы значение признака было тем, что вы написали, - это зависит от периферийной реализации , Вот почему 'didWriteValueForCharacteristic' не возвращает значение – Paulw11

+0

, но данные, записанные в методе записи, должны быть такими же, которые могут быть прочитаны с использованием метода чтения через« didUpdateValueForCharacteristic ». Это так? –

Смежные вопросы