Applet pour visualiser les variables «automate» notifiées



Documents pareils
Programmation par composants (1/3) Programmation par composants (2/3)

Programmer en JAVA. par Tama

Auto-évaluation Programmation en Java

Création d un service web avec NetBeans 5.5 et SJAS 9

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Cours 1: Java et les objets

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Chapitre 10. Les interfaces Comparable et Comparator 1

Threads. Threads. USTL routier 1

Programmation par les Objets en Java

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Corrigé des exercices sur les références

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Java DataBaseConnectivity

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Introduction au langage Java

Calcul Parallèle. Cours 5 - JAVA RMI

Synchro et Threads Java TM

as Architecture des Systèmes d Information

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Programmation Orientée Objet Java

Introduction aux composants logiciels : JavaBeans Master des Technologies de l'internet

Remote Method Invocation Les classes implémentant Serializable

Projet de Veille Technologique

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Premiers Pas en Programmation Objet : les Classes et les Objets

PROGRAMMATION PAR OBJETS

Projet de programmation (IK3) : TP n 1 Correction

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Généralités sur le Langage Java et éléments syntaxiques.

TP1 : Initiation à Java et Eclipse

INITIATION AU LANGAGE JAVA

Programmation Par Objets

Développement Logiciel

Langage Java. Classe de première SI

Héritage presque multiple en Java (1/2)

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

La carte à puce. Jean-Philippe Babau

Programmation en Java IUT GEII (MC-II1) 1

Package Java.util Classe générique

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Une introduction à Java

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Java c est quoi? Java pourquoi?

Programmation Objet Java Correction

Introduction à JDBC. Accès aux bases de données en Java

Dis papa, c est quoi un bus logiciel réparti?

TD2 Programmation concurrentielle

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Introduction à la programmation concurrente

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Objets et Programmation. origine des langages orientés-objet

Plan du cours. Historique du langage Nouveautés de Java 7

Java Licence Professionnelle CISII,

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Alfstore workflow framework Spécification technique

Initiation à JAVA et à la programmation objet.

Exercices sur les interfaces

TD/TP PAC - Programmation n 3

Remote Method Invocation (RMI)

Chapitre 2. Classes et objets

Desktop Intégration. Rémi Forax

TD/TP PAC - Programmation n 3

RMI le langage Java XII-1 JMF

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Interfaces graphiques avec l API Swing

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Java Licence Professionnelle CISII,

Apprendre Java en 154 minutes

1. Langage de programmation Java

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Android UIThread, Thread, Handler et AsyncTask

Structurer ses données : les tableaux. Introduction à la programmation

1 Définition d une classe en Java

Application web de gestion de comptes en banques

OpenPaaS Le réseau social d'entreprise

Un ordonnanceur stupide

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Une introduction à la technologie EJB (2/3)

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Education Delivery Intelligent Tool

Chapitre VI- La validation de la composition.

Flux de données Lecture/Ecriture Fichiers

TP Programmation Java / JDBC / Oracle

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Tp 1 correction. Structures de données (IF2)

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Transcription:

Applet pour visualiser les variables «automate» notifiées Sommaire 1. Introduction...2 2. Lecture de variables «automate» notifiées...2 2.1. IHM servant au test :...2 2.2. Codage de l'applet :...2 3. Codage de l'applet de lecture notifiée...5 Lycée G. Eiffel - Armentières Page 1 sur 5 22/05/2006

1. Introduction Grâce aux librairies Java fournies par Schneider SAcomm.jar), il est possible de lire et écrire les valeurs des variables en mémoire. On peut ainsi connaître l état de la partie opérative : On peut lire le nombre de produits évacués pour chaque poste. Connaître les touches appuyées sur le clavier Lire et modifier la fréquence de chargement des produits Lire le numéro de produit reconnu par la caméra Dans ce document nous réaliserons un test de lecture en «mode notifié». 2. Lecture de variables «automate» notifiées 2.1. IHM servant au test : Cette IHM très simple servira à tester la lecture de variables notifiées. Exemple : nombre de produits évacués au poste 1 (%MW797). jtextfieldnbprodposte1 2.2. Codage de l'applet : Dans notre exemple nous ne mettrons en œuvre que la classe MonitorShort. Il est évident que pour d autres types de variables, il faut analyser le package SAcomm.jar pour trouver la fonction et / ou la classe correspondante (classes : MonitorInt, MonitorBool, ) Ref serialversionuid : long = 2136192383 status : int iddatatype : short address : String Ref(arg0 : short) getstatus() : int getdatatype() : short getbytevalue() : byte getshortvalue() : short getintvalue() : int getlongvalue() : long getfloatvalue() : float setstatus(arg0 : int) : void setdatatype(arg0 : short) : void isvalue() : boolean getaddress() : String setaddress(arg0 : String) : void addpropertychangelistener(arg0 : PropertyChangeListener) : void removepropertychangelistener(arg0 : PropertyChangeListener) : void firepropertychange(arg0 : String, arg1 : Object, arg2 : Object) : void getnumbervalue() : Number getnumbers() : Number[] getstring() : String firestatuspropertychange(arg0 : Integer) : void MonitorShort serialversionuid : long = 1996487035 MonitorShort() getvalue() : byte getvalues() : byte[] getvalues(arg0 : int) : byte MonitorShort(arg0 : ValueAdaptor) ReadRef serialversionuid : long = 2144335309 strval : String idvaluetype : short qty : short ReadRef(arg0 : short) getquantity() : short setquantity(arg0 : short) : void getvaluetype() : short setvaluetype(arg0 : short) : void initvals() : void getnumbers() : Number[] getstring() : String setvalues(arg0 : Number[]) : void setstring(arg0 : String) : void MonitorRef serialversionuid : long = -176226337 callbackname : String xactid : int fregistered : boolean fsubscribed : boolean subscribemsg : String finitialupdate : boolean MonitorRef(arg0 : short) isregistered() : boolean issubscribed() : boolean setquantity(arg0 : short) : void register() : void deregister() : void setdatatype(arg0 : short) : void setregistered(arg0 : boolean) : void setsubscribed(arg0 : boolean) : void MonitorRef(arg0 : ValueAdaptor, arg1 : short) getsubscribestatus() : String setaddress(arg0 : String) : void serverchanged(arg0 : ServerChangeEvent) : void updatevalue(arg0 : ValueChangeEvent) : void firestatuspropertychange(arg0 : Integer) : void setsubscribestatus(arg0 : String) : void Lycée G. Eiffel - Armentières Page 2 sur 5 22/05/2006

Voici les étapes fondamentales permettant de lire la valeur d une variable notifiée : On veut créer une applet qui sera automatiquement "notifiée" lors du changement de valeur d une variable dans la mémoire de l automate. Pour cela, la classe AppletLectureContinue doit implémenter l interface PropertyChangeListener afin de se mettre en écoute des changements de valeur des variables automate : import com.schneiderautomation.factorycast.* ; public class AppletLectureContinue extends Applet implements PropertyChangeListener Pour implémenter cette interface, il est nécessaire aussi d importer les classes : import java.beans.*; On créé une instance de la classe CommBean permettant de communiquer avec l automate : // Objet de communication avec l'automate private CommBean commfactorycast ; // Création de l'objet de communication avec l'automate commfactorycast = new CommBean() ; On créé une instance de la classe MonitorShort permettant de lire la valeur d une variable : /* Objet permettant de "surveiller" le changement de valeur d'une ou plusieurs variables dans la mémoire de l'automate */ private MonitorShort monitor ; MonitorShort permet de lire des variables de type short. Il existe d autres classes pour les autres types de variables (MonitorReal, MonitorString, ). On associe monitor, permettant la lecture notifiée, à l objet commfactorycast qui permet la communication avec l automate. /* Création de l'objet permettant de "surveiller" le changement de valeur d'une ou plusieurs variables dans la memoire de l'automate */ monitor = new MonitorShort(commFactoryCast.getAdaptor()); On définit quelques caractéristiques pour la lecture de variable en renseignant l objet de type MonitorShort. Ici on indique l adresse que l on veut lire (%MW797 correspond au Nombre de produits évacués au poste 1) : //Initialise le monitor monitor.addpropertychangelistener( this ); // redirection des évènements //automate vers les «listener» de l applet monitor.setaddress("%mw797"); monitor.register(); Lycée G. Eiffel - Armentières Page 3 sur 5 22/05/2006

On tente de se connecter à l automate et de démarrer la communication : try { // On tente une connexion avec l'automate commfactorycast.connect("192.168.33.8", false); // On lance la communication commfactorycast.start(); catch (Exception ex) { // Gestion d erreur System.out.println("Erreur :" + ex.getmessage()); On devra ensuite surcharger la méthode propertychange( PropertyChangeEvent evt ) de l interface PropertyChangeListener pour que l applet AppletLectureContinue puisse modifier le TextField à chaque changement de valeur de la variable notifiée de l automate PropertyChangeListener (from beans) propertychange(arg0 : PropertyChangeEvent) : void PropertyChangeEvent (from beans) PropertyChangeEvent(arg0 : Object, arg1 : String, arg2 : Object, arg3 : Object) getpropertyname() : String getnewvalue() : Object getoldvalue() : Object setpropagationid(arg0 : Object) : void getpropagationid() : Object On peut donc traiter les données suivant le type de changement de propriétés effectuées. Voici le prototype de la fonction propertychange() que l on doit surcharger : public void propertychange(propertychangeevent evt ) { String prop = evt.getpropertyname() ; if(prop.equals("value")) { valeur = monitor.getvalue(); // lecture des nouvelles valeurs // On affiche le résultat dans une zone d edition jtextfieldnbprodposte1.settext(string.valueof(valeur)); Le paramètre evt permet de d utiliser la fonction getpropertyname(). Grâce cette fonction, on peut récupérer le type d événement qui vient de se réaliser : «value» pour un changement de valeur de la variable récupérée par monitor.getvalue(). Lycée G. Eiffel - Armentières Page 4 sur 5 22/05/2006

La déconnexion s'effectue comme suit : try { commfactorycast.disconnect() ; catch(exception e) { // Gestion de l erreur System.out.println("Erreur :" + e.getmessage()); 3. Codage de l'applet de lecture notifiée En annexe, vous trouverez le code source de cette applet «test lecture notifiée» (Travail élève) Lycée G. Eiffel - Armentières Page 5 sur 5 22/05/2006