Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Evaluation des résultats

Résolu !
Accéder à la solution

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

Tout télécharger
0 Compliments
Message 1 sur 16
3 781 Visites

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 :

Recherche octet.png

(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


Journées techniques : des fondamentaux aux dernières technologies pour la mesure et le contrôle/comm...

0 Compliments
Message 2 sur 16
3 761 Visites

Bonjour Mathieu,

merci beaucoup.  je vais essayer votre proposition dans mon Programme et vous recontacte si sa fonctionne.Smiley heureux

Bonne Journée

Cordialement

Gisele

0 Compliments
Message 3 sur 16
3 753 Visites

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

       

0 Compliments
Message 4 sur 16
3 735 Visites

Bonjour,

 

1) Le problème de détection est simple tout en étant bien caché Smiley heureux. 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)

tab.png

 

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


Journées techniques : des fondamentaux aux dernières technologies pour la mesure et le contrôle/comm...

0 Compliments
Message 5 sur 16
3 707 Visites

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

0 Compliments
Message 6 sur 16
3 698 Visites

Bonjour á tous,

juste pour savoir si quelqu´un pourrait avoir une idée sur mon probleme énoncé plus haut??Smiley gêné

Merci d´avance

Bonne Journée

Gisele

0 Compliments
Message 7 sur 16
3 685 Visites
Solution
Accepté par l'auteur du sujet Gisele

Vous pourriez faire ceci :

test.png

Mathieu P. | Certified LabVIEW Associate Developer
National Instruments France


Journées techniques : des fondamentaux aux dernières technologies pour la mesure et le contrôle/comm...

Message 8 sur 16
3 668 Visites

Merci merci merci.

c est que c´était pas aussi difficile. encore merci

Bon Week end

Cordialement

Gisele

0 Compliments
Message 9 sur 16
3 664 Visites

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

0 Compliments
Message 10 sur 16
3 587 Visites