Systèmes d acquisition - Partie "Java"



Documents pareils
NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

Mini_guide_Isis_v6.doc le 10/02/2005 Page 1/15

1 Démarrer L écran Isis La boite à outils Mode principal Mode gadget Mode graphique...

Mini_guide_Isis.pdf le 23/09/2001 Page 1/14

EIP 2012 Projet Livepad. Documentation technique 1.5

Développement Logiciel

Interfaces graphiques avec l API Swing

Auto-évaluation Programmation en Java

Education Delivery Intelligent Tool

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

Java 7 Les fondamentaux du langage Java

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Chapitre 4. Gestion de l environnement. Pré-requis. énoncé

Création du projet : 1 sur 13

Cours 1: Java et les objets

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

!!! Archipad version 1.4. Manuel de Référence

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

Manuel Utilisateur Chariot odys.sante-lorraine.fr

Dans l idéal, ceci devrait être fait en amont pour chaque image envoyée sur l espace de stockage de votre site internet.

Guide de l utilisateur. Faites connaissance avec la nouvelle plateforme interactive de

Introduction à Eclipse

Suite logicielle ZOOM version 7.1 Guide d installation 94ZM-ZMJ1F-712

TABLE DES MATIÈRES 1. DÉMARRER ISIS 2 2. SAISIE D UN SCHÉMA 3 & ' " ( ) '*+ ", ##) # " -. /0 " 1 2 " 3. SIMULATION 7 " - 4.

Guide d installation de MySQL

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

Le langage C. Séance n 4

Découvrir l'ordinateur (niveau 2)

Manuel BlueFolder ADMINISTRATION

Utilisation du logiciel GALAAD

Ecran programmable. Testez la différence grâce. à sa puissance, sa rapidité. et ses possibilités réseaux

GUIDE D UTILISATION DU TABLEAU BLANC INTERACTIF EBEAM EDGE

Prise en compte des ressources dans les composants logiciels parallèles

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

Console de supervision en temps réel du réseau de capteurs sans fil Beanair

Niveau 1. Atelier d'initiation à l'ordinateur ... Fondation de la Bibliothèque Memphrémagog inc. Magog (Québec) J1X 2E7 Tél.

Thunderbird est facilement téléchargeable depuis le site officiel

Utilisation de l éditeur.

Etudier l influence de différents paramètres sur un phénomène physique Communiquer et argumenter en utilisant un vocabulaire scientifique adapté

Création d un document PublishView

1. Introduction à la distribution des traitements et des données

Enregistreur sans papier. Interface LON. B Description des interfaces 10.99/

GUIDE D INSTALLATION INTERNET haute vitesse

TP redondance DHCP. Gillard Frédéric Page 1/17. Vue d ensemble du basculement DHCP

PAGE 1. L écran du logiciel d Open Office Draw. Barre de menu: Les commandes du logiciel

MANUEL D INSTALLATION

Formation. Module WEB 4.1. Support de cours

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et

Guide de démarrage rapide. (pour la version 5.0.)

C.F.A.O. : Conception et Fabrication Assistées par Ordinateur.

Micro-ordinateurs, informations, idées, trucs et astuces. Utiliser une caméra IP Trendnet IP-TV110. Auteur : François CHAUSSON

Sélection du contrôleur

TP1 : Initiation à Java et Eclipse

La base de données dans ArtemiS SUITE

COMMANDER A DISTANCE LE ROBOT-PONG ETUDE DE LA TELECOMMANDE (2 nde PARTIE)

PUBLICATION CPA R1 - Avril 2011 L UTILISATION DES TABLETTES ÉLECTRONIQUES EN AUTOMATISATION INDUSTRIELLE

Un ordinateur, c est quoi?

La gestion des exceptions

Gestion distribuée (par sockets) de banque en Java

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

TP01: Installation de Windows Server 2012

Prise en main rapide

TS 35 Numériser. Activité introductive - Exercice et démarche expérimentale en fin d activité Notions et contenus du programme de Terminale S

FICHE 17 : CREER UN SITE WEB

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

Avant-propos FICHES PRATIQUES EXERCICES DE PRISE EN MAIN CAS PRATIQUES

pas à pas prise en main du service sur le web Le Cloud

11 Février 2014 Paris nidays.fr. france.ni.com

RECOPLUS LOGICIEL DE GESTION DES RECOMMANDES NOTICE D UTILISATION DE RECOPLUS RESEAU. N de série

MAÎTRISE DE L ENVIRONNEMENT WINDOWS VISTA

NOTICE D UTILISATION

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

Lutter contre les virus et les attaques... 15

Créer et partager des fichiers

UltraBackup NetStation 4. Guide de démarrage rapide

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

PRESENTATION DE LA SOLUTION. CybEx E_Trade

Construire des plug-ins pour SAS Management Console SAS 9.1

PG208, Projet n 3 : Serveur HTTP évolué

A- Observez la vidéo A présentant le fonctionnement de deux objets techniques que nous

Fiche Produit FrontDesk Attendant Console

Support de formation Notebook

Projet Active Object

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

TP2 : Client d une BDD SqlServer

Instructions d installation de IBM SPSS Statistics pour Windows (licence de site)

UN PROCEDE DE SUPERVISION ET TELESURVEILLANCE A DISTANCE : UN OUTIL PEDAGOGIQUE FAVORISANT L INITIATION AU TRAVAIL DE GROUPE

Panneau solaire ALDEN

Évaluation des compétences. Identification du contenu des évaluations. Septembre 2014

Silhouette Studio Leçon N 2

HAYLEM Technologies Inc.

Instructions d installation de IBM SPSS Statistics pour Windows (mono-utilisateur)

SOMMAIRE. Présentation assistée sur ordinateur. Collège F.Rabelais 1/10

Club informatique Mont-Bruno Séances du 05 octobre et du 24 octobre 2012 Présentateurs : Réjean Côté

TP, première séquence d exercices.

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Transcription:

Systèmes d acquisition - Partie "Java" S. Reynal Automne 2015 Cette série de trois séances de TP Java a pour objectif de vous initier au développement rigoureux d applications, et en particulier d IHM, dans le domaine de l acquisition et de l instrumentation. Seront abordés : la modularité, autour du paradigme model-view-controller la réalisation d IHM avec les frameworks Graphics2D et Swing les sockets et la communication en java sur un réseau la parallélisation avec les Threads Il y a beaucoup de choses à réaliser : de fait, si vous êtes à cours de temps, vous pouvez sauter certaines parties et choisir celle pour laquelle vous avez le plus de compétences à acquérir (ces TP ne sont pas notés, profitez-en!). 1 Cahier des charges Il vous est proposé de développer un oscilloscope virtuel en java, qui permet d afficher des signaux provenant soit d une carte d aquisition, soit d un serveur connecté à des capteurs distants (aka ZigBee par exemple). Ce cahier des charges vous donne quelques contraintes de développement de votre application. Cellesci étant volontairement succinctes, il s avère que ce qui est imposé dans la suite doit impérativement être respecté, et qu a contrario tout ce qui n est pas imposé constitue votre marge de liberté et de créativité. Les classes seront organisées en trois packages : model : classes dédiées à la représentation et aux stockage des signaux ayant précédemment fait l object d une acquisition, soit directement depuis une carte NI, soit depuis un fichier stocké sur le disque dur, soit depuis un serveur ; view : classes dédiées à la visualisation des signaux ; ici on trouvera les éléments habituels d un panneau avant d oscilloscope : écran, grilles, axes, boutons de réglage de calibre, etc.

controller : classes dédiées aux évènements de contrôle du panneau avant de l oscilloscope, c esà-dire gestion des évènements souris et clavier. En outre, on créera une classe principale Oscilloscope : elle contient un constructeur qui est chargé d initialiser toutes les autres classes de l application (model, view et controller), et une méthode main() qui ne doit faire RIEN D AUTRE que d appeler ce constructeur. 2 package "model" Ce package contient les classes suivantes : 2.1 Signal Représente un signal composé d échantillons de type "double". Fields : tableau d échantillon, fréquence d échantillonage, nombre de bits de quantification, unité physique. Constructeurs : un signal peut être initialisé sous forme de signal prédéfini (prévoir une enum contenant les constantes NOISE, SINE, SQUARE) ou à partir d un fichier sur le disque dur au format matlab binaire méthodes : outre les getters et setters habituel, la classe signal permet d ajouter ou d enlever des échantillons à la volée. 2.2 SignalTools Classe offrant des outils de traitement de signal Est initialisé à partir d un Signal fournit en argument méthodes : à votre convenance, mais on peut imaginer : calculs statistiques, transformée de Fourier, etc. Attention, le but est d implémenter une ou deux méthodes à titre pédagogique, par de réaliser une bibliothèque de qualité industrielle! 3 package "view" Ce package contient une classe principale "FrontPane" qui représente le panneau avant de l oscillocope. Elle hérite de JFrame et est un container pour les classes Screen (l écran) et ControlPane (les boutons) ci-dessous. Attention à bien spécifier le Layout du container pour que les éléments Screen et ControlPane soient correctement agencés (Screen à gauche et ControlPane à droit par exemple). 2

3.1 Screen Représente un écran d oscilloscope permettant d afficher jusqu à quatre signaux avec des couleurs différentes ; Hérite de JPanel ; Pour dessiner dans un JPanel, on utilisera impérativement la classe awt.graphics2d (coordonnées de pixels codées en float et non plus en int ; possibilité de zoomer ; formes à dessiner codées sous forme de awt.geom.shape, etc.) et on surchargera la méthode paintcomponent de cette classe ; cette dernière méthode délèguera à la classe Grid le soin de se "dessiner" elle-même Une méthode permettra d ajouter de nouveaux signaux ou d enlever des anciens 3.2 Grid Représente une grille graduée ; c est ce qu on appelle un helper class (indice : est-elle public ou package du coup?) car elle sert uniquement à Screen Fields : le pas de la grille (vertical et horizontal) ; la couleur de la grille ; la présence ou non de labels et de graduation Méthodes : une méthode paintcomponent(graphics2d g) permettra de dessiner la grille (délégation depuis Screen) 3.3 ControlPane Représente le panneau de contrôle de l oscilloscope (boutons, potentiomètres, etc) Réalisation sous forme de composents Swing (java.swing) : JButton, JText- Field, JSpinner, etc Le traitement des évènements souris ou clavier reçus par cette classe est délégué aux classes du package "controller" ci-dessous 4 package "controller" 4.1 MouseHandler Il s agit d une classe gérant les évènements souris (aka awt.event.mouselistener et MouseMotionListener) Screen délègue à cette classe le soin de gérer ces évènements 3

4.2 KeyHandler Même chose pour les évènements clavier (aka awt.event.keylistener) 5 Threads Si vous en êtes là, c est bien, vous êtes brillants! Alors venez me voir pour que je vous explique comment paralléliser votre code. 6 sub-package "model.network" et capteurs distants dans le cloud Cette ultime partie permet de s initier aux sockets. L objectif est de simuler la réception par un serveur (la machine sur laquelle vous développez) de données (température, etc.) émises par plusieurs capteurs intelligents connectés au serveur via le réseau (ethernet ou WiFi). Ces données sont un autre moyen d initialiser un objet Signal, donc. Commencer par implémenter la classe "Sensor" qui hérite de la classe "Thread". Cette classe se contente pour l instant, dés que le thread est démarré, d afficher régulièrement, chaque seconde, une donnée de mesure factice (un nombre aléatoire) à l écran (via la console). Le code correspondant se trouvera dans la méthode "run()", et repose sur une boucle infinie et l appel de la méthode "sleep()" (attention à bien gérer les exceptions associées). Les threads seront lancés depuis la méthode "main()". L affichage souhaité pour chaque Sensor est à titre indicatif du type : "Capteur numéro 4 : température = 28C".Dans un second temps, on créera un objet Signal à partir de ces data. Implémenter maintenant la classe Serveur. Cette classe hérite de ServerSocket et est chargé d attendre les connections émanant de clients (les capteurs). Elle repose sur l appel de la méthode "accept()" de la classe ServerSocket, qui renvoie un Socket représentant la connection active. Une fois la connection activée, récupérer le InputStream associé à la connection via la méthode ad hoc dans Socket, lire une donnée (un double) depuis la connection, fermer la connection, et passer au client suivant. Pour l instant, le serveur ne peut gérer qu une connection active avec un client à la fois. On devra utiliser la classe DataInputStream (paquet java.io). Le code n est véritablement fonctionnel que s il existe des clients! Ajouter à la classe Sensor dans la méthode run(), la connection au serveur (via la classe Socket). Une fois la connection acceptée par le serveur, récupé- 4

rer le OutputStream associé (via la méthode getoutputstream de la classe Socket), et écrire un double correspondant à la température. Ajouter à la classe Serveur la possibilité de gérer plusieurs connection simultanément, via le multithreading. Pour cela, il faut insérer le code qui attend un client (la méthode accept()), à l intérieur de la méthode run() d un thread (ou implémenter la méthode run() de l interface Runnable, autre approche), puis lancer un nouveau thread à chaque nouveau client. Ensuite, il suffit de laisser les threads tourner en boucle infinie et communiquer avec leur capteur attaché. Remarque : vous pouvez travailler en équipe, un binôme développant la classe Sensor, un autre la classe Serveur. Ainsi les "faux" capteurs peuvent être disséminés sur plusieurs machines de la salle et émettre leur données pour le reste du groupe! 5