Discussions au sujet de NI LabVIEW

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

Mon VI fonctionne mieux en mode animation

Résolu !
Accéder à la solution

Bonjour,

J'ai un petit problème, alors mon VI est sensé détecter un caractère sur le port série puis lire la trame complète. Cependant, lorsque je lance en mode normal il détecte soit pas assez de Bits soit trop, et quand je le met en mode animation il marche au top.

Des idées ?

Je vous remercie

 

Ps: je vous met le VI en pièce jointe

0 Compliments
Message 1 sur 9
3 454 Visites
Solution
Accepté par Kuzuri

je ne peux pas l'ouvrir je n'ai que LV2015

quelques hypothèses

-manque une petite tempo ?

-flux mal géré ?

0 Compliments
Message 2 sur 9
3 451 Visites

pareil, je ne peux pas l'ouvrir, je suis en LV2014 🙂

0 Compliments
Message 3 sur 9
3 420 Visites

Merci de vos réponses rapides. Désolé hier j'étais claqué.

C'est mon premier VI sur LabView, donc je ne saurai quoi te répondre.

Je vous mets un screen pour que vous voyez comment c'est fait.

0 Compliments
Message 4 sur 9
3 416 Visites

Pour le moment j'ai rajouté un reteneur de flux, cela semble marcher.

J'ai trouver ça en cherchant les tempos. Merci à vous.

Si j'ai un problème je relancerai le topic.

Bonne journée

0 Compliments
Message 5 sur 9
3 406 Visites

Attention avec la propriété "Bytes at port", j'ai déjà eu des soucis avec ça!!
Si la trame possède toujours le même nombre de caractères, je préfère utiliser une constante plutôt que d'interroger le port pour connaitre la taille du contenu!

 

Pour le port, je n'ai malheureusement jamais utilisé la gestion d'évènements, j'ai toujours ouvert le port série, puis utilsé le port en dialoguant write(commande)/read(réponse) et finalement récupéré les données utiles sans oublier de vider le flux et de fermer le port en fin d'exécution.

 

Autre remarque: tes chaines ne sont pas initialisées en entrée de boucle, le mieux est d'y connecter des chaines vides (même si c'est pas obligatoire); d'expérience, une initialisation manquante peut poser des soucis sour LV, tout semble fonctionner correctement, mais finalement, des valeurs se perdent sans qu'on sache pourquoi, et ça vient le ça (notamment avec les tableaux).

0 Compliments
Message 6 sur 9
3 390 Visites

Le nombre de caractères varie selon la trame que je doit lire.

Merci du conseil pour les chaines, mais c'est des indicateurs. J'avais découvert le problème d'initiation avec les tableaux.

 

Je vous remercie de votre rapidité.

0 Compliments
Message 7 sur 9
3 386 Visites
Solution
Accepté par Kuzuri

Quand on a des tailles de trames variables, il y a deux manières de fonctionner :

1- Utiliser le noeud de propriété Bytesatport, en mettant une temporisation suffisante après la requête pour que le buffer est le temps de se remplir

2-Faire une boucle 'while' avec la fonction VISA Read, où tu relis qu'un seul octet à la fois. La sortie de ta boucle se fait sur la reconnaissance d'un caractère de terminaison que ton système fournit à chaque trame. On récupère la trame ainsi formé au travers d'un tunnel concaténé (pour LV > 2014) (sinon registre à décalage avec concaténation à chaque cycle)

3- On paramètre avec la fonction VISA Configure le caractère de terminaison fournit par ton équipement dans sa réponse, et on met un nombre d'octet supérieure au nécessaire dans la fonction "Visa Write" (celle-ci te fournira la trame dès que le caractère de terminaison sera reçu.


J'ai quitté mon emploi, donc plus de labview sous la main pour ouvrir ou donner des exemples,donc j'espère avoir été assez claire.

 

Bonne journée,

Michael

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 8 sur 9
3 364 Visites

Salut Michael, 

On fait mon but est d'espionner le bus série, je ne connais donc pas le caractère de fin. J'ai opté pour votre solution 1 car les 2 autres sont impossibles dans mon cas.

Je vous remercie

0 Compliments
Message 9 sur 9
3 358 Visites