Précédent   Forum des professionnels en informatique > Environnements de développement > Autres EDI > LabVIEW
LabVIEW Forum d'entraide sur LabVIEW. Avant de poster -> FAQ LabVIEW
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/03/2011, 12h13   #1
Invité de passage
 
Inscription : mars 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 4
Points : 0
Points : 0
Par défaut Appel sous LabVIEW d'une DLL issue de Matlab

Bonjour,

Je travaille sur un projet sur lequel le service scientifique travaille sous Matlab et le système final est sous LabVIEW. Du classique

Une fonction sous Matlab doit être appelée par le soft sous Labview.
Après réunion avec les collègues, il y a deux possibilités:
  1. Compiler la fonction sous la forme d'une dll. Normalement simple à utiliser et modifier, mais complexe pour configurer la compilation.
  2. Créer un exécutable et faire une interface avec Labview. Il y a un léger flou artistique et il nécessiterai l'achat d'une licence.
Seulement personne ne sais exactement le faire -_-'. Je sollicite donc le forum!

Nous sommes en train de tester la solution de la dll (la 1)).
La fonction a été compilée sous Matlab avec la commande suivante:
Code :
mcc -B csharedlib:WD windshear_detect
En sortie j'ai 6 fichiers nommé WD (.dll, .c, .h, .exp, .exports, .lib).
Jusque là ça SEMBLE ok.
Dans le fichier WD.h, on trouve le prototype suivant:
Code C :
1
2
extern LIB_WD_C_API bool MW_CALL_CONV mlfWindshear_detect(int nargout, mxArray** mat_bw, mxArray* M_vr, mxArray* r0, mxArray* r1, mxArray* delta_r, mxArray* t0, mxArray* t1, mxArray* delta_t, mxArray* seuil_cisaillement, mxArray* seuil_strict);
bool MW_CALL_CONV mlxWindshear_detect(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]);
Je suppose que la fonction a appeler est mlfWindshear_detect.

Sous Labview, j'ai créé un VI contenant juste le test de cette dll. L'entrée est fichier texte contenant des valeurs numériques et de NaN.

J'utilise la boite "Appeler une fonction d'une DLL".
Pour la configuration de la boite, j'ai fait comme suis:

ça c'est la configuration du tableau de sortie:


Quand j'exécute mon VI, le tableau de sortie (mat_bw) contient les mêmes données que le tableau d'entrée (je devrai avoir des 0 ou des 1).
Je suppose donc que ça ne marche pas :redface:

Le soucis c'est que je n'ai aucune idée à quel(s) endroit(s) c'est mal configuré (compilation de la dll? appel? ...)

Si des personnes s'y connaissant peuvent me donner des indications
franz91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 20h06   #2
Membre du Club
 
Homme Nicolas CHEVALIER
Développeur informatique
Inscription : juillet 2007
Messages : 23
Détails du profil
Informations personnelles :
Nom : Homme Nicolas CHEVALIER
Localisation : France, Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 23
Points : 41
Points : 41
Bonsoir,

Il me semble que le paramètre "mat_bw" n'est pas du bon type.

Dans la liste "Type de données", vous devriez trouver un élément "Unsigned Pointer-sized Integer" (Désolé je n'ai pas la version française devant les yeux).



En espérant que cela vous permettra de résoudre votre problème.
Gontier86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 17h16   #3
Futur Membre du Club
 
Homme slimane souag
Enseignant Chercheur
Inscription : septembre 2009
Messages : 43
Détails du profil
Informations personnelles :
Nom : Homme slimane souag
Localisation : Algérie

Informations professionnelles :
Activité : Enseignant Chercheur
Secteur : Industrie

Informations forums :
Inscription : septembre 2009
Messages : 43
Points : 17
Points : 17
ça a marché pour vous les gars ?? confirmé nous pour qu'on pouvons apprendre de nouveau de vous
slimebdx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 17h59   #4
Futur Membre du Club
 
Homme slimane souag
Enseignant Chercheur
Inscription : septembre 2009
Messages : 43
Détails du profil
Informations personnelles :
Nom : Homme slimane souag
Localisation : Algérie

Informations professionnelles :
Activité : Enseignant Chercheur
Secteur : Industrie

Informations forums :
Inscription : septembre 2009
Messages : 43
Points : 17
Points : 17
j'arrive pas a compiler le fichier .m sous matlab pourton matlab compiler est instaler jles vérifier avec la commande "ver" alors quelle est la comande que je doit appliqué j'ai essayer mcc -B csharedlib:WD windshear_detect et ça marche pas
slimebdx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 19h05   #5
Futur Membre du Club
 
Homme slimane souag
Enseignant Chercheur
Inscription : septembre 2009
Messages : 43
Détails du profil
Informations personnelles :
Nom : Homme slimane souag
Localisation : Algérie

Informations professionnelles :
Activité : Enseignant Chercheur
Secteur : Industrie

Informations forums :
Inscription : septembre 2009
Messages : 43
Points : 17
Points : 17
alors la c'est bon la commande a marché ces moi qui a pas cherché le fichier apres lol
la commande pour crée un fichier DLL a partir d'un fichier .m est simple
il suffit de mettre comme suit:
Code :
Sélectionner tout - Visualiser dans une fenêtre à part

Code :
mcc -B csharedlib:WD Abc.m
d'ou WD le nom du fichier résultant car yaura des fichier (.dll, .c, .h, .exp, .exports, .lib) et Abc.m est le nom du fichier matlab qui doit étre dans "current folder" le dossier par défault de matlab
sujet résolue merci forum
slimebdx est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h27.


 
 
 
 
Partenaires

Hébergement Web