projet ra

publicité
PROJET RA
Bluetooth/J2ME
Serge Chaumette
Arnaud Casteigts
De Peretti Cyril
Besse Alexandre
Soubaya Patrice
Endeler Sébastien
1.Introduction
L'objectif de ce projet est de pouvoir simuler la souris et le clavier d'un ordinateur à partir d'un téléphone portable. Le téléphone doit être compatible Bluetooth et supporter le langage J2ME et le PC doit être équipé d'un adaptateur Bluetooth.
Nous utilisons un adaptateur Bluetooth quelconque et un téléphone Sony Ericsson P910i muni d'un stylet mais dont le clavier n'est pas utilisable par Java.
Pour la réalisation de ce projet, nous nous sommes inspirés des travaux effectués l'an dernier sur le même sujet et particulièrement des travaux de Jean­
Philippe CAMBOURNAC et Yiting LI pour la partie affichage du clavier sur le téléphone et gestion de la position du stylet. 2.Connexion
Pour établir une connexion entre le téléphone et le PC via Bluetooth, nous utilisons le protocole Rfcomm (plutôt que L2CAP) et les sockets coté PC.
La connexion depuis le portable se fait indépendamment à l'intérieur d'un Thread Java avec un StreamConnection et les méthodes openOutputStream.
La méthode write d'un objet OutputStream envoie les messages sous forme d'octets.
3.Serveur
La partie serveur(PC) a été développé en C en utilisant les bibliothèques Bluetooth pour la partie connexion/communication et les bibliothèques Xlib pour la partie traitement des évènements reçus.
Le serveur attend une connexion(rfcomm) entrante puis se met en attente de nouveaux messages envoyés par le téléphone. Selon le type du message reçu, il envoie les évènements correspondants via les méthodes X.XWarpPointer() qui fait bouger le curseur et XsendEvent() pour simuler un clic de souris ou une touche du clavier enfoncée.
4.Client
La partie client(portable) est donc implémentée en Java(J2ME). Nous avons développé un MIDlet Java qui émet des données vers le PC lorsque l'utilisateur interagit avec l'interface.
Il faut noter que le clavier matériel du téléphone sera remplacé par un clavier virtuel qui en reproduira la plupart des fonctionnalités classiques. En effet, le clavier matériel n’est pas exploitable par Java. D’autre part, pour gérer un certain nombre de touches, le code ASCII étant limité, le codage ISO 8859­1 est plus approprié.
La partie souris, sera émulée par un stylet si le téléphone possède un écran tactile, ou par les touches du clavier numérique ou encore par un joystick. La gestion des déplacements de la souris, côté téléphone, sera effectuée à l’aide des primitives de la classe Canvas, qui implémen­
tera la partie réservée à l’affichage.
Il a fallu dans un premier temps définir le protocole de communication entre le téléphone et le PC.
– Pour la gestion du clavier , le téléphone envoie un code ISO 8859­1 correspondant à la touche sélectionnée.
– Pour la gestion du mouvement de la souris, le téléphone envoie deux entiers correspondant au déplacement effectué depuis l’emplacement précédant de la souris.
– Pour la gestion des clics de la souris, le téléphone envoi un entier correspondant à l’état des clics émis.
Pour des raisons évidentes de rapidité d’exécution, pour tout ce qui a trait aussi bien à la souris qu’au clavier, aucun accusé de réception n’est demandé, évitant ainsi de surcharger la communication entre le téléphone et le PC.
Le clavier
Le clavier virtuel est géré sur la partie inférieure de l’écran et contient 3 modes – ABC minuscule : accès aux touches principales du clavier, à l’exception des touches de F1 à F12, début, fin, page suivante/précédente, pause, imprime écran, alt, ctrl et alt­gr.
Cependant, certaines de ces touches pourront être rajoutées ultérieurement.
– ABC majuscule : accès aux mêmes touches que l’autre mode ABC précédent, mais en majuscule et la touche retour arrière se transforme en suppression.
– 123 : accès au pavé numérique et à certains caractères spéciaux.
Présentation des divers modes du clavier dans l’ordre cité :
La souris
Si le clavier est activé, la souris est gérée dans la partie supérieure de l’écran, sinon elle est gérée sur toute la surface de l’écran.
La manipulation du stylet envoie des informations codées de la manière suivante :
– On appuie sur l’écran (inférieur à 250ms) : émulation d’un clic gauche.
– On appuie sur l’écran (supérieur ou égal à 250ms) : émulation d’un clic droit.
– On déplace le stylet sur l’écran après un clic gauche : déplacement de la souris.
Pour les téléphones n’ayant pas d’écran tactile, on peut déplacer la souris comme suit :
– Déplacement de la souris en utilisant le joystick5 .
– Déplacement de la souris en utilisant le pavé numérique du téléphone. Les touches 1, 2,3, 4, 6, 7, 8, 9 sont utilisées pour le déplacement de la souris.
– Les clics sont gérés par les touches *, 0, #, 5, respectivement clic gauche, double clic gauche, clic droit et clic gauche. La touche action du joystick a le même effet que la touche 5.
Lors du déplacement, un carré rouge apparaît à l’écran suivant le déplacement souhaité de la souris.
5.Communication
Le protocole de communication défini est assez simple puisqu'on envoie les données uniquement dans un seul sens (portable vers PC). On envoie d'abord un message qui définit le type d'évènements à générer puis on envoie les données dont on a besoin. Typiquement, pour un déplacement de la souris, le portable envoie 'S', puis le déplacement sous forme de 2 entiers. Pour un clic souris, on envoie 'C' et pour une touche du clavier, on envoie 'K' puis le code Ascii de la touche.
6.Outils utilisés
–
–
J2ME Wireless Toolkit
Kbluetooth (Obex Push) pour l'envoi du fichier .jar sur le téléphone
7.Améliorations
–
–
Il serait intéressant d'enregistrer le service proposé (via SDP) coté serveur pour permettre la découverte du service coté client .
Gestion des touches manquantes, du clic droit, déplacement de fenêtres
Téléchargement