PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV Mobile 2024 → BTLE : les fonctions callback, précisions ?
BTLE : les fonctions callback, précisions ?
Iniciado por A-B, 18,dic. 2017 16:40 - 12 respuestas
Publicado el 18,diciembre 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 ! :)
Publicado el 18,diciembre 2017 - 17:19
Comment est initialisé la variable Periph ?
Publicado el 19,diciembre 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)
...
Publicado el 02,enero 2018 - 10:43
Je relance le sujet n'ayant aucune amélioration ...

Personne n'utilise BTLE ?
Publicado el 05,febrero 2018 - 10:48
Personne ?
Publicado el 29,junio 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
Miembro registrado
27 mensajes
Publicado el 07,agosto 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
Miembro registrado
1.603 mensajes
Popularité : +64 (70 votes)
Publicado el 09,agosto 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
Miembro registrado
36 mensajes
Popularité : +1 (1 vote)
Publicado el 16,septiembre 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à
Miembro registrado
1.603 mensajes
Popularité : +64 (70 votes)
Publicado el 18,septiembre 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
Miembro registrado
1.603 mensajes
Popularité : +64 (70 votes)
Publicado el 20,septiembre 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
Publicado el 01,diciembre 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
Publicado el 14,diciembre 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