Bonjour,
Je travaille sur un projet sur lequel le service scientifique travaille sous Matlab et le système final est sous LabVIEW. Du classique ![:roll:](https://www.developpez.net/forums/images/smilies/icon_rolleyes.gif)
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.
![](http://img135.imageshack.us/img135/4862/algocode.gif)
J'utilise la boite "Appeler une fonction d'une DLL".
Pour la configuration de la boite, j'ai fait comme suis:
![](http://img818.imageshack.us/img818/3264/algocode1.gif)
ça c'est la configuration du tableau de sortie:
![](http://img607.imageshack.us/img607/8499/algocode2.gif)
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