05-02-2016 05:10 AM - modifié 05-02-2016 05:12 AM
@ Marcelito : " ... et au livre de M. Desruelle que j'ai progressé "
oui ... je n'aime pas trop faire ce qui pourrait ressembler à une "pub" (pourquoi le ferais-je (?), je n'y ai pas le moindre intérêt)
Mais c'est vrai que ce bouquin est un "bon bouquin", bien fait ... et en plus, en français. (les bouquins en français sur LV ne sont pas légion)
Oui, il existe certains autres bons livres, je pense à LabVIEW for everyone (3eme ed) ... mais ce livre date déjà de 10 ans ! (et LV a beaucoup évolué en 10 ans)
Et oui, ce livre est en anglais ... ce n'est pas un obstacle majeur ... mais il faut quand même reconnaître, que pour un francophone, un bouquin en français est quand même un "plus".
C'est simplement plus facile à lire.
Bon code Marcelito.
Bonne journée à tous.
le 05-02-2016 06:10 AM
ouadji a écrit :Je n'aime pas trop faire ce qui pourrait ressembler à une "pub" (pourquoi le ferais-je (?), je n'y ai pas le moindre intérêt)
Mais c'est vrai que ce bouquin est un "bon bouquin"
@ouadji : Merci pour le compliment. J’ai une pensée pour toutes les personnes qui m’ont aidées dans cette aventure, 3 sont devenues LabVIEW Champion cette année…
@ Marcelito : " ... et au livre de M. Desruelle" Merci, luc va suffire, et j’espère qu’il va te guider (regarde bien la figure 4.57 pour faire ton driver VISA : Un caractère de terminaison est arrivé, par exemple dans le cas d’une communication sur un bus série). Tu peux me contacter si besoin, je te répondrai avec plaisir.
c'est un post très sympa, bonne journée à tous! A+ Luc
Luc Desruelle | Mon profil | Mon blog LabVIEW |
LabVIEW Architect (CLA) & TestStand Developper (CTD) | LabVIEW Champion
MESULOG | NERYS
le 05-02-2016 08:26 AM
Bonjour,
J'ai essayé de comprendre vos remarques. C'est vraiment sympa d'avoir 2 cadors avec qui discuter!
J'ai donc repris le driver de la LIRIS suivant les bons conseils de Luc 😉
- Un vrai vi init
- Un vi par commande envoyée
- un sous-vi write et read de VISA pour l'appareil LIRIS
Pour le code exemple, je ne sais pas ce que tu attends précisement, peux tu détailler?
Pour la suppression de la boucle de lecture série, qui attend le caractère $EOT ou $KO pour sortir, j'ai tenté en faisant un sous-vi "LIRIS write read ss loop" mais si je l'utilise je n'obtiens que la première ligne du buffer lorsque je l'intégre à une commande...
L'utilisation du caractère de terminaison lors de l'initialisation est un "reste" de mes tests... C'est la sans conviction. Mon appareil étant une contruction maison je n'ai pas de fiche technique du constructeur. Je sais juste que lorsque j'utilise termite pour communiquer par USB, dans les paramètres de termite il y a cela "transmitted text: append CR-LF" et lui me sort d'un coup tout le buffer en entier. Il y a quelque chose qui doit m'échapper...
Sinon j'ai fait un petit projet pour que vous puissez controler si j'ai bien compris vos améliorations et qu'on puisse discuter dessus. Il récupère à la fin les chaines A,B et C ainsi que le firmware.
Lorsque j'envoi la commande "R 00" j'obtiens cette réponse normalement:
$REM:Reset Com parameters !
$REM:Modem Firmware Version: !
$MOD0:2016!
$EOT!
Lorsque j'envoi la commande "C NumeroLIRIS Frequence"
$REM:Set high sensitivity!
$REM:Set Frequency to 868MHz!
$REM:Set Com parameters !
$EOT!
Lorsque j'envoi la commande "G"
$REM:Firmware Version!
$STA0:2017!
$REM:displacement polynome A B C!
$STA2:0;1;0!
$REM:Temperature polynome A B C!
$STA3:0;0;0!
$EOT!
Pour toutes les commandes si je recois $KO! c'est que cela n'a pas marché...
Je souhaiterais que pour chaque commande envoyée avec pour réponse $KO! que je relance la commande. Et qu'après quelques essais infructueux avoir une erreur qui stoppe le VI
Pour la commande "G" vu que j'attends quelque chose en sortie qu'en plus que les indicateurs chaine A,B et C et firmware soit bien remplies.
Merci!
05-02-2016 09:35 AM - modifié 05-02-2016 09:44 AM
Je viens d'effectuer des tests avecTermite en changeant les caractères de terminaison. Il faut mettre "append CR ou append CR LF" pour que cela fonctionne avec ce logiciel.
Si je rentre "D" comme paramètre de caractère de terminaison lors de l'initialisation dans labview et que j'envoi ensuite la commande "G" j'obtiens cela:
$R
Soit les 2 premiers caractères de la réponse classique...
D'après ce que dit Luc
Je ne comprends donc pas pourquoi il arrete la lecture après 2 caractères.
le 05-02-2016 10:07 AM
il y a le caractère de fin de transmission et celui de fin de réception.
Dans le init VISA, c'est le fin de réception (tu reçois une trame depuis l'instrument). Il est configuré à D (en hexa), soit « \r » (en string) donc carriage return (ou CR). Nous sommes bien OK ?
car j’ai le sentiment que tu parles de celui de transmission, caractère à ajouter à une trame en écriture. Je me trompe ?
C’est quoi « append CR » pour toi ?
C’est quoi §R ? je remarque que Termite a répondu, donc il a transmission d’une trame de données $RCR (l’API VISA va détecter le CR, retourner les données du buffer mais sans la caractère de fin, soit uniquement $R)
en passant, c’est quoi ce nom Termite ? (kermite la grenouille)...
Luc Desruelle | Mon profil | Mon blog LabVIEW |
LabVIEW Architect (CLA) & TestStand Developper (CTD) | LabVIEW Champion
MESULOG | NERYS
le 05-02-2016 10:32 AM
Effectivement il y avait confusion dans mon esprit.
Je parlais de celui de transmission ou il faut ajouter CR (qui correspond a mon append CR) ou CR-LF au commande.
Je ne connais pas le caractère de fin de réception de mon appareil...
Vu les messages recus, j'avais donc mis dans ma boucle jusqu'à avoir $EOT! ou $KO! qui termine tous les messages (sauf un qu'on verra plus tard)
Lorsque je teste maintenant sans faire de boucle sur EOT ou KO avec par exemple la commande C, j'obtiens les 2 premiers caractéres de la réponse soit
$R
au lieu de
$REM : set high sensitivity!
$REM :set Frequency to 868MHz!
$REM : set Com parameters !
$EOT!
Pour Termite c'est un soft pour communiquer par liaison Serie, comme l'hyperterminal mais en mieux. Au moins on retiend vite le nom lol.
Ce que je n'arrive pas à comprendre aussi c'est que Termite sans lui dire un caractère de fin de réception précis, me donne l'ensemble du buffer... Je ne sais pas comment il fait pour savoir que tout est arrivé...
le 05-02-2016 11:06 AM
Tu peux fair une copie écran d'un VI de lecture (nb bytes est à combien? mettre à 100)
Luc Desruelle | Mon profil | Mon blog LabVIEW |
LabVIEW Architect (CLA) & TestStand Developper (CTD) | LabVIEW Champion
MESULOG | NERYS
le 05-02-2016 11:07 AM
Marcelito a écrit :Pour Termite c'est un soft pour communiquer par liaison Serie, comme l'hyperterminal mais en mieux. Au moins on retiend vite le nom lol.
Ce que je n'arrive pas à comprendre aussi c'est que Termite sans lui dire un caractère de fin de réception précis, me donne l'ensemble du buffer... Je ne sais pas comment il fait pour savoir que tout est arrivé...
il faut peut-être regarder la configuration de kermite, car la magie n'est pas
Luc Desruelle | Mon profil | Mon blog LabVIEW |
LabVIEW Architect (CLA) & TestStand Developper (CTD) | LabVIEW Champion
MESULOG | NERYS
05-02-2016 11:48 AM - modifié 05-02-2016 11:58 AM
Le nombre de bits à lire est déterminé par le noeud de propriété bytes a port.
Si je modifie pour mettre 100 par exemple, j'obtiens avec la commande "C" cela:
$REM:Set high sensitivity!
Soit juste la première ligne... Si j'augmente ce nombre, cela ne change rien....
Est ce que le saut de ligne peut poser problème lors de la lecture?
Car dans la réponse j'ai des sauts de ligne.
Pour termite, j'ai deja regardé sur le site du constructeur mais je n'ai rien vu la dessus.
le 05-03-2016 06:25 AM
Bonjour,
Je suis toujours coincé par cette histoire de boucle qui se termine lorsque on a $KO ou $EOT lors de la lecture.
Si je l'enlève, je n'ai qu'une partie du message...
Je suis donc obligé de concatener le buffer jusqu'à avoir $KO ou $EOT.
J'ai fait une variante en concaténant le buffer un certain nombre de fois avec une boucle for. Mais ca demande d'ajuster le nombre d'itération pour chaque commande...
Je sais pas comment m'en sortir...