02-25-2014 06:15 PM - modifié 02-25-2014 06:29 PM
(voir le vi en image et ci-joint en LV2011)
Le Controle booléen "alpha" est false.
Dès que l'on touche à toto, le FP se verouille.
a)
Je m'explique ce comportement en disant que la modification de toto place un event sur la Pile des events statiques de la Structure Event ...
et comme cet event n'est jamais exécuté, cet event n'est jamais "vidé" de la Pile ... ce qui bloquet le FP.
car "Lock Panel until the case for this event completes" = ON"
Il n'est donc pas nécessaire "d'entrer" dans le code de l'event ... le simple fait que l'event soit "enregistré" suffit.(pour bloquer le FP)
b) Mais pour ceci,
avec "Lock Panel until the case for this event completes = ON" (rien de changé de ce côté)
si je remplace le Controle booléen alpha (qui est False), par une simple Constante False ... ça tourne, le FP n'est pas bloqué.
très curieux, non ?
ici, je m'explique cela de la façon suivante :
avec une constante ... le compilateur supprime le code du diagramme "true" de la structure_case.
Pas de diagrame "true", pas de structure Event, pas d'enregistrement de l'event toto-value-change, donc pas de FP bloqué.
Je ne vois pas d'autres explications.
Ce qui m'étonne ... c'est que "allow debugging" est ON ... le compilateur, dans ce cas, ne devrait-il pas s'abstenir de "simplifier" (?)
mes raisonnements sont-ils corrects ??
Résolu ! Accéder à la solution.
le 02-26-2014 02:38 AM
Salut ouadji,
As-tu lu cette page de l'aide de LabVIEW? La dernière partie d'explique le pourquoi du comportement que tu observe 😉
02-26-2014 03:46 AM - modifié 02-26-2014 04:05 AM
Bonjour Benjamin.
Merci pour ton intervention et pour ce lien.
Cette doc explique le comportemennt a ... (mon raisonnement était correct)
mais elle ne donne pas d'explication pour le comportement b
soit pour b : (en faisant tourner mon vi totoLV2011)
avec un Controle_Booléen false ... le FP est bloqué.
avec une Constante_Booléenne False ... le FP n'est pas bloqué.
PS:
ce "comportement" ne vient pas d'un de mes codes, mais d'une autre question postée par Danaé .
Dans l'absolu, placer une Structure_Event dans une Structure_case ... est un ticket gagnant pour avoir des soucis ... je suis contre)
EDIT
cette phrase expliqurait-elle le comportement b ?
"The Event structure handles a queued event when data flow allows the structure to execute."
le 02-26-2014 04:04 AM
Pour le B LabVIEW optimise le code avec ou sans Allow Debugging. Cette option permet seulement de pouvoir utiliser ou non les outils de debug de LabVIEW en "instrumentant" quelque part le code. Cela n'indique pas au compilateur d'optimiser ou non le code.
le 02-26-2014 04:08 AM
ok, mes "2" raisonnements étaient donc corrects.
avec une "confirmation", on passe de la supposition à la certitude, c'est beaucoup mieux "pour avancer".
merci Benjamin.