12-30-2013 12:40 PM - modifié 12-30-2013 12:42 PM
Une structure Flat_Séquence dans la "ligne de retour" d'un noeud de rétroaction.
Avec une seule "Frame", aucun soucis ..... mais si j'ajoute une Frame ... terminé ... LV refuse, vi broken.
Est-ce un Bug ?
(pour moi, oui ... il n'y a aucune raison "logique" pour que cela soit "ok" avec une Frame ... et pose problème avec 2)
Et si cela n'est pas un Bug ... quelle serait la raison "cohérente" à ce comportement ?
Merci.
pour tester, ci-joint "toto.vi" en LV2011
Résolu ! Accéder à la solution.
le 12-31-2013 03:03 AM
Salut Ouadji,
Selon moi, l'explication est assez simple:
- La structure séquence déroulé est faite pour que les différentes frames de la séquence s'exécute dans l'ordre de gauche à droite. (Rapelle-toi que cette structure permet de créer du flux de donnée là où il n'y en a pas, ce n'est pas le flux de donnée créé par tes fils qui indique l'ordre d'exécution, mais bel et bien l'ordre des frames).
Lorsque tu mets 2 frames cablées tel que tu le montres, tu essayes de définir une entrée de la 1ere frame comme provenant de la 2eme frame, Or, la 2eme frame s'exécutant après la 1ere, c'est totalement impossible.
Il faudrait alors cabler la structure comme ceci:
Il y a un autre comportement de la structure séquence qui m'a toujours intrigué, c'est le fait que l'on soit capable de sortir de la séquence en cours, et d'exécuter du code en paralèlle de celle-ci avant qu'elle ne soit finie. Cette phrase n'est peut-être pas très claire, mais voici un code qui l'explique:
Cet exemple montre que l'on va piloter la valeur de l'indicateur boléen avec la constante vrai une fois que la 1ere frame est executée, alors que la structure séquence est bloquée dans la 2eme frame en attendant qu'on clique sur le bouton OK. On peut voir ça comme si la struicture séquence n'était pas un seul noeud, mais plusieurs noeuds assemblés les uns à la suite des autres.
Olivier L. | Certified LabVIEW Developer
le 12-31-2013 03:19 AM
Bonjour Olivier,
Ta façon "de voir" la chose est cohérente, et rend ce comportement "logique". (ok)
Pour ton étonnement suivant :
un post inéressant de Darren ici (le post qui a été accepté comme solution)
Cette structure flat_séquence semble être une "chose" créée un peu comme un "électron libre" et non aboutie.
Un reliquat du temps où le scripting était uniquement interne à NI ... un reliquat qui n'est pas forcément très heureux.
Un bon réveillon pour toi Oilivier.
le 12-31-2013 03:39 AM
Sans oublier que cette structure, imparfaite, non-aboutie (connue et reconnue comme telle par NI)
atypique, complètement "hors pistes" dans la hierarchie des Class ...
(la flat_sequence est la seule structure qui n'est pas un Node)
..... est en réalité la Structure la plus utilisée par les débutants.
"Le Débutant", bien souvent ... "fonce dessus" ... sans savoir qu'il s'agit en réalité du plus bel Alien de LV.
le 01-02-2014 04:16 PM
Juste pour ajouter une remarque, après la guerre… L’explication d’Olivier me semble totalement juste. C'est juste un trompe l'oeil!
le nœud de rétroaction est similaire à un registre à décalage. Si dans ton exemple tu remplaces le nœud de rétroaction par une boucle while avec registre à décalage, tu remarques que dans ton exemple, la sortie est « à gauche » et l’entrée « à droite », mais le « trompe l’œil » ne peut pas être réalisé avec 2 états de la structure « flat ». l'entrée doit donc revenir à gauche...
Luc Desruelle | Mon profil | Mon blog LabVIEW |
LabVIEW Architect (CLA) & TestStand Developper (CTD) | LabVIEW Champion
MESULOG | NERYS
01-02-2014 04:32 PM - modifié 01-02-2014 04:32 PM
oui Luc ... parfaitement compris.
et oui, bien évidemment ... que l'explication d'Olivier est totalement correcte.
Merci pour le snippet et le "plus" d'explications Luc, super !