2013-09-22 1 views
1

Je n'ai aucune idée de ce que je fais mal. didUpdateValueForCharacteristic n'est pas appelé comme prévu. J'ai besoin d'envoyer une chaîne assez longue, donc je la découpe en morceaux de 5 caractères et je les "met à jour" à intervalles de 0.03s. Voici le code:Caractéristique Bluetooth de base ne mettant pas à jour la valeur

The view controller code.

Il est conforme aux protocoles nécessaires, et tout fonctionne très bien, à l'exception du fait que didUpdateValueForCharacteristic n'est appelée une fois pour le nom de la liste et une fois pour le morceau « START ».

Comment résoudre ce problème?

Répondre

1

Vous définissez le NSTTimer de ne pas répéter:

[NSTimer scheduledTimerWithTimeInterval:1 target:self 
    selector:@selector(sendList) userInfo:nil repeats:NO]; 

De cette façon, il fonctionne une fois et s'arrête. Remplacez repeats par YES et les envois commenceront réellement à se produire. Utilisez plus de journalisation pour comprendre ces problèmes. :)

note il y a quelques autres problèmes avec votre code aussi:

  1. vous ne devriez pas dormir sur le thread principal. Les gestionnaires sont actuellement initialisés pour utiliser la file d'attente principale.
  2. Vous ne devriez pas libérer le périphérique tant qu'il est connecté ou se connecte (problème dans viewwillDisappear:)
  3. La manipulation de la liste est vraiment « mystérieuse ». Objective-C est un langage magnifique, vraiment expressif, utilisez-le à votre avantage. (Les paramètres nommés me manquent tellement en Java)

Si vous rencontrez d'autres problèmes, n'hésitez pas à les poser dans des questions distinctes.

+0

Incroyable. La manière de "minuterie" de le faire fonctionne parfaitement. Merci beaucoup!! – Macro206

+0

@ Macro206 Je suis heureux que cela a aidé! Continuez à faire «core-bluetooth» c'est la voie de l'avenir :) – allprog

+0

Vous avez juste voulu lire des données? vous n'avez écrit aucune donnée? Je suis ayant un problème similaire que je suis en train d'écrire un message en utilisant la méthode d'écriture et que vous voulez lire les mêmes données en utilisant la méthode de lecture, mais je ne reçois pas messgae dans cette méthode.Ne trouver aucune solution. –

Questions connexes