le 01-15-2013 04:49 AM
Bonjour LV membres du Forum,
D'abord, je vous souhaite une bonne et heureuse 2013!!.
Je suis un peu loin avec mon projet, mais j'ai l'impression que plus j´avance, plus les problèmes se posent ......
J´ envoi des commandes vers le port de communication et je reçois les messages en retour. Maintenant, je voudrais passer en revue ces messages automatiquement afin de savoir si le test est réussi ou échoué. Je ne sais pas comment le faire? quelles sont les possibilités dans Labview pour faire cette interprétation des résultats?
Dans Tab Control je voudrais examiner en page 2 (contrôle de table) toutes les lignes avec l'octet commençant par A1 11 Si les octets sont corrects l'opérateur booléen dan main principal S'allume sinon elle reste eteint.
1-Où puis-je écrire l'octet correcte attendue?
2-comment comparer ces Octet correct avec ceux obtenus dans le Tableau(particulierement les octet A1 11)?
3- comment connecter les resultats avec les operateurs Booléen de ma page Main?
Merci d'avance pour les réponses
Annexe: VI et SubVI (Labview-version 8.6)
cordialement
Gisele
Résolu ! Accéder à la solution.
le 01-16-2013 12:10 PM
Bonjour Gisèle,
Je ne suis pas sûr d'avoir totalement compris votre besoin mais j'ai l'impression que vous n'êtes pas loin de votre but avec ce qui est déjà implanté dans votre VI.
Voici un exemple de code qui vous permet de rechercher une chaîne et d'en tirer un booléen :
(VI en 8.6 en pièce jointe)
En espérant que ça vous aide.
Cordialement,
Mathieu P. | Certified LabVIEW Associate Developer
National Instruments France
le 01-17-2013 02:20 AM
Bonjour Mathieu,
merci beaucoup. je vais essayer votre proposition dans mon Programme et vous recontacte si sa fonctionne.
Bonne Journée
Cordialement
Gisele
le 01-18-2013 06:17 AM
Bonjour,
j´ai essayer d´inserer le VI que Mathieu m´a proposé dans mon programme, mais en remplaçant ,,Tableau d´origine'' par Table Control de mon Programm Principal mais sa ne fonctionne pas.je reçois partout ,,OFF''. j´ai l´impression que le Programme n´arrive pas a reperer la chaine de caractere A1 11 du Tableau.
Lorsque j´essaie de relier le fil a ,,Before Substring'' au niveau de rechercher une impression j´ obtiens un résultat different.
1) Pourquoi la chaine A1 11 n´ est pas détecter a partir de ce Programme?
2) Puisque j´obtiens plusieurs A1 11 dans le ,,Table Control'' et qui se differencie chacun par son 3 ieme Byte, comment étendre le Programme et dire par exemple: recherche les chaine qui commence par A1 11, ensuite regarde le Byte qui suit. pour le 1 er cas si c´ est 03 alors ON, sinon OFF. pour le 2 ieme cas si c´ est 00 ON, sinon OFF ect.....dont
le 1 er booléen serait ON si j´ ai resu A1 11 03 0A
le 2ieme booléen serait ON si j´ ai resu A1 11 00 0A.
Merci infiniment pour votre aide.
ci joint le VI
cordialement
Gisele
le 01-22-2013 06:55 AM
Bonjour,
1) Le problème de détection est simple tout en étant bien caché . Curieusement, lorsque je tapais moi-même la chaine avec A1 11, elel était bien détecté. J'ai du créer un indicateur pour afficher les symboles particulier avant de comprendre : vos différents octets (tels qu'ils sont écrits dans votre table) sont séparés par un caractère \t (c'est à dire une tabulation). Pour ma part, j'utilisais un \s (c'est à dire une espace).
Donc soit dans votre table il faudra remplacer les tabulations par des espaces, soit la chaine de recherche doit le contenir à la place d'une espace (cf ci-dessous)
2) Pour la recherche dans la suite de la chaine, vous pouvez vous baser sur l'une des sorties de la fonction de recherche d'une expression, celle en face du petit "c" qui vous renvoit la chaine après la chaine recherchée.
Ainsi pour une chaine à la base de la forme "A1 11 00 0A", vous aurez sur la sortie c " 00 0A".
Ensuite vous pouvez soit réutiliser la fonction de recherche d'expression soit comparer avec l'opérateur = (la chaine A est-elle égale à la chaine B ?)
Cordialement,
Mathieu P. | Certified LabVIEW Associate Developer
National Instruments France
le 01-22-2013 10:24 AM
Bonjour Mathieu_P,
merci infiniment pour vos suggestions.
ci-joint le VI avec les changements dont vous m´avez proposé. Cependant sa ne fonctionne pas á 100%.
j´aimerai que la structure soit executée si et seulement si A1 11 a été detecté. si la chaine qui arrive n´est pas A1 11, ignoré.
si oui pour le 1er A1 11 detecté, comparer les bytes d apres avec 00 0A. si c´est le cas alors ,,ON''. cád les booleen seront executés seulement pour les lignes avec A1 11. les autres lignes (les autres chaines de caractere) peuvent etre ignorés.
Comment implementer cela??.
Merci a vous pour vos Suggestions
Bonne soirée
Gisele
le 01-24-2013 02:26 AM
Bonjour á tous,
juste pour savoir si quelqu´un pourrait avoir une idée sur mon probleme énoncé plus haut??
Merci d´avance
Bonne Journée
Gisele
le 01-25-2013 08:30 AM
Vous pourriez faire ceci :
Mathieu P. | Certified LabVIEW Associate Developer
National Instruments France
le 01-25-2013 10:39 AM
Merci merci merci.
c est que c´était pas aussi difficile. encore merci
Bon Week end
Cordialement
Gisele
le 03-08-2013 08:32 AM
Bonsoir,
désolé de révenir sur ce sujet. juste que mon programme ne fonctionne plus correctement quand j essaie d evaluer plusieurs Tests á la fois. Et pour ceux qui ne savent pas de quoi il est question je me suis dit qu´ils pourront lire les posts précédents pour comprendre.
ci joint le nouveau Programm.
Lorsque j éxecute un seul test, cäd le cas oü une seule réponse est attendue, le Programme fonctionne bien. mais lorsque j éxecute plus d un seul Test l´evaluation des resultats est fausse, parceque le Programme recommence la détection dès la premiere ligne.
Exemple dans le Tableau default envoyé. j attend 3 réponses dont les trames A1 11 02 0A, A1 11 01 0A et A1 11 03 0A. Apres le Test j´ai dans le tableau les trames A1 11 02 0A, A1 11 00 0A et A1 11 00 0A. dont je devrais avoir dans le Test results True, False, False. mais j obtiens False partout.
Question: j ´aimerai savoir comment faire pour que aprés la premiere évaluation, la deuxieme puisse commencer á partir de la ligne qui suit l´endroit oü la premiere détection a été faite dans le tableau et non toujours recommencer au début du tableau.
Merci d´avance pour vos réponses
Cordialement
Gisele