PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → BTLE : les fonctions callback, précisions ?
BTLE : les fonctions callback, précisions ?
Débuté par A-B, 18 déc. 2017 16:40 - 12 réponses
Posté le 18 décembre 2017 - 16:40
Bonjour,

Apres multiples essais sur les fonctions BTLEConnecte(<Périphérique> , <Procédure WLangage>)
et BTLEEtatConnexion(<Nom de la procédure>), je n'arrive pas à les faire fonctionner correctement, c'est-à-dire,
D'abord BTLEConnecte fonctionne bien sans la fonction de callback, par contre si je fais :

BTLEConnecte(Periph,CallbackConnexionBTLE)


Procedure CallbackConnexionBTLE(Periph,Resultat)
SI Resultat ALORS
ToastAffiche("Connexion réussie")
SINON
ToastAffiche("Connexion échouée")
FIN


Aucune connexion n'est faite, la procédure de callback n'est jamais appellée ...
Peut-etre que les toasts ne peuvent pas etre appellé depuis une fonction de callback (modification de l'UI via thread secondaire impossible) ?
Quelqu'un a réussi à la faire fonctionner ?


Ensuite, BTLEEtatConnexion, pareil, fonctionne parfaitement sans le callback mais avec :

BTLEEtatConnexion(CallbackEtatConnexion)


(A noter que je ne suis pas sur de à quel moment appeller cette fonction, j'ai essayé avant et apres la connexion, dans les deux cas le résultat est le meme)

Procedure CallbackEtatConnexion(Periph,EtatConnexion)
SELON EtatConnexion
CAS btleEtatConnecté // Cas reconnexion avec l'appareil
ToastAffiche("Connecté")
CAS btleEtatDéconnecté
SI BTLEEtat() = btActif // En cas de perte de connexion avec l'autre appareil
ToastAffiche("Perte de connexion")
FIN
FIN


Ici, les résultats sont un peu bizarre, des fois la procédure de callback me renvoie un etat connecté alors que le bluetooth est désactivé ????????
Des fois les cas connecté et déconnecté sont inversés ...
Peut-etre que je n'appelle pas la fonction au bon moment ?


Merci de vos réponses ! :)
Posté le 18 décembre 2017 - 17:19
Comment est initialisé la variable Periph ?
Posté le 19 décembre 2017 - 08:48
BTLEInitialise(InitBTLE)

PROCEDURE INTERNE InitBTLE(nEtat est un entier)

SELON nEtat
CAS btActif
BTLEListePériphérique(ProcDétectePériph,60s)
CAS btDésactivé
ToastAffiche("Veuillez activer le Bluetooth",toastCourt)
FIN

FIN

PROCEDURE INTERNE ProcDétectePériph(Periph,signal)
...
Posté le 02 janvier 2018 - 10:43
Je relance le sujet n'ayant aucune amélioration ...

Personne n'utilise BTLE ?
Posté le 05 février 2018 - 10:48
Personne ?
Posté le 29 juin 2018 - 15:12
Bonjour,

J'ai le même problème. On n'entre jamais dans la procédure de call back, suite à l'utilisation de BTLEconnecte.
En fait la connexion réussit , je le vois sur le périphérique, mais on ne va pas activer la call back

Pour moi, c'est un bug.

Une solution a-t-elle été trouvée ?

Laurent
Membre enregistré
27 messages
Posté le 07 août 2019 - 13:30
Bonjour,

j'ai le même problème avec une call back de l'exemple "WM Blueotooth4"
la procédure de call back CB_ChangementValeur n'est jamais activée

BTLECaractéristiqueChangementValeur(caracteristique,CB_ChangementValeur)

Vous avez pu régler votre problème ?

Cordialement
Laurent

--
Laurent
Membre enregistré
1 603 messages
Popularité : +64 (70 votes)
Posté le 09 août 2019 - 08:20
Bonjour Laurent,

J'ai un problème similaire avec les balises Beacon sur Android (Bluetooth Low Energy) :

BeaconDétectePrécis(groupeMusée, ProcDétection)
PROCÉDURE INTERNE ProcDétection(tabInfo est un tableau de beaconInfoDétection)

Cette procédure interne ne fonctionne pas dans certaines applications complexes mais uniquement sur certaines versions d'Android, alors que le même code dans une application simple fonctionne (déjà signalé dans le forum).

Peux-tu tester ton appli sur un ancien matériel Android version 5?
Par contre le code d'A-B plus haut avec deux procédures internes me laisse perplexe.

--
Cordialement
François
Membre enregistré
36 messages
Popularité : +1 (1 vote)
Posté le 16 septembre 2019 - 17:53
Bonjour,


Ca fait 2 mois que je suis sur le même sujet et j'ai une solution.
Il faut que les procédures soit GLOBALE et non interne. L'autre problème pour mon cas est que le téléphone ne doit pas être en veille (écran pas éteint) sinon la procédure callback répond de façon aléatoire.

Voilà voilà
Membre enregistré
1 603 messages
Popularité : +64 (70 votes)
Posté le 18 septembre 2019 - 11:43
Bonjour Sylvain,

Je vais tester ceci.

Juste une question : est-ce que BTLEConnecte(Periph,CallbackConnexionBTLE) doit être dans une procédure globale ou c'est bien les procédures internes comme PROCEDURE INTERNE InitBTLE(nEtat est un entier) qui doivent être réécrites en procédures globales?
Est-ce que cela fonctionne dans ce cas ?

Merci cela fait aussi très longtemps que je n'ai aucune solution. A mon avis ces procédures internes lancent des threads mais qui ne sont pas exploitables dans certains projets pour des raisons inconnues ou non exploitables selon les versions d'Android.

--
Cordialement
François
Membre enregistré
1 603 messages
Popularité : +64 (70 votes)
Posté le 20 septembre 2019 - 15:23
Bonjour Sylvain,

G E N I A L :merci:

Cela fonctionne aussi pour les fonctions Beacon en Bluetooth !
Des mois de recherches, je comprends tout à fait !

PS : j'affiche les valeurs des Beacon Bluetooth par toastaffiche. Lorsque je coupe mon téléphone (écran éteint) et que je le rallume avec mon mot de passe, mes valeurs continuent de s'afficher alors que l'appli n'est plus visible.
Mais cela dépend peut-être du matériel ou de la version d'Android. En Android 9, no souci!

--
Cordialement
François
Posté le 01 décembre 2020 - 13:37
Bonjour François,
pour ma part, je n'ai pas abouti. j'ai même dû laisser tomber un temps ce projet à caractère éducatif certes.
j'ai mis en procédure globale la call back (et même la procédure d'appel pour le cas où)
Cela avait régle mon problème de BTLEConnecte mais pas celui de la call back CB_ChangementValeur de BTLECaractéristiqueChangementValeur(caracteristique,CB_ChangementValeur) qui n'est jamais appelée.
Ai-je oublié quelque chose ?

Je suis sur Android 8, j'ai essayé android 6. Rien ne change
Laurent
Posté le 14 décembre 2020 - 16:55
Bonjour

J'ai ce problème avec BTLECaractéristiqueChangementValeur qui active/désactive les indications/notifications

Le problème n'est pas résolu par une mise en procédure générale de la call back.
Vous avez utilisé cette fonction ? Cela fonctionnait ?
Cordialement
Laurent