le 04-22-2013 01:15 PM
Bonjour,
Je souhaite créer une FGV polymorphe :
J'ai essayé de la réaliser en remplacant des Vi "classiques" par des FGV dans un Vi Polymorphe mais cela ne fonctionne pas du tout.
Exemple :
1) Je fais une opération d'écriture avec un 1er type de donnée.
2) Je fais ensuite une opération de lecture avec un 2nd type de données -> Je vais alors récupérer des informations erronées.
En effet, mes données vont etre écrites et lues dans des FGV différentes (Vis Source définis dans le Vi Polymorphe).
Existe t'il une solution pour réaliser une FGV polymorphe ?
Cordialement
04-22-2013 01:25 PM - modifié 04-22-2013 01:29 PM
Tu crées une FGV polymorphe ... par exemple ... U32 et DBL (SET/GET)
1) tu places une instance de cette FGV poly connectée à un U32
LV créera en mémoire un exemplaire, une FGV_U32.
Tu "set" la valeur 3 dans cette FGV_U32
2) Plus loin dans ton BD, tu places une autre instance de cette FGV polymorphe ... connectée à un DBL
et tu "get" vers ton indicateur DBL
Tu viens de faire "set" et "get" dans 2 FGV différentes !
Tu as fait "set" dans ta FGV_U32 et tu as fait "get" dans ta FGV_DBL
Il s'agit de 2 FGV différentes en mémoire !!
Normal, que dans ton indicateur DBL, tu ne retrouves pas la valeur 3.
(j'espère avoir compris ton soucis)
EDIT
J'ai relu ton message, je n'ai pas répondu correctement.
Tu sembles avoir compris (ce que j'ai expliqué) ... dans ce cas , je ne comprends pas ta question.
04-22-2013 01:33 PM - modifié 04-22-2013 01:43 PM
ok, compris.
Tu voudrais avoir un véritable polymorphisme sur une et une seule instance de ta FGV.
Ce n'est pas possible avec les vi polymorphiques.
Une fois connectée, LV va choisir l'exemplaire de ta FGV a placer dans ton code ... sur base du type.
Le type sera alors défini pour cette instance ... tu ne pourras pas en changer.
Ce que tu cherches ne peut se résoudre que par un xnode.
(un truc compliqué et non documenté par NI)
le 04-22-2013 02:19 PM
je ne suis pas sûr de comprendre, mais je tente : une FGV avec un variant en type de données....
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
le 04-22-2013 02:34 PM
le 04-22-2013 06:41 PM
Je vais explorer cette piste !!!
Merci
04-23-2013 08:16 AM - modifié 04-23-2013 08:19 AM
Finalement, j'ai trouvé la solution à mon problème.
C'est tellement simple que je ne vois pas pourquoi je n'y avais pas pensé avant. (Erreur de débutant !!!)
Dans la définition des Vi sources qui sont listés dans le Vi Polymorphe :
Chaque Vi contenait le code de ma FGV + le code de convertion de type en entrée et en sortie
Le code de l'ensemble du Vi était appelé dans une "instance" différente en fonction du Type sélectionné dans le Vi Polymorphe ce qui explique mon problème.
Solution :
Il suffit simplement de remplacer le code de la FGV dans chaque Vi Source par le sous-Vi de ma FGV.
Dans ce cas, le meme Vi (FGV) sera appelé quelque soit les Vi source définis dans mon Vi Polymorphe.
Cordialement
le 04-23-2013 08:23 AM
oui, mais avec cette façon de "faire" ... tu "forces".
dans ce cas, je ne vois plus l'utilité d'une FGV polymorphe.
04-23-2013 09:49 AM - modifié 04-23-2013 10:11 AM
Mon idée de départ est de réaliser un Vi analogue au Vi Read Key / Write key (Librairie File I/O / Config File VIs) :
- Je charge le contenu du fichier de Setting (.ini) dans ma FGV au début de mon application
- Ensuite je travaille directement à partir de ma FGV (Image du contenu de mon fichier .ini) en réalisant des opérations de lecture et d'écriture.
Ceci m'offre les avantages suivants :
- Me permet d'éviter de faire des accès au fichier à chaque fois que j'ai besoin de lire un paramètre.
- Un seul Vi à déposer dans mon code (remplace Open Config Data + Read Key ou Write Key + Close Config Data)
- Accès plus rapide des données (Optimisation)
N'ayant pas d'autres solutions, celle-ci semble me convenir pour le moment.