En utilisant les fonctions VISA, à la place des anciennes fonctions série, on peut définir le caractère de fin et une durée limite d'attente (timeout) qui permet de reprendre la main si le spectro ne répond pas au bout d'un temps prédéfini.
Pensez à vider le buffer de réception AVANT d'envoyer la commande LM, car il peut contenir des caractères issus d'un communication précédente avortée. Auquel cas, il deviendrait impossible de lire quoi que ce soit, sauf à développer une fonction d'analyse de string évoluée.
Exemple de pb : une comm interrompue précocement laisse dans le buffer les caractères suivants :
456 RC LF
On envoie LM
Ce qui arrive ensuite dépend de la manière de lire et décoder les caractères.
Par exemple, si on lit une longueur fixe, on obtient :
456 RC LF 123, ce qui n'a pas de sens
Si on attend le LF, on obtient
456 RC LF, la valeur num sera absurde, mais la valeur suivante semblera correcte, puisqu'on laisse dans le buffer 123456 RC LF. Sauf qu'on sera décalé dans le temsp, puisque on lira la valeur précédente !
etc...
CC
Chilly Charly (aka CC)
E-List Master - Kudos glutton - Press the yellow button on the left...