Discussions au sujet de NI LabVIEW

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

FGV full polymorphe (petite recherche perso)

Résolu !
Accéder à la solution

suite de la petite histoire ( from here )

 

Un VI "Target" ... c'est une FGV (Get/Set) ... rendue totalement polymorphe par le "monitoring" du code "Main"

 

but de ce post:

 

montrer/échanger ... avoir l'avis des Anciens, toute critique est la bien venue (+ ou -)

 

la manip :

 

1) lancer le VI Main

2) en parallèle, ouvrir le VI Target ... et jouer avec l'entrée et la sortie de cette FGV (entrer n'importe quel type ... quelques types sont prévus en démo)

 

3) se rendre compte que cette FGV est full polymorphe.

une fois "cablée" avec le type choisi, on peut la faire tourner ... Set/Get

 

attention ! : ne pas stopper "Main" avec le bouton "Abort" ...toujours avec "son" propre STOP (sur son FP)

 

PS:

1) Le "Clear Error" (dans "Target") est placé là pour éliminer l'erreur si on "run" le vi Target en "Get" juste après un changement de type.

 

Prochaine étape :

 

J'aimerais bien placer le code de "Main" dans un XControl  (détourné de son rôle premier)  pour qu'il soit sur le BD de "Target".

Un XControl est, en effet, la seule façon d'avoir du "code qui tourne" en mode édition sur un BD.

 

La seule façon ... heuuu ... mis à part mettre tout ça dans un XNode  Smiley surpris  (pas bien, on peut pas faire ça)   Smiley clignant de l'œil

 

 

 

0 Compliments
Message 1 sur 15
4 207 Visites

Bonjour ouadji, 

 

J'irai plus voir du côté du Quick Drop ou du JKI Right Click Framewrok, voir même des VI polymorphes avec l'option Allow Polymorphic VI to Adapt to Data Type. 

 

    Benjamin R.


Senior LabVIEW Developer @Neosoft


0 Compliments
Message 2 sur 15
4 159 Visites

@Benjamin ... "VI polymorphes avec l'option Allow Polymorphic VI to Adapt to Data Type"

 

Un VI Polymorphe ne sera jamais plus que ce qu'il est ... c'est à dire une librairie d'instances reprenant chacune un type défini.

La fonctionnalité "Adapt to Data Type" autorise simplement le Polymorphe à chosir lui-même l'instance ... parmis celles implémentées.

Cela ne rend pas le Polymorphe capable de "s'adapter" à n'importe quel type.

 

Les VIs Polymorphes sont même à l'origine ma petite recherche ... comment aller "plus loin" ?

 

Ce Polymorphisme par scripting est sans conditions,

à l'entrée de ma FGV, je cable aussi bien un booléen, qu'un U32 ... ou qu'un Array à 17 dimensions

C'est un polymorphisme totale, inconditionnel ... identique à certaines fonctions natives de LV.

0 Compliments
Message 3 sur 15
4 147 Visites

Je n'ai pas dit que le VI polymorphe faisait la même chose que ce que tu essaye de faire mais juste une petite recherche àa faire, ne sachant pas que ton idée partait de là. 

Par contre regarde le Quick Drop et le Right Click Framework pour remplacer le XControl. Je trouve ces 2 solutions plus efficaces et éléguantes. 

    Benjamin R.


Senior LabVIEW Developer @Neosoft


Message 4 sur 15
4 140 Visites

Effectivement, j'ai trouvé des choses intéressantes du côté de "Quick Drop". (Merci Benjamin)

 

Ceci dit, je reste (quasi) persuadé que le must du must pour l'objectif recherché est le XNode.

Mais là ... je n'ai pas encore trouvé la réelle "porte d'entrée"

 

Pour le moment j'ai placé mon code dans un XControl.

Je place ce XControl sur le BD de mon VI Target ... et il le rend totalement polymorphe. (avec Target en mode édition)

 

Il faut aussi préciser que mon but est le plaisir de "trouver" (de programmer) ... la finalité n'est qu'une récompense, sans plus.

 

Merci pour ton aide Benjamin.

0 Compliments
Message 5 sur 15
4 135 Visites

En effet, le XNode répond exactement à ce que tu cherche à faire mais malheureusement c'est une technologie que NI n'a pas ouverte (il te faut une licence spéciale et certains token dans le INI). 

 

Tu peux créer ton propre plug-in pour le Quick Drop mais cela ne fera pas l'adaptation en live comme tu le désire. 

    Benjamin R.


Senior LabVIEW Developer @Neosoft


0 Compliments
Message 6 sur 15
4 129 Visites

ouadji a écrit :

 

Ce Polymorphisme par scripting est sans conditions,

à l'entrée de ma FGV, je cable aussi bien un booléen, qu'un U32 ... ou qu'un Array à 17 dimensions

C'est un polymorphisme totale, inconditionnel ... identique à certaines fonctions natives de LV.


Hello,

 

Je ne vois pas comment ton VI de scripting serait "total". Il te faudrait pour ça avoir à ta disposition tous les types de données possibles imaginables de LabVIEW (ça inclut toutes les références, objets, clusters et tableaux possibles)... Pas si simple !

 

Le XNode t'aidera dans la théorie, mais dans tous les cas on ne peut pas changer le code d'un XNode à l'exécution pour lui faire renvoyer un type de données défini (bien qu'ils puissent s'adapter à divers types grâce à une capacité spéciale, mais ce sont deux choses différentes), et malheureusement on ne sait jamais dire avant l'exécution quel type de données transite sur un fil, même en utilisant un variant... LabVIEW est fortement typé, et c'est vrai que c'est un peu dommage 😉

 

Cdt

 

Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.

Message 7 sur 15
4 115 Visites

mais si ... Smiley heureux

 

références, objets, clusters et tous les tableaux possibles ... bien sur, et un tableau à 21 dimensions aussi si tu veux.

 

Je termine et je poste ça Eric, tu pourras "voir".

 

J'ai mis le code qui gère le polymorphisme dans un XControl. (sur le BD de Target.vi) ... ça fonctionne tip-top.

 

Dernier petit soucis, je n'arrive pas à stopper ce XControl quand je ferme "Target.vi".

Mon XControl continue de tourner même après la fermeture de Target.

 

Comment arrêter un XControl ? Possède-t-il une référence indépendante de son vi "parent" ?

Je cherche ... je vais trouver ça Smiley tirant la langue

0 Compliments
Message 8 sur 15
4 105 Visites

Une instance spécifique de ton XControl est dans ton VI target. Après sans ton code je ne vois pas trop comment t'aider. 

    Benjamin R.


Senior LabVIEW Developer @Neosoft


0 Compliments
Message 9 sur 15
4 102 Visites

Quand je ferme le "main" (Target_C.vi) ... le XControl reste actif en mémoire (??) Smiley triste

 

1) ouvrir LV

2) ouvrir "Traget_C.vi"

 

La "led" du XControl clignote .. le XControl est en train de "monitorer" le Main (Target_C).

 

"Jouer" avec l'entrée de la FGV (le Tunel "IN" en rouge) ... changer de type (comme on veut) ...

La FGV est polymorphe, on peut raccorder en sortie un "indicateur" du même type que celui présent à l'entrée ... pas de "broken" !

 

Pendant toute la manip, Target_C.vi est en mode édition.

Mais quand je ferme Target_C.vi ... le code du XControl reste actif.

Si j'ouvre "facade.vi" du XControl (après la fermeture de Target_C.vi) ... facade.vi est en mode "run" (pas en mode édition)

 

Attention :

avant de fermer Target_C.vi, toujours activer le bouton STOP (du XControl)

avant de fermer Target_C.vi .. la led du XControl ne doit plus clignoter.

(en faisant cela, le XControl "re-configure" pour la prochaine ouverture de Target)

 

c'est un code prototype, cela n'a rien de "release" Smiley heureux

 

 

 

0 Compliments
Message 10 sur 15
4 099 Visites