le 12-08-2016 02:29 AM
Bonjour à tous,
Je fais l'acquisition d'un inclinomètre à l'aide des outils VISA.
J'envoi une commande et ensuite je récupère avec VISA Read, un buffer qui se remplit au fur et à mesure de l'acquisition.
La période entre chaque nouvelle ligne est de 20 ms. C'est très rapide et je ne peux pas le changer.
Par exemple, voici mon buffer en sortie:
$REM:Period!
$PER0:20!
$RTD:012;46;0000;c5b0;0000;010a!
$RTD:012;46;0000;c5b0;0000;010a!
$RTD:012;46;0000;c5b0;0000;010a!
$RTD:012;46;0000;c5b0;0000;010a!
...
Comment puis-je extraire de ce buffer qui évolue au fil du temps, par exemple 1 ligne sur 10?
Merci d'avance.
Résolu ! Accéder à la solution.
le 12-08-2016 03:20 AM
Salut,
La réponse est dans la question : tu prends une ligne sur X.
A chaque nouvelle ligne tu incréments un compteur, puis tu fais le modulo X de ce compteur, si le résultat est 0 alors tu utilises la ligne lue.
ps : je dis "égale à 0", mais ça pourrait être n'importe quelle autre valeur, à toi de choisir.
le 12-08-2016 03:31 AM
Merci pour ton aide. Mais je ne vois pas trop comment l'intégrer à mon vi d'acquisition.
le 12-08-2016 03:50 AM
Si j'ai bien compris ton souci : tu veux afficher une ligne sur X dans ton indicateur chaîne ?
Si c'est le cas, dans ta boucle while, tu lis ton buffer, tu comptes le nombre de lignes que tu as dedans. Tu ne prends que les 1/X lignes voulues, puis tu les ajoutes à ton indicateur chaîne.
La détection d'une ligne peut se faire par le caractère fin de ligne (s'il y en a) ou par le "!" qui semble être récurrent à chaque fois.
le 12-08-2016 04:03 AM
Le vi ci-dessus est celui que j'utilise pour l'acquisition. L'indicateur chaine affiche l'acquisition en cours.
Je souhaiterais pouvoir extraire du buffer une ligne sur 10 durant l'acquisition.
C'est au niveau du comptage de lignes que je bloque. Le caractère "!" effectivement est récurrent.
Toutes les lignes commencent par $RTD: et se finisse par "!".
12-08-2016 04:29 AM - modifié 12-08-2016 04:29 AM
Voilà un snippet en 2015.
C'est une idée (non testée, je te laisse cette phase) à mettre dans ton VI.
Le principe est de trouver chaque chaîne d'une ligne complète, si c'est le cas, l'ajouter à la chaîne (selon la valeur du modulo), sinon attendre la suite de la chaîne jusqu'à avoir une ligne RTD complète, etc etc.
le 12-08-2016 05:40 AM
Merci beaucoup. Je vais regarder cela en détails