PROJET RA
Bluetooth/J2ME
Serge Chaumette
Arnaud Casteigts
De Peretti Cyril Soubaya Patrice
Besse Alexandre 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 quau 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
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !