Utiliser une DLL dans un programme Java
JNI puis intégrés au programme Java. Il ne s'agit pas toujours d'accéder à des ressources systèmes, mais parfois
d'exporter des algorithmes complexes pour les exécuter plus rapidement ou pour communiquer avec une application
non Java qu'il serait trop long, impossible ou inutile de migrer sous Java.
Dans notre cas (DLL fournie par un constructeur), il est impossible de recompiler le code pour indiquer qu'on
souhaite utiliser JNI. Il faut trouver une solution d'interface Java / natif qui laisse la DLL inchangée. Un article sur le
site web de Processing décrit un hack de Processing [http://processing.org/hacks/doku.php?id=hacks:jnative] basé
sur JNative, une extension open-source qui permet ce type d'accès dynamique aux fonctions d'une DLL.
Résumé des opérations à faire pour programmer l'accès
étudier la DLL cible pour connaître ses fonctions
installer la DLL dans le répertoire c :/Windows/system32
créer une classe Java basée sur JNative
écrire les opérations qui implémentent les accès à chaque fonction de la DLL
écrire de nouvelles fonctions simplifiées indépendantes de JNative
compiler le programme Java
Résumé de la chaîne d'exécution
L'application Processing utilise des opérations simplifiées qui correspondent aux fonctionnalités proposées par la
DLL.
Ces opérations traitent l'encapsulation (configuration, gestion des exceptions, changement des types de données,
call-back) en utilisant l'API JNative.
Les classes de JNative prennent la main pour appeler une DLL JNative en passant les paramètres et récupérant
les valeurs en retour.
La DLL JNative traite chacun des appels Java en gérant l'accès à la DLL cible (directement de natif à natif)
permettant ainsi de dépasser la limite de JNI qui nécessiterait une recompilation de la DLL cible.
Cas pratique
On va utiliser Processing et JNative pour écrire un programme d'accès à la carte d'expérimentation permettant de
faire des lectures et écritures sur les ports numériques et analogiques via la liaison USB.
Etude de la DLL
Deux DLL sont fournies sur le cédérom d'installation et d'exemples fourni avec le kit K8055 : "K8055D.DLL" et
"K8055D_C.DLL". La première est destinée aux programmes Visual Basic et Borland, tandis que la seconde est
destinée aux programmes Visual C++, sans autre explication... difficile surtout pour ceux qui ne veulent utiliser aucun
de ces logiciels.
Il faut tout d'abord vérifier les fonctions mises à dispostion dans chacune de ces DLL fournies par Velleman : cette
étape pourrait être superflue car des spécifications (document PDF en français) sont fournies, mais c'est l'occasion
surtout de noter le nom exact de ces fonctions tel que le compilateur utilisé par Velleman a pu les modifier. En effet,
le compilateur "décore" ("mangle" en anglais) le nom des fonctions, en ajoutant des caractères devant et derrière. On
va utiliser un petit utilitaire "dllexp" (disponible sur le site de Nirsoft
Copyright © PoBot Page 3/8