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:
- Compiler la fonction sous la forme d'une dll. Normalement simple à utiliser et modifier, mais complexe pour configurer la compilation.
- 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:
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:
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
Partager