From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discussions au sujet de NI LabVIEW

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

comment faire reconnaitre mon caractère de fin de trame par VISA Read

Bonjour à tous,

 

Je dois programmer une IHM en communication avec un microcontrolleur. Nous avons donc décidé du protocole de communication et de l'allure des trames que ces deux entités doivent s'envoyer.

Cependant, en effectuant quelques tests sur la fonction Terminaison Character (dont la valeur est laissée par défaut 0xA), je n'ai pas réussi à trouver de moyens de la faire fonctionner.

J'ai pour celà essayé d'inscrire un string avec au milieu de ma phrase un \n mais il n'était pas pris en compte.

Seul le passage à la ligne (enter) permettait de mettre fin à la lecture de la trame.

 

Je vous joins mon code, peut-être une erreur est-elle présente dans celui-ci.

 

Mon but est de savoir dans quel language (hexa, ascii,..) un caractère sera reconnu par cette fonction et quel est ce caractère, car pour l'instant ce n'est pas évident pour moi.

 

Dans un second temps, si vous connaissez un exemple labview de création d'une trame je serais preneur. J'ai une petite idée sur la façon dont les créer mais je deviens de plus en plus pressé par le temps.

 

Merci d'avance,

Cordialement,

Orbieu

0 Compliments
Message 1 sur 9
4 581 Visites

Ci joint le vi que j'avais oublié de joindre.

 

PS: Je fais tourner ce VI car j'ai soudé les pattes TX et RX de mon port COM1. Donc peut-être qu'il ne runera pas pour vous

0 Compliments
Message 2 sur 9
4 580 Visites

IL faut que tu demandes un nombre d'octet fini supérieur à ta trame, pour que ce soit le caractère de fin de trame qui soit le limitant ;).


Ton vi retouché en pièce jointe.


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 3 sur 9
4 576 Visites

Sauf erreur de ma part ton vi tourne sur labview 2014.

Je ne peux le lire car je tourne sur 13.0.1.

 

Serait-il possible de le faire passer sur ma version de labview ?

 

Merci d'avance.

0 Compliments
Message 4 sur 9
4 574 Visites

Désolé, j'avais pris la peine de le faire, mais j'ai pas choisi le bon fichier au moment de joindre -_-.


Bonne journée,

“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
Message 5 sur 9
4 555 Visites

Re bonjour,

 

Merci pour l'explication sur le nombre de bytes à lire, c'est vrai que je n'y avais pas pensé.

J'ai donc placé une constante fixée à 100 sur le "byte count" de "VISA Read", mais je n'arrive toujours pas a trouver quel caractère je dois écrire dans mon "write buffer" pour que le "VISA Read" sache qu'il faut qu'il arrête de lire les données.

 

Merci d'avance,

 

PS: Depuis que j'ai set une constante sur le "byte count" j'ai également une erreur de timeout à la fin de chaque test

 

0 Compliments
Message 6 sur 9
4 551 Visites

Orbieu,


C'est l'équipement avec lequel tu communiques qui va te donner le caractère de fin de ligne à utiliser. Tu devrais trouver l'information dans sa documentation.

Les classiques sont \n(0xA) ou \r (0xD), ou la combinaison des deux (CRLF).


Soit tu trouves l'information dans la documentation, soit tu fais le test manuellement, classiquement, la majorité des appareils répondent à la requete *IDN? , donc en lançant cela en utilisant les 3 types de caractère de fin de ligne, de manière expérimental tu devrais avoir ta réponse.


Bon courage,

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 7 sur 9
4 543 Visites

Ce que je ne comprends pas c'est que dans ce programme je fais à la fois l'émission et la réception - write et read.

 

Donc je devrais être capable de simuler ce caractère théoriquement ?

 

Car des tests avec un appareil extérieur ne sont pas actuellement possible, j'aurais aimé vérifier que je comprenais bien cette fonctionnalité pour bien l'utiliser le moment venu.

 

D'autre part, j'ai essayé de chercher des exemples traitant de la création et de l'envoi d'une trame (bit de start / type de la trame / data / crc / bit de fin) mais je n'en ai pas trouvé. En connaitriez-vous ?

 

Merci encore,

Cordialement,

Orbieu

 

 

0 Compliments
Message 8 sur 9
4 537 Visites

Il est tout à fait possible de simuler toi même le caractère de fin de chaîne.

En fait, il te suffit d'ajouter ce caractère à la trame que tu insères dans le "write" par concaténation.

La fontion Visa Read, va rechercher automatiquement ce caractère si tu le demandes dans la configuration de ton initialisation.

Dans le cadre d'essai d'émission réception de lien série, tu peux faire aisément un rebouclage du port série de ton pc ( Rx relié sur Tx en mettant un jumper sur les pins 2&3 de ton sub d9).


Ainsi tu pourras relire directement ta trame. Attention toutefois, les ports série n'étant pas "bufferisé", il faut que tu es de tache qui tourne en parallèle, une d'émission et une de réception, sinon tu ne verras rien.

 

Bon courage à toi pour la suite.


Cdt,

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 9 sur 9
4 532 Visites