2

J'ai une application qui communique iDevice-to-iDevice sur Bluetooth LE en utilisant le framework CoreBluetooth. Pour l'une de mes caractéristiques, j'envoie une date encodée avec NSKeyedArchiver (comme dans le accepted answer for this question).CoreBluetooth échoue lors de l'écriture de données codées avec NSKeyedArchiver?

Lorsque cela se produit, je reçois:

CoreBluetooth[WARNING] Unknown Error: 9 

Et le périphérique ne reçoit même pas la demande d'écriture, ni ne jette aucune erreur.

Du côté central, il effectue les opérations suivantes:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self.myDate]; 
[self.connectedDevice writeValue:data forCharacteristic:self.myCharacteristic type:CBCharacteristicWriteWithResponse]; 

Où myDate est un NSDate valide.

Je sais que selon la documentation Bluetooth Core 4.0, volume 2, partie D, section 2, le code d'erreur 0x09 est la limite de connexion dépassée. Cependant, cela n'a aucun sens dans cette situation (il n'y a qu'un seul lien entre les deux).

Un fait intéressant est que si je viens de coder une chaîne et de l'envoyer, il n'y a pas de problème:

NSData *data = [self.localTestString dataUsingEncoding:NSUTF8StringEncoding]; 
[self.connectedDevice writeValue:data forCharacteristic:self.myCharacteristic type:CBCharacteristicWriteWithResponse]; 

Le périphérique reçoit la demande d'écriture, peut décoder correctement, et peut l'accepter sans problème.

Quelqu'un a-t-il une idée de ce qui se passe?

Répondre

0

Quelle est la taille de vos données d'archivage par clé et de votre chaîne de test locale? Il semble que vous dépassiez la taille en écriture de la caractéristique.

Questions connexes