Bonjour,
LabVIEW exécute ses diagrammes suivant le principe du flux de données. Ceci signifie qu'un noeud du diagramme (fonction, structure, sousVI) ne fournit ses sorties que lorsque toutes les entrées du noeud sont fournies et que si le code relatif au noeud a finit de s'exécuter. Lorsque un sous-VI est appelé par un VI principal, le flux de données "rentre" au niveau du sous-VI. Seul le sousVI est exécuté, le VI appelant est en sommeil jusqu'à ce que le noeud (le VI appelé) ait finit son exécution. Le flux de données reprend au niveau du VI appelant une fois le noeud exécuté.
En checkant ton VI, il n'y a pas de code qui s'exécute en parallèle avec le sous-VI (la boucle While est bloquée tant que le sous-VI n'a pas finit son exécution). Si il y avait une seconde boucle While en parallèle avec la première, LabVIEW exécuterait les 2 boucles dans 2 threads différents et partagerait le temps processeur entre les 2 boucles afin de switcher d'un thread à un autre et de donner une apparence d'exécution en parallèle.
Dans ton VI, ce n'est pas le cas, une fois le sous-VI appelé, le VI principal est bloqué et ne fait plus rien tant que le sous-VI n'a pas terminé son exécution. Le sous-VI est appelé de manière synchrone. On peut dans LabVIEW appeler un sous-VI sans bloquer le VI appelant avec la technologie VI Server (appel asynchrone)...mais ceci est un autre sujet.
Cordialement.
Matthieu G.
National Instruments
Message Edité par Kerouac le 07-07-2005 10:49 AM