le 01-28-2016 10:26 AM
Bonjour,
J'essaye de communiquer par laison série avec un appareil avec Labview. J'utilise le VI serial read and write des exemples.
Lorsque j'envoie une commande, je n'ai pas toujours de réponse... Alors que je devrais toujours en avoir même en cas de problème.
Parfois, j'obtiens une réponse dans le buffer de lecture mais elle n'est pas complète. Je n'ai que la première ligne...
Et d'autres fois, si j'insiste en envoyant plusieurs fois à la suite la commandes, j'obtiens cette erreur:
L'erreur -1073807252 s'est produite à : VISA Read dans VISA Test.vi
Raisons possibles :
VISA: (Hex 0xBFFF006C) Une erreur de dépassement s'est produite en cours de transfert. Un caractère n'a pas été lu par la carte avant l'arrivée du caractère suivant.
Mais je pense que c'est que j'envoie trop de fois la commande.
J'ai testé les parametres de communication (bauds, bits, stop etc...) et les commandes avec Termite, cela fonctionne parfaitement.
Quelqu'un peut il m''aider?
Résolu ! Accéder à la solution.
le 01-28-2016 12:36 PM
Le caractère de terminaison que tu utilises est Retour de chariot (13) et celui par defaut de ton sous-VI 'Configure serial port', est Line feed (10). Branche une constante 13 sur 'termination char'.
le 01-29-2016 01:50 AM
Merci mais cela ne change pas grand chose...
J'ai toujours une partie du message dans le buffer de lecture qui est coupé.
01-29-2016 02:36 AM - modifié 01-29-2016 02:37 AM
Je viens de trouver ! Pour mon probleme de buffer de sortie il fallait y mettre un noeud de retroaction pour enregistrer toutes les trames!
Par contre maintenant j'ai un nouveau soucis. Si j'envoie plusieurs commandes à la suite, ma fenetre de lecture sur la face-avant est vite remplie.
- Comment faire pour la vider entre chaque commande?
- Et comment voir les résultats d'une commande qui envoit des trames en continu? Est ce possible d'avoir un buffer de sortie déroulant?
Merci
le 01-29-2016 02:51 AM
Bonjour,
J'ai modifié ton programme pour répondre à ton premier besoin.
Pour ton deuième problème, il te suffit de laisser tourner tourner ta boucle, en l'état, il viendra remonté des informations présentes à la fréquence de raffraichissement de ta boucle.
Cdt,
Michael
le 01-29-2016 03:15 AM
Merci beaucoup! Cela regle mon 1er probleme.
Par contre je ne comprends pas ta réponse pour le 2eme soucis.
Si je laisse tourner la boucle, la fenetre du buffer de lecture se remplit entièrement et au bout d'un moment je ne vois plus les dernières trames.
01-29-2016 04:07 AM - modifié 01-29-2016 04:11 AM
Salut Marcelito,
Sinon, tu peux tout simplement cliquer droit sur ton buffer de lecture en face avant -> Propriété -> Cocher "Afficher la barre de défilement verticale".
Ainsi, tu auras toutes les réponses reçues durant tout le temps ou le VI était en Run...
J'espère que ça répond à ton souci !
le 01-29-2016 05:00 AM
Merci mais la réponse de mon appareil est trop rapide... 1 trame toutes les 20 ms en continu...
J'ai pas le temps de descendre le curseur en bas de la fenetre...
Il faudrait une lecture inversée dans la fenetre du buffer.
le 01-29-2016 06:07 AM
En fait je m'égare un peu avec cette histoire d'affichage...
Mon problème actuellement est de pouvoir lancer une commande et de pouvoir récuperer la réponse entièrement.
La plupart des messages de sortie se termine par $EOT ou $KO
J'ai donc remplacé mon bouton stop de la boucle while par une comparaison de chaine de caractère du buffer avec les chaines $EOT ou $KO
j'obtiens bien toutes les trames mais mon VI ne s'arrete pas tout seul.
Comment cela se fait il?
Merci encore
01-29-2016 06:37 AM - modifié 01-29-2016 06:38 AM
Hmm, la fonction "Comparaison" compare les chaînes entières. C'est-à-dire que si la chaîne reçue n'est pas exactement la même, le booléen renvoyé sera "False".
Typiquement, en admettant que le message réceptionné soit "Ok $EOT" par exemple, si tu compares cela à "$EOT", ça va renvoyer un "False".
Mais je ne sais pas si ton problème vient de là, car je n'ai pas pu voir ton VI : il est enregistré en LV 15, et je n'ai que LV 14... Peux-tu l'enregistrer pour une version antérieure ?