Utilisation d'une dll labview dans un plugin imageJ

_LBS_ Messages postés 2 Date d'inscription mercredi 18 juillet 2007 Statut Membre Dernière intervention 6 décembre 2010 - 14 avril 2010 à 10:06
_LBS_ Messages postés 2 Date d'inscription mercredi 18 juillet 2007 Statut Membre Dernière intervention 6 décembre 2010 - 6 déc. 2010 à 17:06
Bonjour à tous,

j'ai développé un PlugIn ImageJ (logiciel opensource JAVA) qui utilise des fonctions contenues dans une dll construite en LabView. L'utilisation de cette dll nécessite une interface JNI en C.

Voici un schéma résumant cela :
PlugIn ImageJ (Java) -> Interface JNI dll (C) -> Bibliothèque de calcul dll (LabView)
Les -> correspondant à un chargement de dll.

Ce PlugIn fonctionne très bien lors du premier lancement mais si l'on souhaite, dans une même session ImageJ, lancer plusieurs fois ce PlugIn (ie instancier plusieurs objets PlugIn) le PlugIn reste bloqué lors de l'appel de la première fonction Labview.

Pour essayer de localiser l'erreur j'ai remplacé la dll de calcul en Labview par une dll en C. Avec ce remplacement il n'y a plus d'erreur et le PlugIn peut se lancer plusieurs fois.

D'un autre côté si j'essaye de lancer un PlugIn via un programme Java quelconque en simulant l'appel d'un PlugIn par ImageJ (c'est à dire chargement et instanciation dynamique des classes Java compilées via un ClassLoader), on peut également lancer plusieurs fois le PlugIn.

Il semblerait donc que le problème vienne du couple ImageJ / LabView, probablement lié au fait que ImageJ lance un runtime Labview qui n'est peut être pas déchargé et qui lors d'un second chargement pose problème.

Je voudrais savoir si quelqu'un à déjà rencontré un problème de ce type sous ImageJ ou si vous avez des idées pour régler ce problème.

Merci

2 réponses

clairon33 Messages postés 1 Date d'inscription jeudi 12 mars 2009 Statut Membre Dernière intervention 2 décembre 2010
2 déc. 2010 à 15:24
Bonjour,

Je suis très intéressée par votre utilisation du couple ImageJ/Labview.

Si j'ai bien compris, votre partie applicative principale est le plugin ImageJ et vous utilisez des DLLs générés de Labview et qui contient des fonctions Labview. Est-ce bien cela ? Pouriez-vous me dire les types de fonctions de Labview que vous avez utilisez dans votre plugin ImageJ.

En réalité, moi je cherche à lancer les plugins ImageJ et à les appeler depuis un programme Labview ? Car j'utilise Labview pour faire les acquisitions d'images et imageJ pour extraire les mesures de qualité d'images sur ces images acquises (Labview serait donc la partie applicative principale) ? Savez-vous si cela est possible ? Si OUI, par quel moyens avez-vous utilisé ?
Merci d'avance pour votre aide,

Claire
0
_LBS_ Messages postés 2 Date d'inscription mercredi 18 juillet 2007 Statut Membre Dernière intervention 6 décembre 2010
6 déc. 2010 à 17:06
Bonjour,

Effectivement, ma partie applicative principale est le plugin ImageJ qui utilise une dll en C comprenant la couche JNI (une interface pour passer les données de type JAVA en type C) qui elle même appelle une dll construite en LabView. Cette dll LabView contient des fonctions d'acquisition et de traitement d'image. En fait, la dll LabView me permet d'acquérir des images que je récupère dans ImageJ (ainsi que des calculs sur ces images que j'avais déjà développés et testés en LabView).

D'aprés ce que je comprends vous souhaitez à l'intérieur d'un programme LabView utilisé un plugin ImageJ. Dans ce cas, je pense qu'il faut faire des dll mais dans l'autre sens. Tout d'abord, et je ne sais si cela est possible compte tenu du caractère multiplateforme de Java, il faudrait faire une dll à partir du plugin ImageJ que vous souhaitez utiliser.
Ensuite, et vous ne pourrez pas y échapper, il faudra faire une dll en C utilisant le JNI permettant de convertir les types JAVA en C (type que comprend LabView). Cette dll C appellera les fonctions de la dll Java en faisant la conversion. Enfin dans votre programme LabView vous appellerez cette dernière dll C.

Pour le JNI voici 2 liens intéressant :
http://www.lkn.ei.tum.de/arbeiten/faq/man/JAVA-tutorial/native1.1/TOC.html#stepbystep
http://www.jmdoudoux.fr/java/dej/chap028.htm

N'étant pas un spécialiste du JAVA et surtout en ce qui concerne la compilation (et notamment au format dll) je ne sais pas si votre demande est réalisable.

Au fait, pour les autres lecteurs, j'ai réussit à régler mon problème initial sans rien modifier et en utilisant simplement une version plus récente de LabView (LV 2009).

Salut
0
Rejoignez-nous