Discussions au sujet de NI LabVIEW

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

Appel Asynchrone (sous-vi)

Résolu !
Accéder à la solution

J'aimerais pouvoir placer un "appel asynchrone" dans un sous-VI

 

et pouvoir utiliser ce "sous_vi_appel_asynchrone" avec en entrée ... des references de vi différents.

 

problème ! ...

 

un appel asynchrone demande une référence stricte ... donc cette référence correspond à un et un seul vi.

 

Comment faire ? Cela est-il possible ?

 

J'ai l'impression que "non" (par définition d'une référence stricte) ... mais ... LV est tellement vaste !

 

Merci à tous.

Message 1 sur 7
4 624 Visites

Hello ouadji,

 

Démystifions la notion de VI Strict 🙂

Il s'agit en fait un moyen de discriminer un type de VI parmi d'autres. Pour ça, on utilise le connecteur du VI. Donc pour tout VI qui aura le même connecteur, il sera possible d'utiliser la même référence stricte. C'est comme ça qu'on crée des architectures plug-in (souvent en utilisant un/des variant(s) pour avoir harmoniser les différents type de données à passer selon les différents VIs à appeler)...

 

Un bout d'exemple (même s'il utilise un appel par référence simple, le principe est le même.) : https://decibel.ni.com/content/docs/DOC-21092

 

Cdt,

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

Message 2 sur 7
4 615 Visites

Bonjour Eric,

 

Merci pour ton intervention.

 

Oui, j'ai cherché, et j'ai effectivement remarqué que si les VIs ont le même connecteur

(mêmes emplacements, mêmes type de données) ... c'est bon.

 

mais ...

 

Pourquoi bon dieu, faut-il définir le type de connecteur de façon "rigide".

Sur base de la Référence du VI (je parle de sa Ref simple, non-stricte) Labview pourrait en dynamique retrouver quel est son connecteur.

Il suffirait que LV "aille voir" les paramètres du dit VI avant de lancer l'appel asynchrone.

 

là il me reste une incompréhension.

Pourquoi ce besoin d'une définition rigide du connecteur dès le départ ?

à une Reference de VI (simple), correspond un et un seul VI, et donc un connecteur parfaitement défini.

 

Qu'en penses-tu Eric ?

 

 

Message 3 sur 7
4 604 Visites

Smiley très heureux

Da Helmut
Voir le profil de Maxime M. sur LinkedIn - View Maxime M.'s profile on LinkedIn
0 Compliments
Message 4 sur 7
4 595 Visites

Pour un appel asynchrone, LV a besoin de connaître "les types en entrée" lors de l'edition.

 

J'ai poussé le bouchon en proposant ceci

 

donc, placer un appel asynchrone dans un sous-vi et pouvoir rendre ce sous-vi totalement générique est impossible.

 

rideau ! Smiley clignant de l'œil

Message 5 sur 7
4 575 Visites
Solution
Accepté par l'auteur du sujet ouadji

Je crois que tu t'es répondu seul.

 

Considérons la fonction printf(). C'est mignon comme fonction, mais moi, j'ai aucune idée des paramètres à lui passer et leur type de données. En C, on a le prototype (connu du compilateur grâce au linkage). En LV, on a le spécificateur de type d'un VI.

 

Le seul cas que tu trouveras pour être complètement générique sera l'appel à la méthode Run VI. Cette dernière ne nécessite pas de spécificateur de type. Par contre, pour l'échange de données, on est obligés de fonctionner via des Ctr.Val.Set/Get, ou nouvellement, les fonctions "Control Set/Get by Index". Sinon, il est toujours bon de passer par des files d'attente ou des User Events pour la communication de données.

 

Quant à ton poste sur Idea Exchange, il paraît légitime, mais le souci est que c'est la référence d'un VI qui est obtenue grâce à un spécificateur et non l'inverse...

 

Cdt,

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

Message 6 sur 7
4 568 Visites

Merci Eric pour ce petit plus d'explication.

J'ai bien compris le "pourquoi" et le "comment" des choses.

 

Comprendre le "pourquoi" est pour moi une chose essentiel.

 

Comprendre uniquement le "comment" construit une connaissance statique,

comprendre le "pourquoi" permet d'extrapoler.

Message 7 sur 7
4 559 Visites