le 05-18-2018 07:01 AM
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 !
Résolu ! Accéder à la solution.
le 05-18-2018 08:07 AM
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 ?
le 05-18-2018 08:19 AM
Eh bien c'est très basique pour l'instant, voici mon bout de .vi,
Merci ! 🙂
le 05-18-2018 08:23 AM
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.
le 05-18-2018 08:25 AM
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)
le 05-18-2018 08:34 AM
le 05-18-2018 08:37 AM
en version 2015 😉
05-18-2018 09:04 AM - modifié 05-18-2018 09:05 AM
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.
Ben64
edit: Merci à Phil pour la conversion en LV2015.
le 05-22-2018 06:26 AM
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 !
le 05-22-2018 06:27 AM
Désolé du retard de ma réponse, je n'ai pas pu me connecter avant, merci à tous pour votre aide !
Bonne journée !