Discussions au sujet de NI LabVIEW

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

Labview : Communication série avec un périphérique

Résolu !
Accéder à la solution

Bonjour,

 

Sous Labview, j'essaie de communiquer via un port série à un périphérique. En parallèle, j'essaie de recevoir et d'envoyer des données. Je voudrais me placer en mode écoute (Activer la réception sur ce port : Visa read) puis envoyer une commande (Visa write). De ce fait, en se plaçant en écoute avant l'envoie de la commande, je suis sûr de recevoir la réponse du périphérique.

 

Je veux donc envoyer un caractère tout en écoutant sur le même port com la réponse de mon périphérique (J'ai déjà un doute à ce sujet. Avec un port série, on peut lire et écrire en même temps ? )

 

Mon problème est le suivant : En lançant ce programme sous Labview, il se place en écoute mais n'envoie pas le caractère de commande (montage en parallèle). Après le timeout de l'écoute (Visa read), le programme écrit bien le caractère (Visa write) comme un fontionnement série.

 

Comment réaliser des tâches multiples en parallèle sur LabView ? Auriez-vous un exemple ou plus d'information à ce sujet ?

 

Merci,

 

Jérémy

 

0 Compliments
Message 1 sur 6
6 405 Visites

bonjour,

pouvez vous postez le code que vous avez testé.

Cordialement
L.MICOU
0 Compliments
Message 2 sur 6
6 396 Visites

Bonjour Jérémy,

 

Je ne suis pas un spécialiste, mais il me semble impossible de lire et écrire en même temps sur le même UART. J'ai déjà entendu parler de DUART (qui combinent 2 UART sur une même puce), mais je n'ai pas plus d'info que ça là-dessus.

Ceci dit, est-il réellement nécessaire de lire et écrire en même temps à la milliseconde près sur le même port COM ?

Tu n'as pas à avoir peur de "rater" la réponse du périphérique : en réalité, le VISA Read lit un buffer ! C'est-à-dire qu'il lit les derniers octets qui sont arrivés sur le port, qui sont stockés dans une case mémoire de l'ordi, bien au chaud, en attendant d'être utilisé...

Je te propose d'essayer de d'abord écrire sur ton port grâce à VISA Write puis de lire la réponse grâce à VISA Read... Si j'ai bien compris ton problème, ça devrait marcher.
Si le buffer de lecture est trop petit à ton goût, tu peux en changer la tailler grâce à VISA Set I/O Buffer Size.

 

Bilsix.

Bilsix.
Message 3 sur 6
6 384 Visites

Bonjour,


je confirme le fait qu'un UART ne peut pas travailler en "parallèle".

Pour dialoguer avec un équipement, il faut envoyer une commande "Write" si besoin, pour que le produit te réponde.

Tu récupères ensuite la réponse avec un "Read".


Pour dimensionner le nombre de données à lire, plusieurs méthodes par la suite se présente à toi.
- Attendre un certain temps : Interruption de la lecture sur timeout

- Attendre un caractère de terminaison \A : 0xD par défaut.

- Lire un certain nombre d'octet : Utilisation du noeud de propriétés nbre de bytes sur la liaison fortmeent conseillé.

 


Si après une manipulation simple, tu ne relies pas de données, n'hésites pas à mettre une temporisation de 100 ms entre ta requête et ton écoute, il n'est pas rare d'avoir des équipements avec un temps de réponse de l'ordre de 50ms sur port série (spécification présente dans la documentation de l'équipement en général).


Bonne journée,


Michael

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
Message 4 sur 6
6 363 Visites

Bonjour,

 

Merci pour vos réponses !

 

Problème résolu, je suis parti sur un write en série avec un read.

 

Bonne journée,

 

Jérémy

0 Compliments
Message 5 sur 6
6 340 Visites
Solution
Accepté par l'auteur du sujet Jeremy.T

Excellent !

N'hésite pas à passer le topic en "Résolu".

Bonne journée à toi également !

 

Bilsix.

Bilsix.
0 Compliments
Message 6 sur 6
6 337 Visites