Discussions au sujet de NI LabVIEW

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

Communication série : optimiser la lecture

Résolu !
Accéder à la solution

Bonjour à tous,

 

J'ai un toujours un doute sur comment programmer au mieux la lecture d'un port série avec Labview.

J'ai actuellement un capteur qui envoie des données toutes les 2 secondes. Si j'utilise l'exemple "Continuous Serial Write and Read" en solo elle fonctionne comme je le souhaite.

La boucle ne s'actualise que toutes les 2 secondes puisque le programme attend le caractère de fin de chaine (dans mon cas \n).  Cela me permet donc de récupérer à chaque fois l'ensemble de la chaine de données sans avoir à la recomposer si je n'avais pas activé l'option (attendre caractère de terminaison).

Mon problème apparait quand je souhaite intégrer cette lecture de port série dans un boucle principale qui tourne approximativement à 1000 ms. Ma boucle principale, qui exécute d'autres choses ne doit pas être ralenti par cette lecture du port série.

 

Idéalement, je souhaiterai pouvoir vérifier très fréquemment s'il y a des données de dispo à lire sur le buffer du port série.S'il n'y en a pas, la boucle s'exécutera bien en 1000 ms. Si le buffer n'est pas vide, alors on lit la chaine de données jusqu'au caractère de terminaison, ce qui devrait prendre moins de 1000 ms.

 

Est ce possible de faire ainsi et comment? Ou bien avez-vous une autre idée à me conseiller ?

 

Merci beaucoup,

User

0 Compliments
Message 1 sur 3
3 915 Visites
Solution
Accepté par l'auteur du sujet User79

Tu peux essayer un truc du genre

 

ReadSerialWhenData.png

Le cas 0 ne contient rien et read buffer est une chaine vide. Donc s'il y a du data dans le buffer (Bytes at Port différent de zéro) on lira le data jusqu'au caractère de terminaison (j'ai mis 1024 de mainière aléatoire pour être certain que cette valeur est supérieure au nombre de bytes de ton data). Si tu veux que le délais de 1 seconde se produise seulement dans le cas où il n'y a pas de data, met le Wait dans le cas 0.

 

Ben64

Message 2 sur 3
3 892 Visites

Salut Ben64,

C'est exactement ce que je cherchais. Merci beaucoup.

User

0 Compliments
Message 3 sur 3
3 887 Visites