le 04-06-2018 03:44 AM
Bonjour,
Je travaille en ce moment sur le pilotage d'appareil depuis LabVIEW. J'ai actuellement 4 appareils dans ma manipulation, j'avais commencé par dialoguer avec chaque appareil indépendamment et je souhaite désormais les confronter dans un seul et même programme. J'ai quelques soucis en terme de priorité car j'ai besoin que par exemple tel appareil me fournisse une donnée, puis qu'un autre m'en fournisse une autre, puis que le premier appareil me redonne une donnée, etc. J'avais pensé passer par une séquence afin de gérer cela mais après lecture sur les forums il apparait clairement qu'il vaut mieux éviter ce genre de fonction. Avez-vous des idées mieux que celle-ci pour résoudre mon problème ?
Résolu ! Accéder à la solution.
le 04-06-2018 04:04 AM
" tel appareil me fournisse une donnée, puis qu'un autre m'en fournisse une autre, puis que le premier appareil me redonne une donnée, etc " ... j'entends que tu as un "séquencement bien précis à respecter". La fonction séquence dont tu parles n'est pas une "fonction", mais une "Structure" (soit, détail). Oui, cette Structure Séquence n'est pas le "top" si tu veux faire du "beau code".
On ne va pas une nouvelle fois ré-ouvrir la polémique ... en gros cette Structure "force" le flux de données ... or, LabVIEW est justement basé sur ce flux de donnée. Elle est utile dans certains cas bien précis (assez rares en réalité) mais quand on peut l'éviter, c'est grandement préférable (pour le moins,je suis de ceux qui pensent cela)
Ceci dit ... tu peux très bien développer ton besoin en utilisant cette Structure Séquence (en termes de "code brouillon"). Quand tu seras arrivé à un code qui te donne ce que tu attends en terme de résultat ... cela nous permettra de "voir" exactement ce dont tu as besoins ... et ensuite, sur base de ce code (qui sera plus un algorithme qu'un code final) nous pourrons peut-être te proposer une architecture adaptée.
le 04-06-2018 04:29 AM
J'ai effectivement pensé à cracher un code brouillon pour illustrer mon propos, le soucis étant que je fais appel à des drivers spécifiques aux instruments que j'utilise (il faudrait donc les télécharger pour les voir apparaitre sur le code, à défaut d'avoir une icône avec un point d'interrogation sinon). De plus il vous faudrait posséder les appareils que j'utilise afin de pouvoir lancer l'exécution, ce qui sera très probablement impossible. C'est pourquoi j'ai tenté d'expliquer mon problème au mieux en croisant les doigts pour que quelqu'un ait une idée ^^
le 04-06-2018 07:35 AM
Pourquoi ne pas nous fournir simplement un diagramme de ce que tu voudrais faire ? Par exemple :
NB : mon diagramme est très grossier, mais c'est pour l'idée
Cela pourrait nous aiguiller un peu à défaut d'un VI 🙂
le
04-06-2018
08:27 AM
- dernière modification le
05-13-2025
11:39 AM
par
Content Cleaner
Pour moi cette situation indique clairement que tu dois utiliser une architecture de machine à états. D'ailleurs c'est ce que Maxime à représenté dans son diagramme.
Ben64
le 04-09-2018 03:22 AM
Merci beaucoup, c'est exactement quelque chose comme ça que je cherchais, je vais me former un peu sur les machines à états et essayer de refaire mon programme sans la structure séquence! Merci encore 🙂