le 01-29-2016 06:44 AM
Merci pour ton aide.
J'ai pensé aussi la même chose. J'ai donc remplacé la chaine de caractere $EOT! par le message en entier mais cela ne change rien...
le 01-29-2016 07:18 AM
Alors...
On va récapituler rapidement :
Si je comprends bien, quand tu envoies un des éléments de ta chaîne déroulante, tu dois réceptionner :
a. Soit
"$REM:Reset Com parameters !
$REM:Modem Firmware Version: !
$MOD0:2002!
$EOT!"
b. Soit
"$KO!"
Malheureusement, ton premier problème était que tu ne recevais pas la chaîne en entier du premier coup. De fait, tu es passé par un registre à décalage pour afficher l'ensemble de ton buffer de lecture (il vaut mieux utiliser un registre à décalage comme te l'as conseillé Michael.C plutôt qu'un noeud de rétroaction...).
Du coup, ça signifie qu'à chaque tour de boucle, tu ne reçois jamais la trame qui pourrait arrêter la boucle en entier, ceci explique pourquoi tu n'arrives pas à arrêter ta boucle, non ?
Il faudrait peut-être comparer l'ensemble du buffer de lecture à ce que tu veux lire, et pas uniquement ce que tu as reçu au tour de boucle en question. C'est ce que j'ai fait dans ma petite modif de ton VI.
Sinon, dans le cas où tu veux uniquement savoir si tu as reçu un "$EOT!" ou un "$KO!", tu peux utiliser le petit truc que j'ai mis dans le diagramme désactivé du VI : Tu recherches l'expression "$EOT!" et "$KO!" dans le buffer de lecture. Dès qu'une des 2 expression est complètement apparue, la boucle s'arrête... C'est pas compliqué, mais ça peut marcher !
le 01-29-2016 07:25 AM
tu as très bien compris le problème et ta deuxieme solution me convient parfaitement!
Merci merci merci!
le 01-29-2016 07:32 AM
Avec plaisir Marcelito !