PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → [WM27 Android] problème Bluetooth, Abonnement et écriture
[WM27 Android] problème Bluetooth, Abonnement et écriture
Débuté par Cezame, 09 jan. 2023 08:53 - 2 réponses
Posté le 09 janvier 2023 - 08:53
Bonjour,

Pour les besoins d'une application je dois me connecter à un périphérique BLE afin de collecter des données.

Je me connecte sans problème, m'abonne à une caractéristique et collecte les données.

Mon soucis est qu'à chaque réception d'une information je dois répondre pour accuser réception de l'info. Sans réponse le périphérique retransmet 3 fois l'info et coupe la connexion si pas de réponse.

Je dois donc simplement écrire dans une caractéristique pour accuser réception.

Problème il semblerait que si je reçois une info pendant que j'envoie l'accusé ensuite je ne reçois plus aucune donnée via l'abonnement.

SI PAS BTLEConnecte(COL_Bluetooth.gBTLEPériphérique) ALORS
COL_Bluetooth.gbConnexionRécepteurEnCours = Faux
SINON
//Service et Caractéristique Commande
COL_Bluetooth.gServiceCommande = BTLERécupèreUnService(COL_Bluetooth.gBTLEPériphérique,COL_Bluetooth.gsServiceCommande)
SI PAS ErreurDétectée ALORS
COL_Bluetooth.gCaractéristiqueEcriture = BTLERécupèreUneCaractéristique(COL_Bluetooth.gServiceCommande,COL_Bluetooth.gsCaractéristiqueEcriture)
//Abonnement Lecture
POUR TOUT service de COL_Bluetooth.gBTLEPériphérique.Service
SI service.UUID = sServiceUUID ALORS
POUR TOUT caractéristique de service.Caractéristique
SI caractéristique.UUID = sCaracteristiqueUUID ALORS
// Caractéristique trouvée
// On s'abonne
COL_Bluetooth.gCaractéristiqueAbonné = caractéristique
BTLECaractéristiqueChangementValeur(caractéristique,COL_Bluetooth.ChangementValeur)
COL_Bluetooth.gbBluetoothConnecté = Vrai
RETOUR
FIN
FIN
FIN
FIN
Procedure ChangementValeur
//COL_Bluetooth.bufRetourPosition contient l'accusé de réception à envoyer
Multitâche(-5)
BTLECaractéristiqueEcritValeur(COL_Bluetooth.gCaractéristiqueEcriture,COL_Bluetooth.bufRetourPosition)


Pour vérifier j'ai testé avec un autre type de périphérique Bluetooth qui lui ne demande pas d'accusé de réception.

Je m'abonne à une caractéristique et je tente d'écrire sur une autre via un bouton, après plusieurs tentatives j'ai le même phénomène plus rien n'est collecté au niveau de l'abonnement!

Avez-vous rencontré ce problème et si oui quelle est la solution?

Par avance merci pour votre aide.

Pour info, j'ai testé sous WM26 et WM27 même problème. Je ne testerai pas sous WM28 car je ne travaillerai jamais plus sur une nouvelle version de WM avant l'update 2

Autre info, j'ai essayé de couper l'abonnement avant envoi et relancer l'abonnement après envoi ça semble fonctionner mais cette solution n'est pas envisageable dans mon cas car je perds des données et sans l'accusé de réception le périphérique coupe la connexion.
Posté le 13 janvier 2023 - 15:31
Après essais avec plusieurs périphériques Bluetooth, nous reproduisons le plantage sans message ni arrêt sur un point d'arrêt et ce systématiquement.

Ceci apparait dans les cas suivants :

1 - Utilisation d'un Multitache dans la procédure lancée lors du changement de valeur (abonnement)

2 - Écriture dans une caractéristique dans la procédure lancée lors du changement de valeur

3 - Écriture manuelle dans une caractéristique lorsque la procédure de changement de valeur est lancée. (utilisation d'un bouton pour envoi manuel)

Il est indéniable qu'il y a un bug dans Windev Mobile!

SupTech contacté qui bien entendu nous dit qu'aucun problème n'est signalé.

Toujours de bugs sous WM27 malgré la sortie de WM28 ça devient vraiment difficile de travailler
Posté le 16 janvier 2023 - 18:15
Après avoir créé un petit projet pour le support technique pour mettre en évidence le bug (testé sur deux types de périphériques Bluetooth différents.
Réponse du jour, vous devez passer par une assistance directe sur abonnement.
Est ce que quelqu'un aurait un périphérique Bluetooth pour tester et mettre en évidence le bug ?