le 10-18-2017 02:45 AM
Bonjour,
Je réalise un programme qui en gros utilise une structure production/consommation avec liste d'attente pour faire de l'acquisition et l'afficher dans un diagramme sur une face avant.
De façon générale, je gère ma face avec une structure condition qui exécute un programme selon l'état de ma face avant ("initialisation", "acquisition", "attente", "quitter",etc...)
Au lancement de l'application, le programme va dans la condition "initialisation", exécute son bout de programme et va dans l'état "attente".
Cet état "attente" est lui géré par une structure événementielle qui va exécuter des bouts de programme selon les boutons sur lesquels va cliquer l'utilisateur.(je clique sur bouton marche=>on va dans l'état "acquisition" dans lequel la boucle production conso se lance; on clique sur la croix de fermeture =>ça va dans l'état "quitter" et une pop up apparait pour demander validation de la fermeture, etc...)
Mon problème est le suivant : ma boucle prod/conso ne se termine que si on clique sur un bouton stop ou si une erreur survient. Si l'utilisateur clique sur la croix de fermeture du VI, l'application plante.
J'ai essayé de rajouter une structure événement "fermeture face avant?" dans la boucle production, ça fonctionne : j'annule l’événement, ça termine ma boucle prod/conso et on va dans l'état "quitter" mais si ensuite j'annule la fermeture de la face avant grâce à ma pop up, impossible ensuite de fermer l'application. On a beau cliquer sur la croix de fermeture rien ne se passe.
Ma structure événement dans l'état attente ne revient jamais dans l’événement "fermeture face avant?" , il reste dans celui du time-out.
Où faut-il que je place la structure événement pour que cela fonctionne?
Autre solution, peut-on griser la croix de fermeture d'un VI lorsque je suis en acquisition et la réactiver ensuite?
Voici quelques photos de mon code.
Merci d'avance.
Résolu ! Accéder à la solution.
10-18-2017 05:35 AM - modifié 10-18-2017 05:36 AM
Bonjour,
Vous pouvez utiliser les nœuds de propriété en ayant pour référence votre VI. Comme le montre l'exemple que je vous fournis ci-dessous qui permet d'activer ou désactiver la croix de fermeture du VI.
Cordialement.
Baba59
le 10-19-2017 03:58 AM
merci ça fonctionne parfaitement.
le 10-19-2017 05:37 PM
Je passe par ici ... petit commentaire, sans prétention particulière.
Quand tu places sur le BD un noeud de propriété (ou de méthode) de la palette Application Control, tu déposes sur ton BD un noeud de Classe "application". Tu peux toi-même modifier la Classe (voir image), et transformer ton noeud "application" en noeud "VI" (ou toutes autres Classes). Une fois que tu as ton noeud de Classe VI il n'est plus nécessaire d'y câbler la Référence de "ton VI". En effet, en l'absence de Référence, les propriétés (ou méthodes) du noeud concerneront d'office le VI dans lequel il se trouve. Ceci dit, un noeud de propriété ou de méthode est polymorphique, câbler une Réf à son entrée Référence fera que le noeud adaptera automatiquement sa Classe au type de Ref qu'il trouvera à son entrée Référence, comme tu as fait toi-même. (mais en l'occurrence tu peux ensuite retirer la Ref "ce VI"). Voila, juste pour pointer qu'il existe "différentes façons de". (les "Classes" dans LV est un monde en soi).
le 10-23-2017 02:13 AM
Bonjour Ouadji,
merci pour l'information je ne savais pas du tout que les Nœuds pouvaient s'adapter automatiquement si on ne met pas de référence en entrée.
Bonne journée à vous.
Cordialement.
Baba59
le 10-23-2017 03:39 AM
C'est l'inverse Baba.
La Classe d'un noeud s'adapte si on câble une Référence à son entrée.
le 10-23-2017 08:43 AM
D'accord, merci pour l'information 🙂