IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

LabVIEW Discussion :

Appel sous LabVIEW d'une DLL issue de Matlab


Sujet :

LabVIEW

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Points : 3
    Points
    3
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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
    Par défaut
    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.

  3. #3
    Membre du Club Avatar de slimebdx
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 45
    Points : 53
    Points
    53
    Par défaut
    ça a marché pour vous les gars ?? confirmé nous pour qu'on pouvons apprendre de nouveau de vous
    "Il est bien des choses qui ne paraissent impossibles que tant qu'on ne les a pas tentées"
    André Gide

  4. #4
    Membre du Club Avatar de slimebdx
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 45
    Points : 53
    Points
    53
    Par défaut
    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
    "Il est bien des choses qui ne paraissent impossibles que tant qu'on ne les a pas tentées"
    André Gide

  5. #5
    Membre du Club Avatar de slimebdx
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 45
    Points : 53
    Points
    53
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    "Il est bien des choses qui ne paraissent impossibles que tant qu'on ne les a pas tentées"
    André Gide

Discussions similaires

  1. Appel sous LabVIEW d'une DLL issue de MATLAB
    Par franz91 dans le forum MATLAB
    Réponses: 0
    Dernier message: 03/03/2011, 12h13
  2. [MFC/C++] Appel de LoadString dans une dll
    Par fleur_de_rose dans le forum Visual C++
    Réponses: 5
    Dernier message: 16/10/2006, 19h44
  3. Appel de fonction d'une DLL en TANSAC SQL
    Par sylvain114d dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/01/2006, 10h21
  4. Appel aux fonctions d'une DLL externe ??
    Par Fbartolo dans le forum Access
    Réponses: 7
    Dernier message: 21/11/2005, 17h54
  5. Réponses: 15
    Dernier message: 07/07/2005, 11h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo