2013-02-12 1 views
3

Dans mon application, je découvre mon périphérique avec un service donné. Je vérifie ensuite que toutes les caractéristiques recherchées sont présentes avant de passer à autre chose.iOS bluetooth: Erreur inconnue lors de l'écriture de la caractéristique

Quand j'écris une valeur à mes caractéristiques, le rappel didWriteValueForCharacteristic: déclencheur:

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

et donne cette sortie:

Did write characteristic value : <005c> with ID Unknown (<00005004 1212efde 1523785f eabcd123>) 
With error: Unknown error. 

La valeur est correcte, même pour l'UUID 128bit du caractéristique, mais dans mon périphérique je n'ai jamais réellement une valeur écrite.

Des suggestions à ce qui pourrait ne pas être?

+0

Aviez-vous dans la * Console * un message du type: * CoreBluetooth [AVERTISSEMENT] *. Parfois, la vraie erreur est donnée là. Et je ne sais toujours pas pourquoi et comment les attraper ... – Larme

+0

Pas à l'époque. Répondu à ma propre question – chwi

Répondre

4

J'ai d'abord envoyé un WriteWithoutResponse, en changeant cela en WriteWithResponse m'a donné un CoreBluetooth[WARNING] error 13 comme mentionné par @Larme dans les commentaires. Cette valeur corresponded to Longueur de valeur d'attribut invalide, ce qui signifie que j'ai envoyé le mauvais format numérique, c'est-à-dire que j'ai envoyé une valeur de 16 bits alors que le périphérique attendait 8 bits.

La modification du périphérique pour accepter les données 16 bits a résolu le problème.

+0

Comment avez-vous découvert que l'erreur 13 signifie "longueur de valeur d'attribut invalide"? J'ai cherché partout une liste de ces codes d'erreur, sans aucune chance. (Je reçois erreur inconnue 10.) –

+0

@JoeStrout http://developer.apple.com/library/ios/#documentation/CoreBluetooth/Reference/CoreBluetooth_Constants/Reference/reference.html votre erreur est 'CBATTErrorAttributeNotFound' – chwi

+0

Mais quoi est la solution? – Mrug

Questions connexes