Bureau d étude COO-POO COOKBOOK: BLUETOOTH POUR JAVA. NGOM Moctar Sarr Groupe 1 4RT 09/10



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

Programmation Objet Java Correction

Remote Method Invocation (RMI)

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

Initiation à JAVA et à la programmation objet.

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>

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

Corrigé des exercices sur les références

Applet pour visualiser les variables «automate» notifiées

La base de données XML exist. A. Belaïd

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

RMI le langage Java XII-1 JMF

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

Java DataBaseConnectivity

Traitement de données

La carte à puce. Jean-Philippe Babau

Remote Method Invocation Les classes implémentant Serializable

Premiers Pas en Programmation Objet : les Classes et les Objets

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Déploiement d applications Java ME

Programmer en JAVA. par Tama

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

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

Cours 1: Java et les objets

Chapitre 10. Les interfaces Comparable et Comparator 1

Exécution de PCCOMPTA à distance sous Terminal Server 2003.

Protocole SSH-2.0. Tuan-Tu, TRAN. Janvier 2009

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Guide de connexion Wi-Fi sur un hotspot ADP Télécom

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

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

Supervision sécurité. Création d une demande de descente. 13/03/2014 Supervision sécurité Création d'une demande

Programmation Réseau SSH et TLS (aka SSL)

Paramétrage de compte mail netplus sur iphone et ipad

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

Atelier Le gestionnaire de fichier

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

Programmation Orientée Objet

Remote Method Invocation en Java (RMI)

Calcul Parallèle. Cours 5 - JAVA RMI

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

Auto-évaluation Programmation en Java

Android comme périphérique annexe.

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

Android et le Cloud Computing

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

Un ordonnanceur stupide

Machine virtuelle Java pour Palm TX

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Flux de données Lecture/Ecriture Fichiers

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

INSTALLATION WINDOWS SERVER 2008 R2

Crédits... xi. Préface...xv. Chapitre 1. Démarrer et arrêter...1. Chapitre 2. L interface utilisateur...25

OpenPaaS Le réseau social d'entreprise

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

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

Java Licence Professionnelle CISII,

Programmation par les Objets en Java

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

TP Programmation Java / JDBC / Oracle

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

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

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée Virtual Server de Microsoft

Utilisation d objets : String et ArrayList

as Architecture des Systèmes d Information

Introduction à HTTP. Chapitre HTTP 0.9

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Threads. Threads. USTL routier 1

Architecture Orientée Service, JSON et API REST

Cahier des charges (CDC)

TP1 : Initiation à Java et Eclipse

Mai

Manuel d installation de l application Dimona New via SMS

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA

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

Chapitre I Notions de base et outils de travail

Langage Java. Classe de première SI

Editer un script de configuration automatique du proxy

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

MOBILITE. Nomadio, le dialer d entreprise. Datasheet

Interfaces graphiques avec l API Swing

Corrigés des premiers exercices sur les classes

et dépannage de PC Configuration Sophie Lange Guide de formation avec exercices pratiques Préparation à la certification A+

Projet de Veille Technologique

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Programmation Internet en Java

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

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Java Licence Professionnelle CISII,

TCHATONS PAR LIAISON SANS FIL BLUETOOTH

TD3: tableaux avancées, première classe et chaînes

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Prise en main rapide

TP1. Outils Java Eléments de correction

TP : STATION BLANI 2000 SIMULATION DU RESEAU INFORMATIQUE

GeniusTim_Labo Version 1.0

Documentation CAS à destination des éditeurs

Transcription:

Bureau d étude COO-POO COOKBOOK: BLUETOOTH POUR JAVA CHUI Rodney NGOM Moctar Sarr Groupe 1 4RT 09/10 Tuteur : M. ROMARIC

I. Introduction Ce document permet de découvrir le processus de connexion entre un PC et un téléphone mobile via le protocole de communication Bluetooth. En effet, dans le cadre du projet BE COO/POO, nous réaliserons cette connexion grâce au langage de programmation Java. Le sujet de notre projet étant de pouvoir créer un Quizz interactif entre le professeur et les élèves, nous nous sommes donc penchés sur l utilisation du Bluetooth pour pouvoir envoyer les réponses des élèves vers le serveur de traitement de données. Effectivement, un «client Bluetooth» installé sur le téléphone portable d un élève pourra envoyer ses réponses vers l ordinateur du professeur sur lequel sera installé un «proxy Bluetooth». Ce dernier sera chargé de rapatrier les réponses vers le serveur de traitement de données (cet échange sera fait en Wi-Fi). Pour programmer via le protocole de communication Bluetooth, nous avons décidé d utiliser la librairie JSR-82, ou plus particulièrement l API Bluecove qui reprend les différents éléments de cette librairie (Bluecove est utilisé pour programmer le proxy car initialement la librairie JSR-82 est dédié exclusivement au J2ME, alors que le proxy doit être programmer avec le J2SE). Voici la pile du protocole de communication:

L API JSR-82 est capable de multiples fonctions telles que l enregistrement des services disponibles, découvrir des périphériques et des services, établir des connexions entre des périphériques, utiliser ces connexions pour s échanger des données, contrôler ces connexions, et assurer un certain niveau de sécurité. Dans ce document, nous présenterons donc les principales phases d établissement de connexion entre le «client Bluetooth» et le «proxy Bluetooth». II. Etablissement de la connexion II.a Principales phases de connexion Initialisation de la pile Initialisation du périphérique Découverte de périphériques Bluetooth Recherche d un service Enregistrement d un service Assignation à un service II.b Initialisation de la pile (Client et Serveur) La pile Bluetooth (présenté ci-dessus) est responsable du contrôle de l équipement Bluetooth, donc besoin est de l initialiser pour pouvoir établir une connexion entre deux périphériques distants. La phase d initialisation comprend un certain nombre d étapes qui permettront par la suite au périphériques d établir une communication, mais souvent ce sont les fabricants de ces périphériques qui s occupent d effectuer tout cela. II.c Initialisation du périphériques (Client et Serveur) Après que la pile soit initialisée, il faut maintenant que notre périphérique Bluetooth soit détectable par d autres périphériques distants. Pour cela, la librairie fournit une classe LocalDevice permettant de récupérer plusieurs informations (adresse physique, nom du périphérique, «objet» périphériques). C est aussi cette classe qui initialisera le périphérique pour qu il soit détectable à distance. Voici un exemple: public static void main(string[] args) throws Exception{ /*méthode permettant de récupérer l «objet» périphériques*/ LocalDevice local = LocalDevice.getLocalDevice(); /*méthode permettant de mettre le périphérique en état d écoute*/ local.setdiscoverable(discoveryagent.giac); OU local.setdiscoverable(discoveryagent.liac); } Remarque: GIAC General Inquire Access Code, le périphérique est disponible tout le temps. LIAC Limited Inquire Access Code, le périphérique n est disponible qu un certain temps.

II.d Découverte de périphériques Bluetooth (Client et Serveur) Etant donné que le protocole de communication Bluetooth est sans-fil, il faut que chacun des périphériques puisse découvrir les autres périphériques communicant en Bluetooth. Pour cela, la librairie JSR-82 fournit la classe DiscoveryAgent et l interface DiscoveryListener. Bien-sûr, pour que le périphérique puisse en détecter un autre, il faut au préalable que celui-ci ait effectué l étape précédente (II.c). Voici un exemple: /*méthode permettant de récupérer l agent de découverte*/ DiscoveryAgent agent = local.getdiscoveryagent(); /*méthode permettant de faire la demande de recherche de périphériques*/ agent.startinquiry(discoveryagent.giac,(discoverylistener) this); Remarque: ici l agent ne recherche que des périphériques en mode GIAC, et le deuxième argument permet d appeler des méthodes de callback lorsque la recherche est fructueuse ou non. II.e Recherche d un service (Client) Lorsque l agent local a découvert un périphérique distant, il peut alors commencer à chercher des services présents sur le point terminal distant. Puisque la recherche de services est similaire à la recherche de périphériques distants, la classe DiscoveryAgent fournit aussi des méthodes pour découvrir des services, et pour initier l échange de services. Voici un exemple: /*méthode permettant de récupérer les services d un périphériques distant*/ agent.searchservices(null, uuids, remotedevice,(discoverylistener) this); Remarque: uuids représente la variable dans laquelle on va stocker l identifiant d un service, remotedevice le périphérique distant. II.f Enregistrement d un service (Serveur) Avant qu un service ne puisse être découvert, il faut d abord qu il soit enregistré dans un «server de périphérique bluetooth». Ce dernier permet de créer une base contenant la définition des services offert, ajouter les services dans cette base pour qu il soit disponible, accepter les connexions d un client, enlever un service de cette base. Voici les différentes étapes nécessaires pour mettre cela en place: 1. Créer une nouvelle instance d un service associée à une URL: StreamConnectionNotifier service = (StreamConnectionNotifier) Connector.open(«URLchoisi»); 2. Mettre le service en état de marche: StreamConnection connection = (StreamConnection) service.acceptandopen(); 3. Fermer le service lorsque le server va s arrêter: service.close(); II.g Assignation à un service (Client) Après avoir découvert les services disponibles grâce à la partie II.e, il faut maintenant pouvoir s enregistrer auprès de ce service pour lui indiquer qu on veut l utiliser. On récupère les informations de ce service (notamment son URL) puis on s y assigne. Voici un exemple : /*cette méthode retourne l URL du service*/ String url = record.getconnectionurl(record.noauthenticate_noencrypt, false);

/*cette méthode permet de s assigner au service choisi*/ StreamConnection connection = (StreamConnection) Connector.open(url) ; III. Communication Après avoir établit la connexion entre deux périphériques bluetooth, et après avoir choisi un service particulier, il faut maintenant choisir un protocole de communication pour pouvoir utiliser ce service. Plusieurs protocoles de communications existent tels que OBEX, RFCOMM ou encore L2CAP. C est selon les besoins du service que sera choisi le protocole de communication. Voici un exemple de communication avec le protocole de communication RFCOMM : /*On suppose que la connexion est déjà établi*/ /*Ce code est valable pour le client et le serveur*/ Try{ Byte buffer[] = new byte[100]; String msg = hello ; InputStream is = connection.openinputstream; OuptStream os = connection.openoutputstream; os.write(msg.getbytes); is.read(buffer); connection.close(); }catch(ioexception e){ e.printstacktrace(); }