le 08-19-2010 04:41 AM
Bonjour,
J'ai un appareil avec lequel je communique par rs232, je tente de faire un sorte de programme un peu comme un driver (malheureusement pour moi celui ci n'existe ni chez NI ni chez le fournisseur du produit), mais j'ai quelques soucis, par exemple j'ai une fonction pour choisir l'unité, et une autre pour la lire.
J'ai donc fait un programme qui fonctionne bien, à présent je voudrais integré ça dans une boucle, afin de pouvoir changer l'unité quand je le souhaite durant une manip.
Le souci est que le programme tel que je l'ai fait, lit mon unité à un timer donné, seulement moi je voudrais lire seulement après avoir changé l'unité, et ne pas envoyé la commande à tout bout de champs (tant que je ne la change pas il n'y a pas de raison de lire).
Donc je pense qu'il faut faire une structure condition, mais je ne sais pas comment exprimer ma condition qui serait "quand l'unité change", en terme de programmation.
Si quelqu'un peut m'aider...
Merci d'avance.
le 08-19-2010 06:06 AM
Bonjour,
Si j'ai bien compris ton explication, je pense que la structure evenement serait le plus simple:
Tu peux utiliser differents evenements tel que Value change. Dans ton cas tu utilises ta fonction pour choisir l'unite et pour la lire dans cette boucle, puis tu place autre chose dans le cas timeout par exemple. Sur la gauche tu peut recuperer ta nouvelle ou ton ancienne valeur directement.
le 08-20-2010 03:59 AM
Merci, effectivement ça m'a beaucoup aidé.
Je n'avais jamais utilisé de structure évenement.
Du coup j'ai un souci, quelle condition donner pour sortir de la condition sans pour autant devoir faire un stop dans ma boucle?
Peut etre est ce avec le timer mais comment le configurer?
Merci d'avance.
le 08-20-2010 04:29 AM
Le petit sablier en haut a gauche correspond au nombre de millisecondes au bout des quelles le cas timeout va etre executé si il ne s'est produit aucun des evenements.
Tu souhaite pouvoir sortir de quelle condition?
Par contre il ne faut pas abuser de ces structures, ne pas en mettre plusieurs sur un vi, ou les un dans les autres, sinon tout va planter tout le temps.
le 08-23-2010 03:14 AM
Bonjour,
Je ne parviens pas à cabler le sablier, ça me met une erreur.
En fait comme c'est pour communiquer avec un instrument, j'ai une partie des instructions qui vont dans la structure condition (par exemple je veux lire l'unité seulement lorsque je l'ai changée), mais également des instructions qui se font à intervalle regulier (exemple lire la valeur de la pression toutes les 30 secondes).
J'ai donc une boucle while avec toutes ces instructions, dont une partie dans la structure évenement, mais seulement ça bloque à ma structure évenement, puisque tant que je ne fait pas de selection d'évenement, ça ne sort pas de cette structure.
Comment faire?
merci d'avance.
le 08-23-2010 03:50 AM
Dans ce cas la, il faudrait surement utiliser deux boulce while en parallele, dont une avec l'evenement. As-tu bien les deux evenement (time out et valeur changée)? Car si tu n'as plus le timeout dans tes cas, tu vas avoir une erreur si tu cable le sablier. Quand tu edites les evenements tu peux aussi choisir l'option de verouiller la face avant ou non pendant l'execution, il faut donc la decocher dans ton cas.
Si jamais ca ne reponds pas bien a ton probleme, il y a toujours la possibilite d'utiliser un registre a decalage pour voir si ta valeur est changée, et d'utiliser un case avec le test de comparaison comme selecteur.