Cette partie concerne la phase de programmation du projet. Elle peut etre divisee en deux parties: la construction de liens virtuels, et le programme de controle des mouvements du robot.
4.1) Liens virtuels.
Notre programme principal sera execute sous Visual J++, logiciel qui est en fait un environnement de developement pour toute application et applet JAVA. Donc, pour garder le controle des autres composants du systeme (le capteur et le controleur du robot), nous avons eu a creer des liens virtuels pour recuperer et envoyer les donnees depuis le programme principal.
La premiere chose que nous ayons faite etait de recuperer toutes les fonctions et proprietes du logiciel de controle du capteur dans Visual J++. Comme explique dans le paragraphe 2, J++ a la capacite de supporter les objets ActiveX. Le logiciel fourni par ATI avec le capteur utilise un objet ActiveX pour afficher les forces et couples de facon visuelle. Nous avons donc importe cet objet dans l'environnement J++.
A ce stade de l'etude, nous pensons qu'il s'avere nessaire de decrire brievement la maniere de construire un projet JAVA dans J++.
Quand un programmeur utilise JAVA sous MS-DOS, il doit ecrire ou importer toutes les lignes de programmation pour concevoir l'interface graphique de son applet ou application.
La principale caracteristique de J++ est qu'il propose une librairie des principaux composants graphiques que l'utilisateur est succeptible d'utiliser, comme des boites de dialogue, des boutons, des diviseurs d'ecran ou encore des barres de defilement.
Quand l'utilisateur desire creer une fenetre graphique (appelee Form dans J++), il n'a qu'a faire glisser les elements qu'il veut ajouter de la boite a outils sur la fenetre graphique de son projet.
Les lignes de code JAVA necessaires a la construction de ces elements sont automatiquement ajoutees par J++ au programme principal.
Apres avoir ajoute des elements speciaux sur la fenetre graphique de son application (ou applet), l'utilisateur peut facilement associer des evenements a ces elements graphiques. Par exemple, en double-cliquant simplement sur un bouton ajoute dans la fenetre de conception, J++ va ajouter un squelette compose de deux lignes de programme dans le programme principal, appele le "Code".Ce que l'on appele Projet dans J++ est le Code (lignes de programmation en JAVA) et la Form reunis. Vous pouvez maintenant comprendre pourquoi J++ est un environnement de developement JAVA tres pratique, car il simplifie beaucoup le travail de programmation pour tous les objets graphiques.
Telechargez le fichier ci-dessous (Word 97) pour avoir une representation d'un projet dans l'environnement de developpement J++.cliquez ici pour telecharger la premiere copie d'ecran.
De plus, et c'est cette caracteristique qui nous a pousse a utiliser J++, ce logiciel permet d'importer des objets ActiveX dans les programmes JAVA.
Dans le but de recuperer tous les controles disponibles depuis le logiciel de controle ATI (Telechargez le fichier suivant pour en avoir une copie d'ecran), nous avons importe l'objet ActiveX (cube) qui supporte toutes les fonctions et parametres pour piloter le capteur et recevoir les informations.cliquez ici pour telecharger la seconde copie d'ecran.
Quand nous avons installe le software ATI sur notre PC, l'enregistrement des adresses de l'objet ActiveX dans la liste des objets ActiveX de J++ a ete fait automatiquement. La seule chose que nous ayons eu a faire a ete de faire glisser l'objet ActiveX sur la fenetre graphique de notre projet. Une fois l'objet place sur la fenetre graphique, J++ a cree tous les fichiers necessaires a l'acces aux proprietes de ce controle, et a aussi parametre toutes les adresses necessaires a la communication entre la carte de controle et l'objet ActiveX par lui meme, indirectement, notre programme.
La copie d'ecran suivante (a telecharger) vous donnera de plus amples explications.
cliquez ici pour telecharger la troisieme copie d'ecran.
Des que nous avons tous ces fichiers pour connecter l'objet ActiveX a la carte de controle du capteur, nous pouvons donc effectuer des tests sur les valeurs de forces et couples dans le fichier principal du projet (appele Form 1 dans l'exemple ci-dessus).
Ce programme sera le squelette du programme final, car a l'aide de ce programme, nous pouvons detecter si les valeurs de forces et couples sont au dessus ou en dessous de valeurs limites. Bien sur, nous pouvons faire les meme tests avec les resultantes de force et couple.
L'autre grande partie de cette programmation de liens virtuels a ete d'etablir un lien entre le programme J++ et les ports serie du PC, dans le but d'etre capable d'envoyer les instructions de mouvement au controleur du robot en fonction des valeurs de force et couples lues depuis le capteur.
Apres avoir fait un inventaire des differentes classes (*) disponibles dans J++, nous avons remarque qu'aucune d'elles ne permettait de creer une communication par le biais d'une liaison RS-232. Dans le but d'obtenir des informations a propos de cette incapacite de JAVA, nous nous sommes connectes au site Web de SUN. Cette visite nous a informes sur le fait qu'il existe une extension standard JAVA, appelee Java Communications API (Application Programmer’s Interface), qui permet exactement de faire ce que nous voulions faire. Ce package peut etre utilise pour creer des applications independantes de la plate-forme (utilisable sur n'importe quel PC, ou systeme d'exploitation). Le Java Communications API inclu des supports pour les ports serie RS-232 et pour les ports paralelles IEEE 1284.
Le package javax.comm fourni les fonctions de base suivantes:
- Enumeration des ports disponibles sur le systeme.
- Ouverture et identification de la propriete des ports.
- Resolution des conflits d'appartenance des ports entre plusieurs applications.
- Realise une transmission asynchrone ou synchrone.
- Recoit des informations concernant les changements d'etat des ports de communication.En fait, ce package ne fait pas partie de la librairie standard de classes Java (**), qui fournit l'ensemble des classes disponibles dans n'importe quel environnement Java (comme par exemple Visual J++).
(*): Une classe est un modele generique pour un ensemble d'objets ayant des fonctions similaires.
(**): Une librairie de classes est une collection de classes, destinees a etre reutilisees a maintes reprises dans differents programmes. La librairie standard de classes Java contient les quelques classes pour accomplir les taches basiques de programmation en Java.
Ci-dessous sont repertoriees les packages de classes qui font partie de la librairie de classes Java:
Java.lang: C'est le package principal du langage Java. Il contient toutes les les definitions et les types de base.
Java.util: Contient diverses methodes pouvant etre utiles, dont notamment certaines pour gerer les fichiers compresses (sous-package java.util.zip).
Java.io: Ce package sert a traiter tout ce qui concerne les flux de donnees, et notamment la gestion des fichiers.
Java.net: Ce package contient tout le necessaire a la gestion de reseaux dans les programmes Java: sockets...et gestion des differents protocoles de l'Internet: HTTP...
Java.awt: (AWT: Abstract Windows Toolkit) Permet de construire des interfaces graphiques tres completes en Java.
Java.applet: Ce package contient toutes les classes et les methodes necessaires a la gestion des applets, ces petits programmes Java que l'on insere dans les pages HTML.
Java.math: Dans cette librairie sont stockes tous les types et methodes permettant d'effectuer des calculs de toutes sortes.
Java.rmi: (RMI: Remote Methods Invocation) Permet a un programme de faire appel a des methodes situees sur des machines distantes, comme s'il sagissait d'une methode locale.
Java.beans: les Java Beans sont des composants logiciel reutilisables.
Java sql: Dans ce package, on trouve des methodes permettant d'acceder a des bases de donnees par le biais de driver JDBC (Java DataBase Connectivity), d'y effectuer des requetes SQL (Structured Query Language), et de traiter le resultat de ces requetes.
Java.text.
Java.security.
Nous avons telecharge gratuitement le package Java Communications et essaye de l'ajouter aux autres packages Java disponibles dans Visual J++. Ayant des difficultes pour l'inclure, nous avons demande le soutien technique d'un ingenieur de Microsoft, mais celui-ci nous a repondu qu'il n'avait jamais entendu parle au paravant de ce package et que Microsoft ne pouvait nous aider puisque les outils Java ne sont pas leurs produits... Finalement, apres avoir lu differents e-mails ecrit par des programmateurs ayant des problemes avec VJ++ , nous avons trouve un utilisateur residant en Allemagne, qui avait le meme probleme, a savoir utiliser Java Communications sous VJ++ .Nous lui avons envoye un e-mail et il nous a envoye en retour la reponse au probleme.
Pour utiliser le package Java Communications API 2.0 sous VJ++, il faut:
- Indiquer le chemin d'acces au fichier "comm.jar" dans le navigateur d'objets ("Object Browser").
- Indiquer aussi le chemin d'acces au fichier "comm.jar" dans le classpath du projet ("Project's classpath")
- Mettre le fichier "win32.dll" dans le "project explorer".
- Mettre le fichier "javax.comm.properties" dans le repertoire "java\lib". Notre chemin pour y acceder est: c:\windows\java\lib. Ce fichier "javax.comm.properties" doit etre correctement installe(dans le repertoire java\lib) sinon aucun port ne sera trouve.Note: win32.dll, comm.jar et javax.comm.properties sont trois fichiers contenus dans le package telecharge.
Maintenant que nous vous avons presente tous les composants du systeme, vous allez etre capable de comprendre l'organigramme appele “Architecture du Systeme”. Voir ci-dessous.
Sur cet organigramme nous avons represente les liens virtuels et physiques differemment . Les liens physiques qui sont materialises par des fils sont representes par des fleches rouges, et les liens virtuels, qui sont en fait des connexions internes dans le PC, sont representees par des fleches bleues.
Au centre du systeme, vous pouvez voir le PC sur lequel est installee la carte-controleur du capteur de mesure de force/couple. Toutes les communications entre le capteur et le controleur du robot sont faites par le PC. Le programme principal, ecrit sous VJ++, va donc etre execute dans le PC.
Un programme de demonstration permet d'enregistrer des mesures de force/couple et de tracer des graphiques sous Excel.Entre le PC et le controleur du robot, vous pouvez voir deux liens physiques permettant de commander le robot.
Le premier, appele lien "mode alter externe" est utilise pour envoyer, a partir du PC, les informations necessaires a modifier les mouvements du robot.
Le second, appele "mode terminal", est utilise pour assurer la communication terminal.