Simuler une boucle automatique pour la fonction ReadNFC

  • Simuler une boucle automatique pour la fonction ReadNFC

    Posté par GREGOIRE sur 8 septembre 2024 à 14h19

    Bonjour à tous,

    j’ai développé une application de suivi des mouvements de nos vêtements de travail. Ces derniers sont équipés d’une puce RFID, je peux donc facilement les identifiers via un scan NFC sur smartphones.

    ça fonctionne très bien, mais j’aimerais optimiser l’étape de réception hebdo des vêtements, où l’on reçoit une cinquantaine de vêtements en retour lavage de notre presta.

    Dans l’état actuel j’ai le flux suivant :

    Bouton => Lance ReadNFC => récupération de l’Identifier de la puce => Lookup dans la BDD des vêtements => collecter un certain nombre d’informations (type, taille, etc.) => rappuyer sur le bouton => scanner un nouveau vêtement, etc. etc. Jusqu’à ce que se soit fini => patch dans une liste SP

    C’est l’étape manuelle de déclenchement du scan (appui bouton) que je veux semi-automatiser, car répétitive pour l’utilisateur :

    • j’ai tenté maladroitement de créer une boucle en dupliquant mon bouton pour créer un lien de type select(bouton1) <=> select(bouton2), où à chaque fin de fonction, un bouton appel l’autre en boucle, mais cela est évidemment bloqué par Power Apps pour des risques de boucles infinies j’imagine
    • Ensuite j’ai imaginé utiliser un timer :
      • Premier scan reste manuel via le bouton
      • à la fin du bouton je rajoute :
        <pre class=”language-javascript”>// Démarrer le Timer pour le prochain scan automatique
        UpdateContext({ VarStartTimer: true })
      • J’ajoute un timer, sur sa propriété OnTimerEnd, je colle toute ma fonction OnSelect du bouton, en rajoutant au début :
        <pre class=”language-javascript”>// Relancer automatiquement un nouveau scan NFC
        If(
        VarStartTimer = true,
        UpdateContext({ VarNFC: ReadNFC() });
      • et en rajoutant à la fin :
        <pre class=”language-javascript”>// ne pas relancer le Timer si l'utilisateur à annuler le scan, sinon relancer pour nouveau scan
        If(
        IsBlank(VarNFC.Identifier),
        UpdateContext({ VarStartTimer: false }),
        UpdateContext({ VarStartTimer: true })
        )
      • Propriété “Start” => VarStartTimer

    Dans l’état actuel, je ne peux pas dire que ça je fonctionne pas, mais c’est très peu agile :

    • La propriété “duration” rythme l’enchaînement des scans, l’utilisateur subit, et il arrive que des items vident soient collectés, l’utilisateur peu les suppr., car je lui affiche une galerie connectée à la collection, mais pas top
    • La mise en pause et la reprise de la boucle automatique est laborieuse, pas hyper efficace

    je sais que j’ai en parti le résultat de ce que j’entreprend, mais j’aurais aimé trouvé une solution pour ne pas avoir à sélectionner 50 fois ce fichu bouton

    A dispo pour en discuter, en vous remerciant !

    Nelson a répondu Il y a 1 semaine, 3 jours 2 Membres · 11 Réponses
  • 11 Réponses
  • Nelson

    Membre
    8 septembre 2024 à 14h46

    Hello Grégoire,

    Je n’avais pas fait attention à l’implémentation de cette fonction dans powerapps.

    Pour te remercier 😁

    Voici la solution à ton problème.

    Et oui, tu ne dois pas utiliser de timer, l’utilisation d’inputtext suffira amplement.

    Voici le fonctionnement que tu dois mettre en place :

    1) ton bouton qui va te servir à dire “je commence mes scans”

    2) ce bouton il va enfaite dans son onclick utiliser la fonction SetFocus pour mettre le focus sur un InputText qui va être caché (attention caché pas invisible c’est très important pour la fonction SetFocus !!)

    3) ton InputText dans son évent OnChange, il doit vérifier si on lui rentre bien un code validé (à toi de faire la vérification, si tu as besoin d’aide dis le tout de même je t’aiderai )

    4) si c’est bien un élément valide, tu vas ajouter une nouvelle ligne dans ta collection via la fonction Patch

    5) un petit plus.. Tu peux ajouter une galerie qui te permet d’afficher ce que la personne à scanner.

    6) un bouton pour enregistrer dans ta base de données les données qui sont dans ta collection via un ForAll.

    Ensuite, tu clear ta collection etc etc

    Je ne suis pas chez moi mais si besoin je peux détailler plus amplement ce soir.

    Voilà, si tu as des questions n’hésite pas.

  • Nelson

    Membre
    8 septembre 2024 à 14h49

    Bien évidemment à l’étape 3, après la vérification du code, tu dois toujours reset ton InputText pour permettre l’écriture des codes suivants sans

  • GREGOIRE

    Membre
    9 septembre 2024 à 8h14

    Salut Nelson,

    je te remercie pour ton retour rapide. La reprise est dur ce matin j’ai du mal à appliquer ton mode opératoire ahah.

    mon SetFocus ne détecte que les icones et images de mon écran :

    Je suis dubitatif qu’un autre contrôle ne soit détecté. Le text box que j’ai rajouté dans mon écran est visible, pas groupé, pas dans une galerie, je ne comprends pas pourquoi il ne s’affiche pas.

    J’ai les yeux qui piquent de ce week-end, donc je vais poursuivre mes recherches, mais si tu as une intuition je suis preneur.

    D’ailleurs je ne l’ai pas précisé, mais pour cet outil en particulier je suis sur power apps pour teams, je sais que la version est “lite” par rapport à make power apps, ça pourrait peut-être l’expliquer ?

    Merci !

  • GREGOIRE

    Membre
    9 septembre 2024 à 8h22

    je n’arrive pas à edit mon poste précédent, mais j’ai ce message

  • Nelson

    Membre
    9 septembre 2024 à 9h03

    Hello, est ce que tu pourrais faire un screenshot de l’ensemble de ta fenêtre d’édition pour commencer ?

    Que je puisses voir l’ensemble ?

    Ensuite, pour tester, tu pourrais créé une autre fenêtre (ou un autre powerapps) et rajouter un bouton et un InputText ? Et tester juste la fonction SetFocus ?

    Ceci nous permettra de voir directement si le souci vient du système que tu as déjà mis en place, de power apps pour Teams

  • GREGOIRE

    Membre
    9 septembre 2024 à 9h07

    c’est ce que j’étais en train de faire : sur une app vierge, écran vierge :

    même problème, par contre, dès que j’ajoute un icon ou une image :

    des fois c’est magique power apps, mais dans le mauvais sens du terme … je poursuis mes recherches

  • Nelson

    Membre
    9 septembre 2024 à 9h12

    Heu.. dans ton test.. tu essaies de SetFocus, le bouton lui-même ?

    Tu dois mettre “SetFocus(TextBox2)”

  • GREGOIRE

    Membre
    9 septembre 2024 à 9h26

    fatigué je disais …

    toujours le même dysfonctionnement

  • Nelson

    Membre
    9 septembre 2024 à 9h49

    Ralala :/

    C’est bien malheureux tout ça.

    Et j’imagine que sur une application “normale” c’est ok aussi chez toi ?

  • GREGOIRE

    Membre
    9 septembre 2024 à 9h52

    effectivement sur make power apps ça fonctionne, donc power apps pour teams ne peut pas hériter de setfocus, en tout cas que sur icone et image, va chercher la logique, pourtant, la doc microsoft n’évoque pas de limitation, alors qu’ils le font pour d’autres fonctions, exemple https://learn.microsoft.com/en-us/power-platform/power-fx/reference/function-copy#description

    bon il faut dire que leur article n’est pas à jour, copy fonctionne bien dorénavant … Sais-tu comment report directement à microsoft ?

  • Nelson

    Membre
    9 septembre 2024 à 10h07

    Voilà voilà, vive Power Apps 😅

    J’irai sur le forum officiel pour ouvrir un thread à ce sujet.

    Potentiellement, on aura des indications en plus qu’on ne sait pas.

    En attendant, à l’heure actuelle, je n’ai pas de solutions à te proposer.

    Mais si tu ne le mets pas dans Teams, alors je peux prendre le temps d’expliquer plus clairement la mise en place du système.

Connectez-vous pour répondre.