Discussions au sujet de NI LabVIEW

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

Envoyer des commandes via fichier .txt

Résolu !
Accéder à la solution

Bonjour, 

 

Je débute en LabView. Je souhaite créer un programme qui vient lire les commandes SCPI dans un fichier .txt et qui les transmet à l'appareil. Pour l'instant j'arrive à lire mon fichier txt, afficher toute mes commandes SCPI qui sont écrites dans le fichier .txt, choisir la commande souhaitée et l'envoyer à l'appareil. Mais je ne vois pas comment lire toute les commandes les unes après les autres en ajoutant un sleep entre chacune d'elles. Pouvez-vous m'aiguiller ? 

 

Merci et bonne journée !

0 Compliments
Message 1 sur 10
4 615 Visites

Salut ponsc,

 

Déjà, bravo, tu as réussi à faire pas mal de choses !

 

Peux-tu envoyer ton .vi qui réalise tout ce que tu listes pour qu'on puisse voir plus en détail comme intégrer le séquencement des envois ?

Bilsix.
0 Compliments
Message 2 sur 10
4 597 Visites

Eh bien c'est très basique pour l'instant, voici mon bout de .vi,

 

Merci ! 🙂

0 Compliments
Message 3 sur 10
4 592 Visites
Solution
Accepté par l'auteur du sujet ponsc

Je ne sais pas comment tu construits ton fichier texte, mais j'imagine que chaque commande est l'objet d'une ligne dans ce fichier.
Si c'est le cas, il est alors facile de lire ce fichier texte et le convertir en tableau de chaine (texte), il te suffit alors de lire chaque ligne du tableau de manière séquentielle, l'envoyer et attendre le temps nécessaire avant de passer à la suivante.

Message 4 sur 10
4 589 Visites

La piste de PhilB58 est à suivre...

 

ponsc, peux-tu renvoyer le .vi enregistré dans une version de LabVIEW plus ancienne ? Je n'ai que LabVIEW 15... (Fichier -> Enregistrer pour une version précédente)

Bilsix.
0 Compliments
Message 5 sur 10
4 586 Visites

S'agit-il uniquement de commandes ou y a-t-il également des interrogations (queries)?

 

Ben64

0 Compliments
Message 6 sur 10
4 575 Visites
0 Compliments
Message 7 sur 10
4 572 Visites
Solution
Accepté par l'auteur du sujet ponsc

Dans ton vi tu ouvre et ferme la session VISA à chaque itération, c'est à éviter. Également tu essais toujours de lire 32 bytes, si tu envois une commande et non pas une interrogation tu auras une erreur de timeout.

 

En supposant que chaque ligne est une commande voici je que je ferais. En faisant un clic-droit sur Read From Text File sélectionne Read Lines. Tu auras alors à la sortie de cette fonction un tableau des lignes de ton fichier.

On valide que la ligne n'est pas vide (e.g. seulement un retour de chariot), on cherche s'il y a un point d'interrogation (si oui alors on fait également un read sinon on ne fait qu'un write) et ensuite on fait une pause de 200 ms.

Command From File.png

Ben64

 

edit: Merci à Phil pour la conversion en LV2015.

Message 8 sur 10
4 565 Visites

Ok, j'ai modifié ça. On n'ouvre et ne ferme pas VISA dans une boucle, je retiens 😉 Pour le nombre de bytes, je l'ai mis "au hasard", j'ai vu que ça fonctionnait comme ça, pourtant je n'envoie que des commandes, pas d'interrogations.

Merci beaucoup pour ton exemple je n'avais pas connaissances de la fonction Read Lines, ça m'aide beaucoup. J'ai modifié un peu ton exemple en faisant un premier READ en début de programme pour vérifier que la communication est correcte, du coup j'ai supprimer l’événement "on cherche un point d'interrogation". Une fois que je suis sûr que l'appareil fonctionne correctement je ne lui envoie que des commandes. 

Sinon pour la fonction WRITE, j'ai remarqué qu'elle ne passait pas forcément "du premier coup", du coup j'ai ajouté une loop et effectivement des fois je dois envoyer ma commande 15 fois avant que l'appareil la prenne en compte, mais c'est une histoire de cadencement je pense...

 

Merci beaucoup !

0 Compliments
Message 9 sur 10
4 498 Visites

Désolé du retard de ma réponse, je n'ai pas pu me connecter avant, merci à tous pour votre aide ! 

Bonne journée !

0 Compliments
Message 10 sur 10
4 497 Visites