03-13-2015 06:16 AM - modifié 03-13-2015 06:21 AM
J'ai recablé, complété, testé ... et tout et tout ... avec ton Contrôle " Jauge temp cab "
fichier joint en LV2013 >> run : "MAIN.vi"
le 03-19-2015 03:44 AM
Merci du coup de main!
J'ai toujours mon erreur 1054 mais je pense savoir d'où ça vient.
J'ai recopié ce que tu m'avais donné, avec comme paramètre de classe "Control".
Sauf que dans mon Front Panel les objets que je veux récupérer son mis dans un Tab Control!
Je pense que le problème vient de là (le owner n'est pas le VI mais le Tab Control, correct?).
Du coup j'ai cascasdé un Open Object pour récupérer la référence du VI, puis un autre pour la référence du Tab Control, mais je n'arrive pas à récupérer la référence de la Page qui va bien.
De plus, dans l'aide Labview, il y a une classe ControlTerminal, qui pourrait m'aider car apparemment cela correspond aux objects du diagramme et donc sans faire attention à quel objet ils appartiennent dans le Front Panel.
Je suis avec labview 2013.
Une idée?
Merci
le 03-19-2015 02:16 PM
donne moi ton code que je puisse travailler dessus.
le 03-20-2015 02:38 AM
Bonjour,
Voilà un exemple de mon code.
Ce n'est pas le code d'origine mais c'est le schéma (avec 100 Control et 30 Indicateurs répartis sur 5 pages...).
Merci
03-20-2015 04:43 AM - modifié 03-20-2015 04:45 AM
100 Controls et 30 indicateurs répartis sur 5 pages d'un TabControl.
ok ...
et je suppose que le nombre de controles et d'indicateurs .... diffère suivant la page ?
Comment veux-tu faire un "superviseur" polyvalent ... aussi bien pour une page qui contient 2 controles, que pour une qui en contient 10 ?
Là, on serait parti pour un superviseur "global" qui détecte en première ligne les changements de page ...
ensuite le S_global ferait un appel (asynchrone) au superviseur local de la page (" x pages = x superviseurs", soit un superviseur dédié pour chaque page)
Eventuellement on pourrait peut-etre utiliser un callback pour le S_global avec un value change sur le TabControl ...
Mais de toute façon, impossible d'utiliser le scripting pour créer des objets "suivant besoins" sur le front panel d'un superviseur "unique".
Cela pourrait (éventuellement ... à tester) fonctionner en mode "run" ... création et/ou modification d'objets dans un VI et ensuite appel asynchrone de ce VI,
mais cela ne fonctionnera de toute façon pas sur le code de l'exécutable. Donc, obligé au final d'avoir un "superviseur_local" par page.
C'est du code de haut vol tout ça !
Avec une configuration "fixe" de Controles/Indicateurs ...créer un "superviseur" n'est pas très compliqué (je t'ai donné 2 codes)
Mais si maintenant la "cible" est une page, parmis x pages ... variable dans sa composition, et variable quant au nombre de Controles à "superviser"
là ... on change de planète. Impossible ... non.... (tout est possible avec LV ) ... mais tu multiplies la complexité du code par 10.
et quand je vois que tu utilises 2 variables locales plutôt qu'un shift registre (dans la While où tu fais "+3")
et bien ... je me demande si tes connaissance en LV sont suffisantes pour mettre en place et maintenir un tel code.
le 03-20-2015 04:57 AM
et quand je vois que tu utilises 2 variables locales plutôt qu'un shift registre (dans la While où tu fais "+3")
et bien ... je me demande si tes connaissance en LV sont suffisante pour mettre en place et maintenir un tel code.
J'ai réutilisé le code que tu m'avais donné, en le modifiant pour faire apparaître les onglets.
J'ai mis des variables locales car dans mon vrai programme les valeurs des Contrôles et Indicateurs sont utilisées à plusieurs endroits (dans différents cases, structures d'évènements, etc.) par des variables locales ou des noeuds de propriété. Faire un "+3" n'est pas mon objectif! Mes connaissances ne sont peut être pas suffisantes (il y a 1 mois je ne connaissais pas LV) mais c'est bien le but (d'apprendre).
As-tu déjà vu la classe ControlTerminal?
Le superviseur ne devra pas superviser l'ensemble des Controles et Indicateurs, seulement les entrées/sorties hardware (peut être que ça se fait de manière différente dans ce cas?).
le 03-20-2015 05:03 AM
J'ai un peu mélangé le superviseur et une autre fonction, s'y ressemblant.
Il y a le superviseur d'un côté, mais aussi la façon de récupérer des valeurs (une vingtaine) d'un VI appelant (comme un superviseur mais qui ne s'exécute qu'une fois). Le code que tu m'as donné me permet de récupérer des valeurs avec Open Object, mais ne fonctionne pas si la valeur que je veux récupérer appartient à un TabControl.
le 03-20-2015 05:11 AM
Le superviseur ne devra pas superviser l'ensemble des Controles et Indicateurs,
seulement les entrées/sorties hardware (peut être que ça se fait de manière différente dans ce cas?).
cela ne fonctionne pas avec un TabControl ... si, cela fonctionne aussi avec un TabControl ... on peut récupérer la reférence de la page "visible" ... là n'est pas le soucis.
La classe ControlTerminal ... oublie .... ça, c'est tout autre chose.
(ControlTerminal ... là, il s'agit du Terminal associé à un Controle ... on se trouve sur le Diagramme, plus sur le front panel)
seulement les entrées/sorties hardware
penses-tu pouvoir regrouper ces "entrées/sorties" sur une même page ?
Le supervisuer n'aurait dans ce cas qu'une seule page (unique) à surveiller.
apprendre ... oui, c'est bien ça ... (pas toujours facile, LV est complexe, ses capacités sont immenses)
Bravo et respect à toi.
le 03-20-2015 05:36 AM
La classe ControlTerminal ... oublie .... ça, c'est tout autre chose.
(ControlTerminal ... là, il s'agit du Terminal associé à un Controle ... on se trouve sur le Diagramme, plus sur le front panel)
C'est bien pour ça que ça m'intéresse. Si on peut ne plus se soucier d'où est placé le Control sur le Front Panel, c'est parfait!
penses-tu pouvoir regrouper ces "entrées/sorties" sur une même page ?
Le supervisuer n'aurait dans ce cas qu'une seule page (unique) à surveiller.
Il n'est pas prévu qu'elles soient affichées sur le Front Panel (cachées). Je veux juste récupérer la valeur pour l'afficher dans une autre fenêtre (le VI de monitoring).
Question à part :
Si un sous-vi a besoin de beaucoup de paramètres (répartis sur le Front Panel, sur différentes pages) du VI appelant, quelle est la meilleure solution ? Tout câbler sur des entrées (c'est moche et illisible), utiliser Open Object (d'où mes questions précédentes), ou autre chose?
le 03-20-2015 07:29 AM
si tu as trop d'entrées sur un sous-Vi, tu peux les "compacter" via une fonction "bundle" et tu n'auras qu'une seule entrée. (un cluster)
à l'intérieur du sous-VI tu utilises la fonction inverse "unbundlle" pour démultiplexer le tout.
attention au jaune, cela rend le texte difficile à lire (merci)