Communauté des utilisateurs LabVIEW Discussions

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

Remplacer les points pr des virgules dans un tableau de string

Résolu !
Accéder à la solution

Sentiment partagé !

 

Merci du lien sur les sondes, j'en sais un peu plus dorénavant 🙂

 

je me permets de te poser une dernière question: dans mon programme plutôt mal fichu car sans aucun sous VI, j'ai intégré une séquence empilée dans une boucle for.

Mon raisonnement était le suivant: j'ai 5 étapes qui doivent être effectuées à la suite pour chaque commande du générateur, donc il faallait répéter cette suite d'actions n fois, d'où le choix de ces structures.

J'avais de nombreux soucis de timeout, dûs à une mauvaise architecture visa (ouvertures et fermetures pas toujours respectées).

J'ai décidé de fermer les visa dans chaque étape, mais cela alourdit énormément mon code, et donc je voulais savoir si cela était forcément obligatoire, ou si je pouvais (sans que cela engendre d'erreurs) fermer les visa en sortie de la boucle for.

Je ne suis pas persuadé d'avoir été très clair 😕

(aujourd'hui, j'essaie de remplacer le plus de choses possibles par des sous VI, pour alléger et simplifier le tout)

 

merci encore une fois Luc 🙂

0 Compliments
Message 11 sur 16
1 824 Visites

salut, si tu fermes la ressource VISA à chaque itération de la boucle for..., "toi, tu vas avoir des problèmes".Smiley très heureux

 

Normalement lorsque tu utilises un instrument:

  1. faire le driver d'instrument : voir driver instrument LabVIEW, avec 1 fonction ou vi par action sur l'instrument + Open + Close
  2. utiliser une structure de projet pour gérer les actions (type QDMH, tu vas rechercher sur le site de NI ou Partie 1/3 : Créer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW - Pour... tu vas créer un état par actions (Open + état Read + état truc + Close) et tu vas gérer les transitions d'un état vers l'autre.
  3. il n'y a qu'un Open et Qu'un close (sauf sur gestion particulière d'erreur, comme perte de connexion, mais pas si bug du développeur!

tu peux regarder par là Darwin appliqué à LabVIEW : l’évolution de la gestion des données

 

Les 10 commandements du développeur LabVIEW

 

après je peux te recommander un livre

LabVIEW "Programmation et applications" édition Dunod, jusqu'au niveau pour l'examen CLD

 

A suivre !

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 12 sur 16
1 820 Visites

merci de m'avoir guidé vers ces ressources documentaires, très utiles !

 

je me permets juste d'apporter une précision concernant ma réponse précédente:

L'ouverture du visa était avant la boucle for, donc pour moi le fait de fermer le visa pour chaque étape de la séquence empilée (pour chaque "action") ne posait pas de souci car l'ouverture se relancer pour l'étape suivante et ainsi de suite 🙂

C'est possible que je dise des bêtises, dans ce cas je vais me taire !

 

J'y ai jeté un coup d'oeil et je les garde sous la main pour me documenter et pour m'améliorer.

Bon, je dois l'avouer, je ne respecte pas beaucoup des 10 commandements, je suis encore un jeune padawan qui doit encore beaucoup travailler 😄

 

je pense que je vais remplacer ma séquence compilée par une machine à état. Ce qui me retenait pour utiliser cette tecnhique, c'était le fait que je devais "répéter" plusieurs fois la machine à état. Mais je vais voir si je peux utiliser une boucle for à la place de la boucle while pour la machine à état (j'espère ne pas avoir dit un gros mot :D).

Ou sinon j'impose une condition d'arrêt au bout de tant d'itérations pour la boucle while. Je vais travailler dessus cet après-midi en espérant que je m'en dépatouille sans trop de souffrances !

 

J'te remercie pour tous ces conseils 🙂

0 Compliments
Message 13 sur 16
1 815 Visites

L'ouverture du visa était avant la boucle for,

donc pour moi le fait de fermer le visa pour chaque étape de la séquence empilée (pour chaque "action") ne posait pas de souci car l'ouverture se relancer pour l'étape suivante et ainsi de suite 🙂


Dans ma voiture, j'espère bien ne pas arrêter et redémarrer le moteur à chaque changement de route 🙂

mais uniquement au départ et à la fin ou sur gestion d'erreur.

 

 

 C'est bien d'envisager différemment ton code : je pense que je vais remplacer ma séquence compilée par une machine à état.

 

Ce qui me retenait pour utiliser cette technique, c'était le fait que je devais "répéter" plusieurs fois la machine à état. : Le but d'une machine à état, c'est justement de faciliter la transition entre les états.

Après il ne faut pas confondre

une boucle for (par exemple je veux faire 50 points de mesure à chaque fois)

avec la gestion d'un état dont l'enchainement des états n'est pas connu à l'avance. Par exemple la mesure avec une action utilisateur, ou la gestion d'une erreur, ou ... qui sont alors des états, chaque état définissant la transition vers l'état suivant. 

 

dont ton cas, si le nombre des mesures est connu, la boucle for convient. Mais si tu veux introduire d'autres actions, et donc avoir un programme qui gére des actions, c'est la définition d'un diagramme d'états / transition. Sous LabVIEW il sera codé sous le nom "machine d'état" "state machine" ou "QDMH", qui sont des modèles de projet LabVIEW.

A suivre...

tu progresses vers la lumière 🙂

 

 

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 14 sur 16
1 811 Visites

Je reviens vers toi encore une fois (je te remercie d'avance de ta patience :D)

 

je me heurte à un souci de lisibilité de mon code ...

En fait, je veux créer un tableau de 5 ou 6 colonnes grâce à mon programme.

Cependant, je veux que mes tableaux s'incrémentent au fur et à mesure pour que l'expérience utilisateur soit plus aboutie, or cela nuit grandement à la lisisbilité de mon code car mon code croule sous des registres à décalage.

yaurait-il une manière plus propre de coder une incrémentation de tableaux "en temps réel"?

 

Pour en revenir aux actions de mon porgramme, elles sont toutes définies à l'avance, le cheminement sera toujours le même ppour chaque commande envoyé par le générateur, seules les valeurs envoyées par le générateur (qui sont placées et récupérées dans un fichier texte) changeront.

 

merci du soutien 🙂

0 Compliments
Message 15 sur 16
1 805 Visites

salut je te propose de clôturer le post avec une réponse qui a été la bonne réponse. Et de refaire un nouveau post pour ta nouvelle question. Cela va aider d'autres personnes qui chercheront le même problème, et tu auras également plus de réponse. merci

A+

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 16 sur 16
1 801 Visites