From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
le 02-21-2012 05:12 PM
Bonsoir à tous,
Tout 1er contact pour moi avec la "state machine".
Je me dis, je fais faire clignoter une Led avec une machine à états
et pourquoi pas (autant se faire plaisir) ... je vais déclencher le clignotement par un "event"
go.
L'event fonctionne bien et déclenche le clignotement de la Led (led1).
La led clignote sans interruption (normal)
ensuite ... terminé ... mon front_panel est bloqué
plus aucun accès au boutons stop_A ou stop_B
impossible d'arrêter la boucle While "A" (le clignement de la Led) via le bouton stop_A
et donc impossible d'arrêter la boucle While "B" ... de toute façon le bouton stop_B ne réagit plus sur le front panel.
Je ne comprends pas !
déja ... pourquoi le bouton stop_A est-il devenu inaccessible, m'empéchant de mettre fin à la boucle While "A" ???
et donc d'arrêter le clignotement de la Led. Il n'y a apparemment aucune raison.
Si la led clignote, c'est donc la preuve que la boucle While_A "tourne",
et si While "A" tourne, le bouton stop_A est donc bien dans le flux de données, et est donc "lu".
(???)
Merci à tous,
Résolu ! Accéder à la solution.
02-21-2012 07:15 PM - modifié 02-21-2012 07:23 PM
2hrs plus tard,
J'ai amélioré le modèle
(bcp de recherches, la structure Event est une chose nouvelle pour moi)
Manifestement,
1) un While autour d'un Event est indispensable.
2) le Time-Out ... important également !
Je peux stopper l'event. (lock front panel "off" dans edit events)
le 02-22-2012 01:54 AM
Bonjour,
C'était bien le lock front panel qui bloquait.
Pour la boucle while c'est que la structure évènement ne permet d'éxecuter que le code pour un seul évènement, il faut donc une boucle pour qu'elle les gère tous.
Un petit conseil: il faut éviter de mettre du code qui prend du temps dans une structure évènement, pour justement qu'elle puisse être réactive.
L'idéal ici est de mettre une machine à état dans le timeout, les actions de l'utilisateur vont juste changer l'état suivant.
le 02-22-2012 03:49 AM
Bonjour
pouvez-vous donner un exemple de la structure événement dans un time-out?
Merci
02-22-2012 06:38 AM - modifié 02-22-2012 06:39 AM
A mon avis la boucle B est inutile, voici un exemple dans lequel le clignotement est géré par le timeout de la structure evenement
le 02-22-2012 07:14 AM
Le Select avec un false sur le cas false est une façon originale de faire un ET
02-22-2012 07:19 AM - modifié 02-22-2012 07:20 AM
En effet, j'envisage de le breveter ....
le 02-22-2012 07:37 AM
Les snippets perdent les définitions des événements liés à des controles de face-avant. C'est pareil pour les variables locales, on dirait que les références des controles de face avant sont perdues. c'est un bug connu ça ?
02-22-2012 02:03 PM - modifié 02-22-2012 02:04 PM
Les snippets perdent les variables locales ... oui, j'ai remarqué ça aussi.
Concernant la Led qui clignote, j'aime bien ça moi:
histoire de gagner 1 porte et 3 cycles machines
(pas besoin d'initialiser la rétroaction)
02-23-2012 02:14 AM - modifié 02-23-2012 02:14 AM
ouadji a écrit :histoire de gagner 1 porte et 3 cycles machines(pas besoin d'initialiser la rétroaction)
C'est un bon réflexe de chercher à optimiser, mais là pour ce qu'il y a à faire, à moins de vouloir faire tourner ça sur un 486 (et encore), ça revient à couper les cheveux en quatre