Discussions au sujet de NI LabVIEW

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

Distribution de code et référence .NET

Résolu !
Accéder à la solution

Bonjour,

 

J'expose mon problème, j'ai une application (sorte de lanceur) qui execute un VI via un appel de vi asynchrone (cf image lanceur).

 

Mais dans ce VI, j'ai une référence .NET sur un module USB-2001-TC (système d'acquisition de température via USB de chez Measurement computing).

 

Je crée ma distribution et mon executable, jusque là je n'ai aucun problème. Les soucis commencent lorsque je déploie ma distribution de source sur un pc qui n'a pas LabVIEW d'installé. Mon lanceur(.exe) se lance, je choisi mon package à lancer (le fameux VI avec la référence .NET) et là j'ai une erreur du type vi brisé à cause de cette référence.

 

PS: J'ai joins aussi en pièce jointe, le sous VI d'acquisition de température (avec référence .NET).

 

Merci.

 

Cdlt,

Tout télécharger
0 Compliments
Message 1 sur 12
5 711 Visites

Bonjour,

 

Est-ce que l'assembly de votre produit (DAQFlex.dll) est référencé dans le GAC sur le PC cible ?

 

Cordialement,

Da Helmut
Voir le profil de Maxime M. sur LinkedIn - View Maxime M.'s profile on LinkedIn
Message 2 sur 12
5 706 Visites

Merci de votre réponse rapide.

 

Non justement, la DLL n'est pas référencée (car je ne sais pas faire). J'ai essayé sur un autre pc de développement (avec labview 2012 d'installé) de lancer mon application et il me génère un nouveau chemin <GAC>\DAQFlex.dll vers un nouvel emplacement C:\Programmes x86\National Instruments\...

 

Je suis sûr à 100% que le problème vient de là.

 

Cdlt,

0 Compliments
Message 3 sur 12
5 702 Visites

Bonjour,

 

Avez vous ajouté l'assembly dans votre projet ? Est-ce qu'elle est distribuée avec votre application (sous dossier, racine, etc) ?

 

D'après ce document :

 

http://digital.ni.com/public.nsf/allkb/C4EA5ABBEB67AF7C862573F3004D4421

 

Le comportement semble logique.

 

Avez vous essayé de placer l'assembly dans un des dossiers cité dans la KB ?

 

Cordialement,

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

Ce que je fais, c'est de faire une distribution de code sous format LLB (non pas une hiérarchie), j'ai essayé de copier DAQFlex.dll dans le répertoire de la LLB et aussi dans le dossier "data" mais j'ai toujours le même problème.

 

Concretement, je lance mon application comme ceci Biblio.LLB\Main.vi via l'appel asynchorne par contre  je vois mal comment je pourrais faire pour copier une dll dans une LLB Smiley fou. J'ai aussi essayé de mettre la dll dans mon projet et copier sur la machine cible là aussi j'ai toujours le vi brisé

0 Compliments
Message 5 sur 12
5 687 Visites

Lorsque je compile le code tout fonctionne correctement Smiley gêné

0 Compliments
Message 6 sur 12
5 686 Visites

Bonjour,

 

Effectivement je n'avais pas saisi que vous utilisiez une llb.

 

Il faudrait que votre application de lancement charge l'assembly en plaçant un appel de méthode / propriété de celui-ci. Ca devrait peut être résoudre le problème.

 

Cordialement,

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

"Il faudrait que votre application de lancement charge l'assembly en plaçant un appel de méthode / propriété de celui-ci. Ca devrait peut être résoudre le problème."

Je ne vois pas ce que c'est.

 

Autre question : Peut-on utiliser les "appels (a)synchrone" pour lancer un executable labview?

0 Compliments
Message 8 sur 12
5 680 Visites

 

Je crée ma distribution et mon executable, jusque là je n'ai aucun problème. Les soucis commencent lorsque je déploie ma distribution de source sur un pc qui n'a pas LabVIEW d'installé. Mon lanceur(.exe) se lance, je choisi mon package à lancer (le fameux VI avec la référence .NET) et là j'ai une erreur du type vi brisé à cause de cette référence.

 


C'est bien "Mon lanceur.exe" qui appelle le fichier de la llb ? 

 

Pour que l'assembly soit chargé en mémoire, il faudrait placer une méthode / propriété de celui-ci dans le lanceur, comme ça celui-ci sera en mémoire et prêt à être chargé.

 

Sauf si vous ne pouvez pas changer le code de "Mon lanceur".

 

C'est une rustine, certes mais je ne vois que cette solution.

 

Cordialement,

 

Da Helmut
Voir le profil de Maxime M. sur LinkedIn - View Maxime M.'s profile on LinkedIn
Message 9 sur 12
5 675 Visites

Bonjour,

 

Oui effectivement, mon lanceur.exe lance la LLB via l'appel asynchrone.

Je peux bien sur modifier mon lanceur, je suis en cours de développement. J'avais essayé une petite ruse du type "ouvrir la référence" et de le passer en paramètre mais cela revient à la m^^eme chose (fil brisé).

 

Petite ruse que j'ai developpé hier soir, c'est de compilé cette partie et communiquer avec les datasockets (transmission et réception de la valeur de température) mais bon ce n'est pas beau d'un point de vue programmation, j'ai un VI/exe qui s'execute à coté de la fenêtre principale.

 

Cdlt,

0 Compliments
Message 10 sur 12
5 666 Visites