Rapport de stage technicien – été 2007

cowseedDéveloppement de logiciels

12 juin 2012 (il y a 1 année et 11 jours)

477 vue(s)


Gendre Laurent
Polytech' Nice Sophia-Antipolis
1645 route des lucioles – Parc de Sophia Antipolis
06410 BIOT

Rapport de stage technicien – été 2007
Wireless Care
Mr. Laurent Barnier
NXP
505 Route des Lucioles 06560 VALBONNE

Polytech' Nice Sophia Antipolis


Remerciements
Avant toutes choses, je tiens à remercier les personnes sans qui mon stage n’aurait pas
pu avoir lieu :

Mme Icart, Responsable des stages.

M. Henri Braquet, responsable des projets à l'EPU.

M. Laurent Barnier (notre Maître de Stage et directeur de l'innovation chez NXP)

M. Eric Pascual (notre responsable au CSTB)
Je remercie également les professeurs à l'EPU, les employés de NXP et les employés du

CSTB qui nous ont donné de leur temps pour nous aider.
Wireless Care
2
Rapport de stage
Polytech' Nice Sophia Antipolis


Table des matières
1 Introduction



.........................................................................................................................

5

2 Les entreprises et le contexte



.............................................................................................

6

2.1 Le challenge Jeunes Pousses



.....................................................................................

6

2.2 NXP



..............................................................................................................................

7

2.3 CSTB



.........................................................................................................................

10

3 Le Projet Wireless Care



....................................................................................................

14

3.1 Sujet



...........................................................................................................................

14

3.2 Etude du matériel



.......................................................................................................

15

4 Gestion du projet



...............................................................................................................

19

4.1 Méthodologie et planning



..........................................................................................

19

4.2 Ressources



................................................................................................................

21

5 Conception et réalisation



..................................................................................................

22

5.1 Conception de la carte électronique et de la liaison bluetooth



..................................

22

5.1.1 La carte électronique (Bracelet)
.........................................................................
22
5.1.2 La transmission Bluetooth
..................................................................................
25
5.2 Conception d'une base de données



..........................................................................

26

5.3 Conception de la plate forme de maintien à domicile



...............................................

30

5.3.1 Réalisation de la gestion des données Bluetooth/IP
..........................................
30
5.3.2 La liaison IP
........................................................................................................
33
5.3.3 Réalisation de la gestion des données IP/SQL
..................................................
33
5.4 Conception de la plate forme de maintien à l'extérieur



.............................................

35

5.4.1 Réalisation du programme J2ME
.......................................................................
35
5.4.2 Transmission Bluetooth vers le téléphone
.........................................................
38
5.4.3 Transmission par le WAP sur une bdd
...............................................................
39
6 Evolutions



..........................................................................................................................

40

7 Conclusion



........................................................................................................................

43

Wireless Care
3
Rapport de stage
Polytech' Nice Sophia Antipolis


Index des illustrations
Illustration 1: L'équipe Wireless Care
...................................................................................
6
Illustration 2: Répartition des employés dans le monde
.......................................................
9
Illustration 3: Répartition des ventes dans le monde
............................................................
9
Illustration 4: Départements du CSTB
................................................................................
12
Illustration 5: Carte de mesure
............................................................................................
16
Illustration 6: Mobile
............................................................................................................
16
Illustration 7: Dongle Bluetooth BL830
...............................................................................
17
Illustration 8: Dongle Bluetooth Belkin
................................................................................
17
Illustration 9: Module Bluetooth F2M03C2
..........................................................................
17
Illustration 10: Lecteur de glycémie
....................................................................................
18
Illustration 11: Vue interne du lecteur de glycémie
.............................................................
18
Illustration 12: Diagramme de Gantt
...................................................................................
20
Illustration 13: Architecture Générale
.................................................................................
22
Illustration 14: Schéma interne du bracelet
........................................................................
23
Illustration 15: PCB face composants
.................................................................................
23
Illustration 16: PCB face pistes
...........................................................................................
23
Illustration 17: Elevateur de tension
...................................................................................
25
Illustration 18: Base de données
.........................................................................................
26
Illustration 19: Enregistrements dans la base de données
.................................................
29
Illustration 20: Interface bluetooth/IP
..................................................................................
32
Illustration 21: Console Netbeans
.......................................................................................
34
Illustration 22: Simulateur d'interface
..................................................................................
36
Illustration 23: Structure d'un MIDLET
................................................................................
36
Illustration 24: Diagramme de conception
..........................................................................
37
Illustration 25: Exemple de configuration du F2M
..............................................................
40
Illustration 26: Brochage du module F2M
...........................................................................
41
Illustration 27: Commandes du lecteur de glycémie
...........................................................
42
Wireless Care
4
Rapport de stage
Polytech' Nice Sophia Antipolis


1
Introduction
Dans le cadre de nos études à l'école polytechnique de Nice Sophia-Antipolis, nous

avons
été amené à effectuer un
stage technicien
. C'est ainsi que dans la continuité de

notre
projet d'étude
Elec4, notre stage s'est déroulé en collaboration avec l'entreprise

NX P
. Notre projet est en fait un projet innovant qui est réalisé dans le cadre du

Challenge Jeunes Pousses
, un challenge qui a la
particularité d'être un concours de

création d'entreprise innovante. Dans un soucis d'organisation, la
majeure partie de notre

stage s'est déroulé du 05 Juillet au 10 Août 2007 dans les locaux du
CSTB
(Centre

Scientifique et Technique du Bâtiment) situé en face de NXP à Sophia-Antipolis. Il faut tout

de même savoir que NXP et le CSTB collaborent ensemble sur un projet de grande

envergure appelé projet
Gerhome
qui permet notamment le maintien à domicile de

personnes âgées, handicapées, etc ...
Not re projet réal isé pendant l'année scolai re et pendant le stage s'i nt i t ule
Wi reless Care
.
Le but du stage était de réaliser une chaîne de mesure pour le patient à domicile et une

chaîne de mesure pour le patient en déplacement. Différentes technologies rentrent en

compte dans la conception des deux systèmes (Liaison série, Bluetooth, Liaison IP,

Requête URL) et ainsi différents langages de programmation seront utilisés (C, JAVA,

J2ME, PHP, SQL).
Ce document présente l’évolution du travail durant le
stage
.
Une version numérique de ce document se trouve sur internet à :
http://www.esinsa.free.fr/Rapport/ELEC4/Stage/Rapport.pdf

Ces fichiers ont été générés avec OpenOffice. Les sources sont disponibles à :
h ttp ://www.esinsa.free.fr/Rapport/ELEC4/Stage/Rapport.odt

Wireless Care
5
Rapport de stage
Polytech' Nice Sophia Antipolis


2
Les entreprises et le contexte
2.1
Le challenge Jeunes Pousses
Notre projet a vu le jour dans le cadre du challenge Jeunes Pousses au cours de l'année.

Ce challenge organisé par Telecom Valley consiste à créer un projet innovant. Il est très

intéressant dans la mesure où il a
permis à
l'équipe Wireless Care d'acquérir des

compétences sur la création d'entreprise. L'équipe du projet était constitué de 3 élèves

ingénieurs de Polytech' Nice Elec et de 3 élèves commerciaux de l'Edhec.
De gauche a droite :
Hainzelin Jean Baptiste (
Polytech'Nice Sophia Antipolis
)
Setboun Anthony (
E DHEC
)
L'Hilali Adnan (
Polytech'Nice Sophia Antipolis
)
Ingham Gilles (
E DHEC
)
Gicquel Mathieu (
E DHEC
)
Gendre Laurent (
Polytech'Nice Sophia Antipolis
)
Wireless Care
6
Rapport de stage
Illustration
1
: L'équipe Wireless Care

Polytech' Nice Sophia Antipolis


2.2
NXP
Le stage s'est effectué en collaboration avec NXP :
NX P Semiconductors France
505 rte Lucioles 06560 VALBONNE
04 92 96 11 00

http://www.nxp.com/
NXP est une société créée le 1er septembre 2006 à partir de la scission de la division

semi-conducteurs de
Philips
.
Pour l'historique de la société, on peut dire que tout à commencé suite à une décision de

séparation de la branche Philips Semi-Conducteurs en Décembre 2005 par Frans van

Houten, le PDG de Philips Semiconductors. Dès lors, en Août 2006, 80.1% de Philips

Semiconductors est vendu à un groupe d'investisseurs privés américain (Kohlberg Kravis

Roberts & Co. (KKR), Silver Lake Partners et AlpInvest Partners NV) .
La nouvelle société créée s'appelle
NXP
. Le nom
NX P
fait référence au slogan

Wireless Care
7
Rapport de stage
Polytech' Nice Sophia Antipolis


Consumer Next Experience
ainsi qu'à la plateforme multimedia
Nexperia
de Philips

Semiconductors.
En 2006, NXP pointe tout de même à la 10e place parmi les vingt plus grands fabricants

de semi-conducteurs avec 2,3% de parts de marché.
Produits
Mobile :
L'industrie NXP est la précurseuse des solutions multimédias sur téléphone

comme la TV sur téléphone, la connectivité (Bluetooth, WLAN, UMA, NFC), les jeux,

l'audio MP3, la vidéo MP4, l'imagerie digitale et les services GPS.
Maison :
Les solutions basées sur Nexperia de NXP sont des composants audio/video

qui permettent à des fabricants de concevoir des systèmes multimédias de dernière

génération.
I dentification :
Les nouvelles technologies NXP sont conçues pour améliorer la vie et

la sécurité des personnes. La technologie RFID (Radio Frequency Identification) est utilisé

pour la médecine et les sytèmes de tickets. Par contre, la technologie NFC (Near Field

Communication) est conçue pour des accès immédiats complètement sécurisés aux

différents systèmes et services. Certains téléphones sont déjà équippés de NFC.
Véhicules :
La gamme Nexperia comprend des processeurs pour véhicules qui offrent

une qualité sonore exceptionnelle. De plus , les technologies réseaux embarquées comme

FlexRay augmentent la sécurité des véhicules avec une solution RF.
Semi-conducteurs :
NXP a une gamme impressionante de semi-conducteurs depuis

des blocs basiques comme des horloges ou des amplificateurs jusqu'à des blocs plus

sophistiqués qui améliorent le traitement multimédia, les connections sans fils et les

communications réseaux. Les puces produitent permettent entre autre des économies

d'espace, de gains sur les batteries et d'une implémentation plus rapide.
Logiciels :
NXP est un leader en ce qui concerne les logiciels qui améliorent la qualité

du son, de la voix et de la vidéo sur les téléphones.
Wireless Care
8
Rapport de stage
Polytech' Nice Sophia Antipolis


E mployés
(
Environ 37000 personnes dans plus de 20 pays)
Ventes
Wireless Care
9
Rapport de stage
Illustration
2
: Répartition des employés

dans le monde
Europe
Asie
Chine
Amerique
Illustration
3
: Répartition des ventes dans

le monde
Chine
Pays-Bas
Singapour
USA
Taiwan
Corée du sud
Allemagne
Autres
Polytech' Nice Sophia Antipolis


2.3
CSTB
Dans un soucis de locaux, notre stage s'est déroulé au CSTB à Sophia-Antipolis.
Le CSTB travaille en collaboration avec NXP sur le projet Gerhome.
Centre scientifique te technique du bâtiment (CSTB)
290 rte Lucioles 06560 VALBONNE

04 93 95 67 00


http://www.cstb.fr/
Avec, pour finalité, l’amélioration du bien-être et de la sécurité dans les bâtiments et leur

environnement, le CSTB exerce quatre métiers complémentaires : recherche, ingénierie

innovante, évaluation de la qualité et diffusion du savoir. Associés à ses domaines

d’expertise, ils lui permettent une approche globale du bâtiment, élargie à son

environnement urbain, aux services et aux nouvelles technologies de l’information et de la

communication.
Créé en 1947, le CSTB est un établissement public à caractère industriel et commercial

(EPIC), placé sous la tutelle conjointe du ministre du Logement et de la Ville et du ministre

de l'Ecologie, du Développement et de l'Aménagement Durables, Direction Générale de

l’Urbanisme, de l’Habitat et de la Construction.
Avec ses filiales :

ACOUSTB
(pour les études d’environnement acoustique),

CEQUAMI
(
www.constructeurs-nf.fr
) (pour la certification NF Maison Individuelle)

Aérodynamique Eiffel
(
www.aerodynamiqueeiffel.fr
) (pour l'aérodynamique

appliquée et l'aéraulique industrielle),

Certivéa

(certification des acteurs et des ouvrages de construction)
,
Wireless Care
10
Rapport de stage
Polytech' Nice Sophia Antipolis


Le CSTB est un établissement à la pointe de l’innovation dans le domaine de la

construction. Son fonctionnement est soumis à plusieurs autorités et instances de décision

et de contrôle : le Commissaire du gouvernement est le directeur général de l’Urbanisme,

de l’Habitat et de la Construction, le Conseil d’Administration, composé de six membres

représentants de l’État, six personnalités qualifiées et six représentants des salariés, est

présidé par Alain Maugard ; le contrôle financier et économique est assuré par Jean

Brunel, chef de mission de contrôle économique et financier.
Par ailleurs, en tant qu’organisme de recherche, le CSTB est doté d’un comité consultatif,

chargé d’orienter ses programmes de recherche. Composé de personnalités issues des

milieux professionnels du bâtiment, il est présidé par Yves Farge ; d’un conseil

scientifique, chargé d’évaluer ses compétences scientifiques et d’élargir ses relations avec

les laboratoires extérieurs, et dont la présidence est assurée par Jacques Varet, directeur

de la prospective du BRGM (Bureau de Recherche Géologique et Minière).
Wireless Care
11
Rapport de stage
Polytech' Nice Sophia Antipolis


Départements
Le CSTB comprend huit départements organisés autour de quatre thèmes

majeurs
implantés sur 5 sites : Marne la vallée, Paris, Nantes, Grenoble et Sophia

Antipolis.
Wireless Care
12
Rapport de stage
Illustration
4
: Départements du CSTB
Polytech' Nice Sophia Antipolis


Département technologie de l'information et diffusion du savoir
Très fortement impliqué dans de nombreux programmes de recherche nationaux et

européens, le CSTB au travers du département TIDS occupe une position de leader dans

le développement des applications et usages des technologies de l'information et de la

communication appliquées dans le secteur de la construction.
Les projets de recherche, renouvelés et menés en partenariat avec les organisations

professionnelles, des organismes de recherche spécialisés et des équipes universitaires,

ont pour but d'appliquer aux métiers du bâtiment les technologies informatiques et de

communication.
Les activités de ce service recouvrent entre autre des travaux de recherche, réalisés
dans le cadre de projets nationaux ou européens (programme " Information Society
Technologies " de la CEE), portant principalement sur :

l'exploration des technologies innovantes pour les bâtiments intelligents :

étude

de services d'aide au maintien à domicile des personnes dépendantes,

travaux sur la communication entre objets du bâtiment et ses applications. Cet axe

de recherche assume la place de coordinateur scientifique du projet GERHOME.

la modélisation des phénomènes physiques, la simulation numérique dans les
domaines thermo-hydro-mécanique, interaction fluide-structure et endommagement

l'utilisation des maquettes numériques 3D et du couplage simulations / Réalité
Virtuelle pour la conception et la communication de projets architecturaux,
d'aménagement urbain ou du territoire.

l'ingénierie documentaire, les technologies Internet appliquées à la publication
d'informations, la consultation de bases de données, au travail collaboratif, à la
mobilité.
Pour conclure sur le lieu de travail (CSTB), nous n'avions pas d'horaires fixes mais il fallait

effectuer un minimum de 35h/semaine.
Wireless Care
13
Rapport de stage
Polytech' Nice Sophia Antipolis


3

Le Projet Wireless Care
3.1
Sujet
Not re projet durant l'année consistai t à réal iser des mesures de températ ures

et de t ransmett re les données en série à un dongle bl uetooth qui l ui même

t ransmettai t les données à un téléphone.
Nous avions réal isé les premières étapes du projet global, c'est à di re :

Réal isat i on de mesures de températ ure sur pl aquette élect roni que.

Réal isat i on de l a t ransmission série + bl uetoot h.

Pr ogrammat i on du microcont rôleur en C.

Pr ogrammat i on par t iel le des menus du téléphone en J2ME.
Le stage technicien nous a permis de continuer ce projet.
Le but du stage était de réaliser

différentes
chaînes de mesures
(une chaîne pour le patient à
domicile et une autre

chaîne pour le patient en déplacement).

En ce qui concerne la partie « en déplacement » :
Bluetooth
Requête URL
En ce qui concerne la partie « à domicile » :
Bluetooth Liaison IP
Le principe étant d'effectuer des mesures via une carte de mesure (bracelet) et d'envoyer

les mesures sur un ordinateur lorsque le patient est chez lui ou vers un téléphone lorsqu'il

se déplace. Ensuite, à partir du téléphone ou de l'ordinateur on envoi les données sur une

Wireless Care
14
Rapport de stage
Carte de mesure
Téléphone
Serveur (Base de données)
Carte de mesure
Ordinateur (BOX)
Serveur (Base de données)
Polytech' Nice Sophia Antipolis


base de données stockée sur un serveur.
Le but final était de faire une démo à la fin du stage et d'utiliser les briques existantes au

mieux.
Le stage s'est décomposé en 8 lots :
Lot1 : Bluetooth Bracelet (carte de mesures)
Lot2 : Bluetooth Gerbox (ordinateur à domicile)
Lot3 : Liaison Bluetooth Bracelet/Gerbox
Lot4 : Gerbox : message Bluetooth vers transmission IP
Lot5 : Bluetooth téléphone mobile et menus
Lot6 : Mobile : message Bluetooth vers transmission choisie
Lot7 : Réception message sur base de données (serveur) et affichage
Lot8 : Travail sur d'autres capteurs
En parallèle, il fallait bien sûre réaliser la carte de mesures.
3.2
Etude du matériel
Le matériel que nous avons utilisé durant notre stage :

La carte de mesures

Ordinateurs portable Dell

Téléphone portable Sony Ericsson W830i

un dongle Bluetooth BL830 (port Série)

un dongle Bluetooth Belkin (port USB)

Un module Bluetooth F2M03C2 avec son kit de développement

Un lecteur de glycémie
La description de chaque composant ainsi que son utilité va donc être effectuée.
Wireless Care
15
Rapport de stage
Polytech' Nice Sophia Antipolis


La carte de mesures :
Ceci est la carte que nous avons conçue.
Elle est alimentée par deux piles 9V et possède un interrupteur On/Off et un interrupteur

de mesure. La donnée est convertie et envoyée par liaison série vers le dongle Bluetooth

BL 830.
Les ordinateurs portables :
Les ordinateurs portables ont été utiles afin de programmer en JAVA sous NetBeans et de

réaliser le circuit éléctronique sous Eagle. Un des ordinateurs portable a servi a simuler la

Gerbox et un autre ordinateur portable a servi à simuler le serveur de base de données.
Le téléphone portable :

Ce téléphone a permis de communiquer en Bluetooth grâce au profil

SPP (Serial Port Profil) et sur internet avec le WAP.
Nous avons chargé notre programme J2ME sur le téléphone puisque

celui ci est compatible MIDP 2.0 et CDLC 1.1 pour les développeurs.

Wireless Care
16
Rapport de stage
Illustration
5
: Carte de mesure
Illustration
6
:

Mobile
Polytech' Nice Sophia Antipolis


Dongle Bluetooth BL-830 :

Ce dongle est un module qui permet de communiquer

avec la technologie sans fils Bluetooth à partir d'une

connection RS232 9 broches (portée : 20 m). Il permet

entre autre de communiquer depuis la carte de mesures

vers le téléphone via le profil SPP.
Dongle Bluetooth Belkin :
Ce dongle est un module qui permet de communiquer

avec la technologie sans fils Bluetooth (en étant connecté

au port USB d'une machine ; portée : 100 m). Il est utilisé

sur la Gerbox (un ordinateur) pour communiquer avec

l'autre dongle Bluetooth.
Module Bluetooth F2M03C2 :

kit de developpement
module miniature
Bluetooth détachable
Ce module sera utilisé pour l'extension du projet afin de limiter l'encombrement du

dispositif Bluetooth.
Wireless Care
17
Rapport de stage
Illustration
7
: Dongle

Bluetooth BL830
Illustration
8
: Dongle

Bluetooth Belkin
Illustration
9
: Module Bluetooth

F2M03C2
Polytech' Nice Sophia Antipolis


Lecteur de glycémie :
Ce lecteur permet d’obtenir le taux de glucose dans le sang.
Pour ce faire, il suffit de se piquer le doigt puis d'appliquer une goutte de sang sur la

languette de mesure, ainsi un taux s’affiche sur l’écran LCD du lecteur (mise en mémoire).

On peut communiquer entre le lecteur via son jack que l'on peut relier au câble de liaison

série.
Wireless Care
18
Rapport de stage
Illustration
10
: Lecteur de glycémie
Illustration
11
: Vue interne du lecteur de

glycémie
Polytech' Nice Sophia Antipolis


4
Gestion du projet
4.1
Méthodologie et planning
La phase de recherche préalable avait déjà été effectuée avant le stage, donc au

commencement du stage, il nous fallait vérifier la viabilité de la solution de transmission.

Ainsi, durant une période que nous avions fixée à une semaine, nous avions décidé de

faire des tests sur les transmissions.
Au terme de ces tests précurseurs, nous savions que la solution était viable grâce à la

réception des caractères par Bluetooth. Dès lors, une phase de conception plus

appropriée était possible. Puis nous avons procédé à la phase de réalisation qui nous a

amené à produire la première version du produit. Enfin, des phases de débugage/tests

finaux se sont succédées pour chaque sortie des
nouvelles versions.
Nous faisions souvent le point sur l’avancement du projet au sein du groupe de travail

composé de trois individus. Nous travaillions en collaboration de manière a ce que tout

problème de programmation soit vite résolu. Chaque membre du groupe de travail a donc

pu toucher a chaque partie du projet. Nous n'avons toutefois pas travaillé à plusieurs sur

un point unique du projet.
La figure Page suivante présente le planning du projet pendant la durée du stage.
Les sources de ce fichier générées à l'aide de GanttProject sont disponibles :
h ttp ://www.esinsa.free.fr/Rapport/ELEC4/Stage/Gantt.gan

(voir le sujet pour les différents lots)
Wireless Care
19
Rapport de stage
Polytech' Nice Sophia Antipolis


Wireless Care
20
Rapport de stage
Illustration
12
: Diagramme de Gantt
Polytech' Nice Sophia Antipolis


4.2

Ressources
Pour mener à bien la mission, l’équipe était composé d'un tuteur de stage de NXP, d'un

responsable au CSTB et des stagiaires. Nous bénéficions des locaux climatisés du CSTB

ainsi que du personnel du CSTB et de NXP.
Ressources matérielles
Nous avions à notre disposition le matériel déjà décrit.
Un des Pcs portables simulait en fait à la Gerbox (ordinateur de réception des mesures)
et un autre servait de serveur SQL (base de données) pour stocker les données.

Financièrement, il n'avait pas été prévu de gros investissement mais la Télécom Valley

(partenaire du Challenge Jeunes Pousses) subvenait à nos besoins. Ainsi, la solution que

nous avons réalisée ne nous à pas coûté beaucoup, si ce n’est le temps passé à la

développer.
Ressources humai nes
Une grosse partie de l’étude préliminaire n’aurait pu être menée sans l’assistance de Mr

Braquet, Mr Barnier et Mr Pascual pour :
– leur contribution à éclaircir la solution.
– les questions se rapportant à la réalisation en générale.
– leurs conseils sur la conception.
Wireless Care
21
Rapport de stage
Polytech' Nice Sophia Antipolis


5
Conception et réalisation
5.1
Conception de la carte électronique et de la liaison bluetooth
5.1.1
La carte électronique (Bracelet)
Schéma de principe :
Le montage électronique se voit constitué de différentes parties telles que celle sur le

capteur de température avec son module d'adaptation ou celle sur le microcontrôleur et

son driver RS232.
Wireless Care
22
Rapport de stage
Illustration
13
: Architecture Générale
Polytech' Nice Sophia Antipolis


Le PC B :
Le PCB (Printed Circuit Board) a été réalisé à l’aide du logiciel Eagle Layout. On l'a

optimisé au maximum pour que la carte soit simple couche. Notre routage n'étant pas

parfait et l'autoroutage n'ayant pas trouvé de solution satisfaisante, il a fallut mettre deux

fils coté composants. Voici les schémas de la carte :
Wireless Care
23
Rapport de stage
Illustration
14
: Schéma interne du bracelet

Capteur de

Température

Interrupteur

Module de mise
en forme du signal

Signaux de
contrôle

Driver RS232

Données 8 bits

Microcontrôleur

8 bits

CAN

Signaux
à émettre

Batterie

(Alimentation
de l’ensemble)

Illustration
16
: PCB face

pistes
Illustration
15
: PCB face

composants
Polytech' Nice Sophia Antipolis


Fabrication :
Le CSTB possèdait un atelier afin de réaliser les cartes électroniques, ainsi nous avons pu

réaliser la notre suivant un processus de fabrication précis :

Insolation de la plaque de bakélite avec le typon

Polymérisation par les ultraviolets


Trempage dans le liquide révélateur

Attaque du cuivre avec le perchlorure de fer

Frottement du circuit avec de l'acétone afin d'enlever la résine

Perçage des trous pour les composants

Soudage des composants (traversants)
A la fin de la fabrication, il a fallut réaliser les premiers tests avec l'Ohmmètre pour vérifier

la continuité des pistes, tout fonctionnait. La liaison Bluetooth a ensuite été testée mais il y

avait un problème de correspondance entre le RX/TX du port série de la carte et celui du

dongle bluetooth, le port a donc été resoudé suivant les nouvelles spécifications.
Amélioration batterie :
On peut améliorer le circuit niveau surface et consommation si l'on remplace nos deux

piles 9V (100mA) par une pile bouton 3V. Il faut donc modifier le montage pour qu’il

fonctionne en mono tension, c'est à dire que l'on doit alimenter le microcontroleur en 5V à

partir de 3V. On devra donc remplacer le driver RS232 MAXDS276 par un MAX3321E qui

fonctionne pour 4 à 5V.
Un montage élevateur de tension est nécessaire pour passer du 3V au 5V.
Nous n'avons pas pu avoir de circuit ADP1111 car ce circuit est un échantillon chez

Analog Device et le temps de livraison est très long.
Wireless Care
24
Rapport de stage
Polytech' Nice Sophia Antipolis


5.1.2
La transmission Bluetooth
Pour établir une liaison Bluetooth, il suffit de connecter le dongle BL830 au circuit de

mesure par le port RS232. La carte de mesure envoie lors de l'appui sur l'interrupteur les

données capteurs au port RS232. Le dongle peut alors communiquer en utilisant le profil

SPP. On peut ensuite recevoir cette transmission via le dongle belkin relié au port USB

d'un ordinateur (Gerbox) ou via le téléphone qui possède bien le profile SPP.
Il faut savoir que Bluetooth utilise une fréquence de 2,4 Ghz et une puissance de 2,5mW

dans le cas comme nous d'une transmission jusqu'à 20m.
Pour valider cette transmission dans chaque cas, il suffit de vérifier les caractères transmis

par l'hyperterminal.
Il ne reste plus qu'à développer le code JAVA de réception de la transmission dans les

systèmes.
Wireless Care
25
Rapport de stage
Illustration
17
: Elevateur de tension

Polytech' Nice Sophia Antipolis


5.2
Conception d'une base de données
Le projet nécessite une
base de données

pour stocker les enregistrements sur les

PATIENT ainsi que les différentes mesures affiliées.
Une base de données peut être locale, c'est-à-dire utilisable sur une machine par un

utilisateur, ou bien répartie, c'est-à-dire que les informations sont stockées sur des

machines distantes et accessibles par réseau. L'avantage majeur de l'utilisation de bases

de données est la possibilité de pouvoir être accessibles à plusieurs utilisateurs

simultanément.
La technologie choisie est une base de données SQL puisque SQL est libre et facile

d'utilisation.
Wireless Care
26
Rapport de stage
Illustration
18
: Base de données
Polytech' Nice Sophia Antipolis


Il s'en suit une modélisation de la base :
Cas d'usages :
Ajouter, modifier, supprimer des patients
Ajouter, modifier, supprimer des menus
Ajouter, modifier, supprimer des mesures
Visualiser tout les patients et leurs caractéristiques
Di agramme des dépendances fonctionnelles :
Mesure
Patient
Date
Donnée
Nom
Prénom Sexe
Pathologie
Image
Menu
Date
texte
On applique donc ce modèle avec les
relations

allant de n Mesure vers un Patient
(avec n

désignant un nombre infini).
Pour chaque tables, on a un identifiant unique qui par la suite représentera la clé primaire

de la table qui est utile pour effectuer des relations. Finalement, nous obtenons donc les

tables Mesure, Patient et Menu qui décrivent chacune un certain nombre d’occurences.

Ensuite, il est évident qu’il faut mettre en forme ce modèle conceptuel sous forme de

tableau pour finir de concevoir la base de données.
Wireless Care
27
Rapport de stage
Polytech' Nice Sophia Antipolis


Modèle conceptuel des données :
Les tables Patient et mesure de la base de données sont donc liées entre elles par des

clés primaires et des
clés secondaires. La base de données pour Patients est ainsi

detaillée.
Base de données SQL :
SQL signifie Structured query language, ou langage structuré de requêtes. C'est un

langage informatique standard conçu pour interroger et manipuler une base de données

relationnelle.
On installe le serveur MySQL 5.0.45 sur la machine dédiée ainsi que le connecteur Java

MySQL 5.07. L
e connecteur sert entre autre à relier l'application Java à la base de

données.
Wireless Care
28
Rapport de stage
Mesure
IdMesure
IdPatient
Date
Donnée
Patient
IdPatient
Nom
Prénom
Sexe
Pathologie
Image
Menu
IdMenu
Date
Texte
Polytech' Nice Sophia Antipolis


Nous utilisons ici le programme heidiSQL (gratuit) pour effectuer les opérations courantes

sur une base de données.
Wireless Care
29
Rapport de stage
Illustration
19
: Enregistrements dans la base de données
Polytech' Nice Sophia Antipolis


5.3
Conception de la plate forme de maintien à domicile
Bluetooth
Liaison IP
Le dongle BL830 communique ici avec le ongle Belkin sur la Box et la donnée est ensuite

envoyée via liaison IP depuis l'interface de la Box jusqu'à l'ordinateur qui héberge la base

de données.
5.3.1
Réalisation de la gestion des données Bluetooth/IP
Cas d'usages :
Paramètrer la réception et l'envoi

Démarrer une réception + envoi

Visualiser les données
Pour répondre aux différents besoins, il est nécessaire de réaliser un interface graphique

en JAVA via le logiciel NetBeans par exemple.
L'architecture du programme n'étant pas trop compliqué, un simple diagramme

représentant les différents états du système suffira pour modeliser le programme JAVA

qui s'appelle «

EnvoiMessage

». Il est sûre qu'une modélisation UML aurait apportée un

rigueur de codage supplémentaire pour la qualité du programme.
(voir codage dans l'annexe des codes).
Wireless Care
30
Rapport de stage
Carte de mesure
Ordinateur (BOX)
Serveur (Base de données)
Polytech' Nice Sophia Antipolis


Diagramme des fonctions :
Jframe.java
ok
ThreadRecept.java
donnee != null
L’API utilisé pour lire sur un port série est Javax.comm cette API n'est pas installé par

défaut sur l'ordinateur, il faut donc aller chercher cette API sur le site Internet Java Sun

puis l'installer.
Après avoir configuré le port de l'ordinateur, l'adresse IP, le numéro du patient et le port

COM, on peut lancer une mesure. Cette mesure est débuté par la fonction

ComIPinterface() afin de faire l'initialisation via InitPort() et le listage des ports COM

disponibles via listePortsDispo(). InitPort démarre ensuite le thread (tâche) qui va scruter

la valeur reçue sur le dongle Bluetooth Belkin. Dès que l'on reçoit une donnée, elle est

envoyée par la fonction SendIP().
Wireless Care
31
Rapport de stage
Main
ComIPinterface
InitPort
listePortsDispo
Thread
SendIP
Polytech' Nice Sophia Antipolis


Voici l'interface générale réalisée en JAVA, on remarque que l'on peux activer /desactiver

la réception Bluetooth et la transmission IP en plus de pouvoir configurer les paramètres

de la liaison.
Wireless Care
32
Rapport de stage
Illustration
20
: Interface bluetooth/IP
Polytech' Nice Sophia Antipolis


5.3.2
La liaison IP
Nous avons décidé d'utiliser cette liaison afin de communiquer entre les ordinateurs. Un

ordinateur envoie la donnée pendant que l'autre attend la réception de cette même

donnée. Le protocole UDP (User Datagram Protocol) est utilisé afin d'envoyer des paquets

sur le réseau. Chacune des machines est définie par son port et son IP.
Pour envoyer via IP par JAVA, on crée tout d'abord un objet de DatagramSocket pour

avoir l'accès aux méthodes et aux variables de la classe puis on utilise DatagramPacket

pour initialiser la liaison avec les paramètres spécifiés. Pour finir, la méthode Envoi de

DatagramSocket permet l'envoi de la donnée.
On utilise un système d'accusé de réception pour bien s'assurer de la réception de la

donnée.
5.3.3
Réalisation de la gestion des données IP/SQL
Cas d'usages :
visualiser la réception d'une donnée


Visualiser la requête d'enregistrement dans la base
On remarque que l'utilisateur ne doit pas réaliser de commandes, il est donc inutile de

faire une interface graphique, le mode console sera amplement suffisant pour avertir

l'utilisateur.
(voir codage dans l'annexe des codes)
Wireless Care
33
Rapport de stage
Polytech' Nice Sophia Antipolis


Le projet JAVA s'appelle «

ReceptionMessageIPSQL

».
Di agramme des fonctions :
Donnee != 0
Le programme est très simple, on a la fonction principale qui tourne en permanence et dès

qu'une donnée arrive la fonction AddMeasure() est appelée pour faire un enregistrement

dans la base de données SQL.
Wireless Care
34
Rapport de stage
Main
AddMeasure
Illustration
21
: Console Netbeans
Polytech' Nice Sophia Antipolis


5.4
Conception de la plate forme de maintien à l'extérieur
Bluetooth
WAP
Le dongle BL830 communique en Bluetooth avec le profil SPP avec le téléphone portable

et le téléphone utilise une méthode URL pour communiquer a la base de données grâce

au WAP.
5.4.1
Réalisation du programme J2ME
Cas d'usages :
Effectuer une mesure et l'enregistrer
Visualiser le menu du jour (option)
Appeler le support (option)
Naviguer sur les forums d'aides (option)
Un programme JAVA embarqué est la meilleure solution pour développer une application

sur téléphone portable. Pour ce faire, nous utilisons le logiciels Netbeans 5.5.1, le pack

mobilité 5.5.1 et le jdk6 de JAVA.
L'interface a donc été conçue en 4 étapes :

énumération des menus qui composent l'interface.

réalisation d'un diagramme d'états.

implémentation du diagramme pour générer des bouts de codes.

programmer les transitions et le comportement de l'interface.
Wireless Care
35
Rapport de stage
Carte de mesure
Téléphone
Serveur (Base de données)
Polytech' Nice Sophia Antipolis


A chaque étape de programmation, nous simulions l'interface avant de la charger dans le

téléphone.
On utilise une programmation sous forme de MIDLET (interface graphique).
Wireless Care
36
Rapport de stage
Illustration
22
:

Simulateur d'interface
Illustration
23
: Structure d'un MIDLET

Polytech' Nice Sophia Antipolis


Wireless Care
37
Rapport de stage
Illustration
24
: Diagramme de

conception
Polytech' Nice Sophia Antipolis


5.4.2
Transmission Bluetooth vers le téléphone
L'appareil client est celui qui lance la communication avec l'appareil serveur.
Dans notre cas, le téléphone est configuré en mode client profil SPP.
Principes de la liaison :

Les deux appareils sont couplés ensemble via un code.

Seul l'appareil couplé peut decrypter les données de la communication Bluetooth.

Les appareils doivent être visibles l'un de l'autre
Etapes d'une acquisition Bluetooth :

Création d'objets (de connection, de flux d'entrée/sortie, de paramètres)

Ouverture de la connection

Ouverture des flux de données E/S

Fin de mesure

Lecture de la valeur transmise
Voilà le tableau sur les différents modules que nous disposions :
Wireless Care
38
Rapport de stage
Polytech' Nice Sophia Antipolis


5.4.3
Transmission par le WAP sur une bdd
Pour pouvoir communiquer avec une base de données externe depuis le téléphone, il

nous était impossible d'utiliser une communiquation IP puisque les sockets ne sont pas

actives sur les téléphones.
Ainsi, la solution évidente qui s'imposait à nous était de réaliser un connection WAP et de

transférer les informations à la base de données par l'utilisation d'une requête URL.
c'est a dire que l'on va encoder une URL de manière à ce qu'il qu'il y est un passage de

paramètre par la méthode GET. On effectue ensuite un traitement de la donnée reçue

grâce à un fichier PHP situé sur le serveur (Voir code en annexe).
Méthode GET : cette méthode est une méthode d'envoi des données lorsque l'on utilise

des scripts PHP. Cette méthode possède le même principe que la méthode POST, c'est-
à-dire qu’elle effectue un passage de paramètre. La différence réside dans le fait que l’on

peut envoyer un paramètre lors d’un lien vers une page sans avoir besoin d’un formulaire

(balises form).
Codage de l’URL en JAVA (on utlise la fonction
(HttpConnection) Connector.open(url)
) :

url=index.php?Login=''+Login+''Mesure=''+SPP_Client.strRecept+'' '';
On envoie les paramètres Login et Mesure (chacun vaut une certaine valeur) vers la page

index.php du site
www.esinsa.free.fr
, là ou l'on a hebergé notre base de données.
Codage de la réception en php :
$Login = $_GET[‘Login’]; $Mesure = $_GET[‘Mesure’];
Stockage du paramètre dans une variable. Avec les variables récupérées par le script

PHP, il y a lancement de nouveaux enregistrements dynamiques sur la base de données.
Wireless Care
39
Rapport de stage
Polytech' Nice Sophia Antipolis


6
Evolutions
En ce qui concerne les évolutions, on peut en noter 3 majeures :

Remplacement du module BL830 par le F2M

Remplacement du capteur de température par un lecteur de glycémie

Mise en place d'une interface de gestion et de supervision des patients
Remplacement du module B L830 par le F2 M
Ce module se configure pour l'instant sur le logiciel de configuration fourni. L'ordinateur et

le module sont reliés ensemble par une liaison RS232. Le module peut aussi être

configuré par liaison RS232. On entend par configuration : type serveur ou client, vitesse

de communication, parité, bits, bit de stop, etc...
Il faut savoir que le module F2M possède un module Bluetooth détachable afin d'avoir un

encombrement minimum dans notre circuit.
Wireless Care
40
Rapport de stage
Illustration
25
: Exemple de configuration

du F2M
Polytech' Nice Sophia Antipolis



Mise en place d'une interface de gestion et de supervision des patients
Une ébauche de cette interface a été réalisé pendant le stage. Elle est essentiellement

programmé en langage html et php mais il est néanmoins nécessaire de la continuer pour

que le rendu soit impeccable. Cette interface permettra l'ajout, modification et suppression

des données relatives aux patients sans pour autant gêner une quelconque mesure en

cours.
Wireless Care
41
Rapport de stage
Illustration
26
: Brochage du module F2M
Polytech' Nice Sophia Antipolis


Remplacement du capteur de température par un lecteur de glycémie

On peut communiquer avec le lecteur de glycémie via une liaison RS232.
Pour cela , on utilise l'hyperterminal et la fonction envoyer fichier texte.
Voici la liste des commandes de dialogue avec l'appareil :
Wireless Care
42
Rapport de stage
Illustration
27
: Commandes du lecteur de glycémie
Polytech' Nice Sophia Antipolis


7
Conclusion
Ce stage nous a permis de mettre en avant nos compétences (car nous étions une équipe

de trois étudiants ingénieurs) :
En électronique analogique, en électronique numérique, en

programmation Java et Java embarqué (J2ME), en programmation C pour

microcontrôleur, en transmission sans fil bluetooth, en transmission filaire IP, en

programmation SQL pour base de données et en programmation PHP.
Avec les diverses réunions exercées lors du challenge Jeunes Pousses et du stage, nous

avons acquis des compétences non négligeables en terme de présentation, expliquation

et résumé.
Pour conclure, l
e travail réalisé est conforme aux attentes mais nous notons toutefois que

les manipulations avec le Bluetooth doivent être rigoureuses pour que les systèmes soient

fiables.
La contrainte majeure du stage était de démontrer la faisabilité de tels systèmes de part

leurs réalisation, On peut donc dire que les systèmes sont faisables mais il faut faire

attention toutefois au méthodes de programmation pour garantir la fiabilité des données.
Le mot de la fin : «

les sytèmes d'aides à la personne sont en proie à augmenter et à

évoluer au fil du temps, on peut déjà remarquer un regroupement de sociétés sur ce

même thème
http://www.continuaalliance.org/
On peut même corréler les services associés à ces systèmes de contrôle avec les débuts

des services internet il y a longtemps

».
Wireless Care
43
Rapport de stage
Polytech' Nice Sophia Antipolis


Glossaire

NX P

:
NXP
(pour
Next

eXPerience
)
Semiconducteurs
est le nom de la nouvelle

compagnie fondé par
Philips

CSTB

: Centre scientifique et technique du batiment

Jeunes Pousses :
Challenge organisé par l'INRIA et Telecom Valley

Glycemie


: Concentration de glucose dans le sang

Java


: Le langage libre le plus populaire du monde

J2 ME

: Java Platform Micro Edition

RS-232

: En télécommunication, RS-232 (Recommended Standard 232) est un

standard pour les signaux connectés entre le
DTE
(
Data terminal equipment
) et le

DCE
(
Data Circuit-terminating Equipment
)

Bl uetooth

: Spécification industrielle pour les réseaux PAN (
personal area

networks
)

P H P

: Langage de programmation orienté page web dynamique

SQL

: Langage de programmation pour les bases de données relationnelles

M I D P

: Spécification pour l'utilisation du JAVA embarqué dans les téléphones
Wireless Care
44
Rapport de stage
Polytech' Nice Sophia Antipolis


Annexe 1 : Projets du CSTB
La
Salle immersive Le Corbusier
® est une infrastructure matérielle et logicielle
unique dans le secteur de la construction, dotée des ressources informatiques et des
technologies de la réalité virtuelle les plus avancées : modélisation et simulation
scientifiquement valides des phénomènes physiques, représentation 3D et navigation
interactive.
Utilisée pour un
projet de construction neuve ou de
réhabilitation
, d’aménagement urbain (à l’échelle du
quartier), d’aménagement du territoire (routes,
infrastructures de transports, ouvrages d’art…) ou

industriel (produits de construction…), la Salle immersive

Le Corbusier permet une
représentation anticipée du

projet
, à la fois réelle et précise, dans laquelle il est

possible de naviguer pour analyser et évaluer l’impact du

projet dans son
futur environnement.
La Base FEU :
Cette plate-forme expérimentale d'une surface de 400 mètres
carrés permet de reproduire des incendies réels. Les essais visent à

vérifier que les solutions constructives satisfont aux exigences

réglementaires de sécurité incendie applicables aux logements,

établissements recevant du public et à certains locaux de travail.

Cette base d'essais a été mise à contribution pour concevoir le

protocole de l'essai européen de réaction au feu SBI.
La Soufflerie Jules Verne :
Neige, pluie verglas, brouillard, vent de sable, cyclone ou canicule
d'une extrême sécheresse, la soufflerie climatique Jules Verne sait
tout imaginer. Elle a été spécialement conçue pour étudier, en
grandeur nature, non seulement le comportement des bâtiments et des
éléments de construction, mais aussi celui des véhicules et des
matériels de transport. Ce vaste équipement de plus de 5 000 mètres
carrés est capable de recréer n'importe quelles conditions climatiques,
y compris celles qui heureusement sont rares sur la terre.
Wireless Care
45
Rapport de stage
Polytech' Nice Sophia Antipolis


Le LABE :
Accrédité COFRAC, ce grand équipement de mesures
acoustiques ultramoderne comporte plus de douze postes
d'essais sur 2 500 mètres carrés pour tester les produits les plus
performants dans les plus brefs délais et selon les normes
européennes. Un point essentiel pour les industriels qui pourront
faire valoir leurs rapports d'essais dans toute l'Union
européenne.
ARIA : Prévenir la pollution dans la maison, le bureau ou l'école :
Imaginez une cuisine, un garage, un bureau, une salle de classe et demain une chambre
d'hôpital. ARIA, grand équipement de recherche a pour objectif d'étudier les problèmes de
pollution à l'intérieur des bâtiments.
Sur son site de recherche de Marne la Vallée, le CSTB réunit sur 2 000 mètres carrés un
ensemble de laboratoires et de moyens expérimentaux pour étudier la qualité sanitaire des
produits, équipements et ouvrages de bâtiment.
Cet équipement est à la hauteur des enjeux que représentent l'évaluation et la gestion des
risques sanitaires dans les domaines de l'air et de l'eau.
Wireless Care
46
Rapport de stage
Polytech' Nice Sophia Antipolis


Annexe 2 : Di agramme d'états
Wireless Care
47
Rapport de stage
S1
Data acquisition
Data acquisition
S2
Signal adaptation
Signal adaptation
S4
Conversion
Conversion
S5
RS-232 transmission
RS-232 transmission
S6
Bluetooth transmission
Bluetooth transmission
Dongle connected
S8
Phone interf ace
Phone interf ace
S3
Interruption event
Cable connected
Measure request
S7
Measure
Measure
Bluetooth reception
Bluetooth reception
S9
GSM transmission
GSM transmission
Transmission request
S10
GSM reception
GSM reception
S11
Inf ormation storage
Inf ormation storage
Sensor data
Polytech' Nice Sophia Antipolis


Annexe 3 : Di agramme d'états de l'interface
Wireless Care
48
Rapport de stage
Check with serv er
Check with serv er
S2
Start application
Login
Login
S1
S4
Report
Report
Valid
Menu
Menu
S3
Report
Report
Not (Valid)
OK
Report
Report
End of measure
Measure menu
Measure menu
Measure request
S6
Lunch advises
Lunch advises
Menu = Measure
S5
Back
Menu = Lunch
Report
Report
End of transmission
Report
Report
Error
GSM transmission
S7
Report
Report
Error
Polytech' Nice Sophia Antipolis


Annexe 4 : Schéma electronique
Wireless Care
49
Rapport de stage

Polytech' Nice Sophia Antipolis


Annexe 5 : Couts
articles
quantite
prix unitaire
dongle usb bluetooth
1
33,49
piles
3
3,35
ram
1
32,96
module bluetooth lextronic
1
230,23
frais port livraison
1
9
lecteur de glycemie
1
79,44
cable liaison
1
26
commande de composants
1
20,69
total general
435,16
Wireless Care
50
Rapport de stage
Polytech' Nice Sophia Antipolis


Annexe 6 : Code JAVA
Envoi Message :
/*
* JFrame.java
*
* Created on July 27, 2007, 10:19 AM
*/
package
EnvoiMessage;
import
java.io.BufferedReader;
import
java.io.IOException;
import
java.io.InputStreamReader;
import
java.net.DatagramPacket;
import
java.net.DatagramSocket;
import
java.net.InetAddress;
import
java.net.SocketException;
import
java.net.UnknownHostException;
import
java.util.Enumeration;
import
javax.comm.CommPortIdentifier;
import
javax.comm.NoSuchPortException;
import
javax.comm.PortInUseException;
import
javax.comm.SerialPort;
import
javax.comm.UnsupportedCommOperationException;
import
javax.swing.JOptionPane;
/**
*
* @author gendre
*/
public

class
JFrame
extends
javax.swing.JFrame {


/** Creates new form JFrame */

public
JFrame() {
initComponents();
setTitle("Wireless Care Home Box");
}


/** This method is called from within the constructor to
* initialize the form.
Wireless Care
51
Rapport de stage
Polytech' Nice Sophia Antipolis


* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/

// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents

private

void
initComponents() {
jPanel1 =
new
javax.swing.JPanel();
jButtonOk =
new
javax.swing.JButton();
jLabelLogin =
new
javax.swing.JLabel();
jTextFieldLogin =
new
javax.swing.JTextField();
jLabelPort =
new
javax.swing.JLabel();
jTextFieldPort =
new
javax.swing.JTextField();
jLabelIp =
new
javax.swing.JLabel();
jTextFieldIp =
new
javax.swing.JTextField();
jLabelCom =
new
javax.swing.JLabel();
jTextFieldCom =
new
javax.swing.JTextField();
jPanel2 =
new
javax.swing.JPanel();
jScrollPane1 =
new
javax.swing.JScrollPane();
jTextAreaReception =
new
javax.swing.JTextArea();
jLabelReception =
new
javax.swing.JLabel();
jLabelTransmission =
new
javax.swing.JLabel();
jScrollPane2 =
new
javax.swing.JScrollPane();
jTextAreaTransmission =
new
javax.swing.JTextArea();
jCheckBoxTx =
new
javax.swing.JCheckBox();
jCheckBoxRx =
new
javax.swing.JCheckBox();
jButtonExit =
new
javax.swing.JButton();
jButtonReset =
new
javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createTitledBorder("Value"), "",

javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION,
new

java.awt.Font("Tahoma", 0, 12)));
jPanel1.setToolTipText("");
jPanel1.setName("");
jButtonOk.setText("OK");
jButtonOk.addActionListener(
new
java.awt.event.ActionListener() {

public

void
actionPerformed(java.awt.event.ActionEvent evt) {
jButtonOkActionPerformed(evt);
}
});
jLabelLogin.setText("Login :");
jLabelPort.setText("Port :");
Wireless Care
52
Rapport de stage
Polytech' Nice Sophia Antipolis


jLabelIp.setText("Ip :");
jLabelCom.setText("Com :");
javax.swing.GroupLayout jPanel1Layout =
new
javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabelLogin, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE)
.addGap(13, 13, 13))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabelIp)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jTextFieldIp, javax.swing.GroupLayout.PREFERRED_SIZE, 157,

javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 165, Short.MAX_VALUE)
.addComponent(jButtonOk))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jTextFieldLogin, javax.swing.GroupLayout.DEFAULT_SIZE, 68, Short.MAX_VALUE)
.addGap(16, 16, 16)
.addComponent(jLabelPort, javax.swing.GroupLayout.DEFAULT_SIZE, 27, Short.MAX_VALUE)
.addGap(12, 12, 12)
.addComponent(jTextFieldPort, javax.swing.GroupLayout.PREFERRED_SIZE, 65,

javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(12, 12, 12)
.addComponent(jLabelCom, javax.swing.GroupLayout.DEFAULT_SIZE, 28, Short.MAX_VALUE)
.addGap(13, 13, 13)
.addComponent(jTextFieldCom, javax.swing.GroupLayout.PREFERRED_SIZE, 69,

javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(59, 59, 59))))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addContainerGap(37, Short.MAX_VALUE)
Wireless Care
53
Rapport de stage
Polytech' Nice Sophia Antipolis


.addComponent(jButtonOk))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelLogin)
.addComponent(jTextFieldLogin, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabelPort)
.addComponent(jTextFieldPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabelCom)
.addComponent(jTextFieldCom, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 9, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextFieldIp, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabelIp))
.addContainerGap())
);
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Transmission"));
jTextAreaReception.setColumns(20);
jTextAreaReception.setRows(5);
jScrollPane1.setViewportView(jTextAreaReception);
jLabelReception.setText("Reception Bluetooth :");
jLabelTransmission.setText("Transmission IP :");
jTextAreaTransmission.setColumns(20);
jTextAreaTransmission.setRows(5);
jScrollPane2.setViewportView(jTextAreaTransmission);
jCheckBoxTx.setText("Enable");
jCheckBoxTx.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
jCheckBoxTx.setMargin(
new
java.awt.Insets(0, 0, 0, 0));
jCheckBoxRx.setText("Enable");
jCheckBoxRx.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
jCheckBoxRx.setMargin(
new
java.awt.Insets(0, 0, 0, 0));
javax.swing.GroupLayout jPanel2Layout =
new
javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
Wireless Care
54
Rapport de stage
Polytech' Nice Sophia Antipolis


jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 412, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabelReception)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jCheckBoxRx))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabelTransmission)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jCheckBoxTx))
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 412, Short.MAX_VALUE))
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelReception)
.addComponent(jCheckBoxRx))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelTransmission)
.addComponent(jCheckBoxTx))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))
);
jButtonExit.setText("EXIT");
jButtonExit.addActionListener(
new
java.awt.event.ActionListener() {

public

void
actionPerformed(java.awt.event.ActionEvent evt) {
jButtonExitActionPerformed(evt);
}
});
Wireless Care
55
Rapport de stage
Polytech' Nice Sophia Antipolis


jButtonReset.setText("RESET");
jButtonReset.addActionListener(
new
java.awt.event.ActionListener() {

public

void
actionPerformed(java.awt.event.ActionEvent evt) {
jButtonResetActionPerformed(evt);
}
});
javax.swing.GroupLayout layout =
new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jButtonReset)
.addGap(14, 14, 14)
.addComponent(jButtonExit)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButtonExit)
.addComponent(jButtonReset))
.addContainerGap())
);
pack();
}
// </editor-fold>//GEN-END:initComponents

Wireless Care
56
Rapport de stage
Polytech' Nice Sophia Antipolis



/** This function reset all the interface */

private

void
jButtonResetActionPerformed(java.awt.event.ActionEvent evt) {
//GEN-FIRST:event_jButtonResetActionPerformed
jTextFieldCom.setEditable(
true
);
jTextFieldIp.setEditable(
true
);
jTextFieldLogin.setEditable(
true
);
jTextFieldPort.setEditable(
true
);
jTextAreaReception.setText("");
jTextAreaTransmission.setText("");
jTextFieldCom.setText("COM4");
jTextFieldIp.setText("10.3.5.90");
jTextFieldLogin.setText("1");
jTextFieldPort.setText("10302");

if
(jButtonOk.isEnabled()==
false
){
jButtonOk.setEnabled(
true
);
serialPort.close();
ThreadRecept.running =
false
;
}
}
//GEN-LAST:event_jButtonResetActionPerformed


/** This function allow user to quit the interface */

private

void
jButtonExitActionPerformed(java.awt.event.ActionEvent evt) {
//GEN-FIRST:event_jButtonExitActionPerformed

int
r= JOptionPane.showConfirmDialog (
null
,"Are you sure you want to quit?", "Boutons par

defaut",JOptionPane.YES_NO_OPTION);

if
(r==JOptionPane.YES_OPTION){

if
(ThreadRecept.running==
true
){
ThreadRecept.running=
false
;
}
serialPort.close();
System.exit(0);
}

else

if
(r == JOptionPane.NO_OPTION){
}
}
//GEN-LAST:event_jButtonExitActionPerformed

/** This function represent Ok button action */

private

void
jButtonOkActionPerformed(java.awt.event.ActionEvent evt) {
//GEN-FIRST:event_jButtonOkActionPerformed
jTextFieldCom.setEditable(
false
);
jTextFieldIp.setEditable(
false
);
jTextFieldLogin.setEditable(
false
);
jTextFieldPort.setEditable(
false
);
com=jTextFieldCom.getText();

if
(jButtonOk.isEnabled()==
true
){
jButtonOk.setEnabled(
false
);
Wireless Care
57
Rapport de stage
Polytech' Nice Sophia Antipolis


}
else
{
jButtonOk.setEnabled(
true
);
}
ComIPinterface();
}
//GEN-LAST:event_jButtonOkActionPerformed


/**
* @param args the command line arguments
*/

public

static

void
main(String args[]) {
java.awt.EventQueue.invokeLater(
new
Runnable() {

public

void
run() {

new
JFrame().setVisible(
true
);
}
});
}


/**
* Reception de la mesure sur le port serie virtuel
*/

public

static

void
ComIPinterface(){

System.out.println("listage des ports série disponibles:");
listePortsDispo();

try
{

// Fonction Initialisation Port Com
InitCom();
}

catch
(Exception e){
e.printStackTrace();
}

}


/**
* Liste les ports disponibles
*/

public

static

void
listePortsDispo()
{
System.err.println("recherche...");
Enumeration portList=CommPortIdentifier.getPortIdentifiers();

if
(portList==
null
)
Wireless Care
58
Rapport de stage
Polytech' Nice Sophia Antipolis


{
System.err.println("Aucun port de communication détecté");

return
;
}

while
(portList.hasMoreElements())
{
portId=(CommPortIdentifier)portList.nextElement();
System.out.println("* "+portId.getName());
}
}


/**
* Initialise le port choisi
*/

public

static

void
InitCom()
throws
PortInUseException, UnsupportedCommOperationException {

try
{

//ouverture du port série:
portId=CommPortIdentifier.getPortIdentifier(com);
serialPort=(SerialPort)portId.open("Envoi",2000);

//on sélectionne tous les paramètres de la connexion série:
serialPort.setSerialPortParams(19200,SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
System.out.println("Ouverture du port "+com);


//Buffer contenant la donnee sur le port
in=
new
BufferedReader(
new
InputStreamReader(serialPort.getInputStream()));

//New Thread

if
(ThreadRecept.running==
false
){
ThreadRecept.running=
true
;
}

if
(AlreadyStarted==
false
){
t.start();
}
AlreadyStarted=
true
;

}
catch
(NoSuchPortException ex) {
JOptionPane.showMessageDialog(
null
,"Port Com non utilise !");
ex.printStackTrace();
}

catch
(IOException ex) {
ex.printStackTrace();
}
Wireless Care
59
Rapport de stage
Polytech' Nice Sophia Antipolis


}


/**
* Envoi de la mesure par IP
*/

public

static

void
SendIp(String ll){


//declaration des variables relatives a lenvoi IP

int
portDestinataire;
InetAddress adresseIP;

int
longueur;

byte
[] tampon;
BufferedReader commande;

try
{

if
(jCheckBoxTx.isSelected()){

//creation des socket
socketUDP=
new
DatagramSocket();
System.out.println("le port local de la box est : "+socketUDP.getLocalPort());

//entree de ladresse IP et du port du Destinataire
adresseIP=InetAddress.getByName(jTextFieldIp.getText());
portDestinataire=Integer.parseInt(jTextFieldPort.getText());
tampon=ll.getBytes();
longueur=tampon.length;
message=
new
DatagramPacket(tampon,longueur,adresseIP,portDestinataire);
socketUDP.send(message);

//attente de l'accuse de reception
tampon=
new

byte
[256];
message=
new
DatagramPacket(tampon,tampon.length);
socketUDP.receive(message);
ll=
new
String(tampon);
ll=ll.substring(0,message.getLength());
System.out.println("Du port " + message.getPort()+" de la machine " + message.getAddress().getHostName() +" : "+ ll);
jTextAreaTransmission.append("Du port " + message.getPort()+" de la machine " + message.getAddress().getHostName() +" :

"+ ll +" \n");
}
}

catch
(ArrayIndexOutOfBoundsException exc){
System.out.println("avez vous donner le nom de la machine destinatrice et le numero de port du client?");
}

catch
(UnknownHostException exc){
System.out.println("Destinataire inconnu");
}

catch
(SocketException exc){
Wireless Care
60
Rapport de stage
Polytech' Nice Sophia Antipolis


System.out.println("Probleme douverture de la socket");
}

catch
(IOException exc){
System.out.println("Probleme sur la reception");
}

catch
(NumberFormatException exc){
System.out.println("Le second argument doit etre un entier");
}

}

// Variables declaration

private
javax.swing.JButton jButtonExit;

private
javax.swing.JButton jButtonOk;

private
javax.swing.JButton jButtonReset;

public

static
javax.swing.JCheckBox jCheckBoxRx;

public

static
javax.swing.JCheckBox jCheckBoxTx;

private
javax.swing.JLabel jLabelCom;

private
javax.swing.JLabel jLabelIp;

private
javax.swing.JLabel jLabelLogin;

private
javax.swing.JLabel jLabelPort;

private
javax.swing.JLabel jLabelReception;

private
javax.swing.JLabel jLabelTransmission;

private
javax.swing.JPanel jPanel1;

private
javax.swing.JPanel jPanel2;

private
javax.swing.JScrollPane jScrollPane1;

private
javax.swing.JScrollPane jScrollPane2;

public

static
javax.swing.JTextArea jTextAreaReception;

public

static
javax.swing.JTextArea jTextAreaTransmission;

private

static
javax.swing.JTextField jTextFieldCom;

private

static
javax.swing.JTextField jTextFieldIp;

private

static
javax.swing.JTextField jTextFieldLogin;

private

static
javax.swing.JTextField jTextFieldPort;

// End of variables declaration

//Variable pour la lecture serie

static
CommPortIdentifier portId;

static
BufferedReader in;

static
SerialPort serialPort;

static
DatagramSocket socketUDP;

static
DatagramPacket message;

static
String com;

static
Runnable r =
new
ThreadRecept();

static
Thread t =
new
Thread(r);

static

boolean
AlreadyStarted=
false
; }
Wireless Care
61
Rapport de stage
Polytech' Nice Sophia Antipolis


/*
* ThreadRecept.java
*
* Created on August 3, 2007, 5:12 AM
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package
EnvoiMessage;
import
java.io.IOException;
import
javax.comm.PortInUseException;
import
javax.comm.SerialPort;
import
javax.comm.UnsupportedCommOperationException;
/**
*
* @author administrateur
*/
public

class
ThreadRecept
extends
Thread {


private
String ligne =
null
;

public

static

boolean
running =
false
;


public

void
run(){

while
(running){

if
(JFrame.jCheckBoxRx.isSelected()){

try
{
ligne = JFrame.in.readLine();
}
catch
(IOException e){
}

//on affiche ce qui arrive dans le port serie
System.out.println(ligne);
JFrame.jTextAreaReception.append(ligne + "\n");

if
(ligne!=
null
){

// Fonction d'envoi par IP
JFrame.SendIp(ligne);
}
}
}
}
}
Wireless Care
62
Rapport de stage
Polytech' Nice Sophia Antipolis


ReceptionMessage :
/*
* ReceptionMessage.java
*
* Created on 10 juillet 2007, 15:00
*
*/
package
receptionmessage;
import
java.net.*;
import
java.io.*;
import
java.sql.ResultSet;
import
java.sql.DriverManager;
import
java.sql.Driver;
import
java.sql.SQLException;
import
java.sql.Connection;
import
java.sql.Statement;
import
java.text.DateFormat;
import
java.util.Calendar;
import
java.util.Date;
import
java.util.GregorianCalendar;
import
java.util.Locale;
/**
* <p>Title: Reception d'un message IP et stockage dans une bdd SQL</p>
* <p>Description: Cette reception IP utilise des sockets
* pour recevoir un message via IP en specifiant le port souhaite dans
* le commande prompt. On stock ensuite le message recuperer dans une
* base de donnees pour la portabilite</p>
*
* @author Laurent Gendre
*/
public

class
ReceptionMessage {


/**
* Creates a new instance of ReceptionMessage
*/

public
ReceptionMessage() {
}


/**
Wireless Care
63
Rapport de stage
Polytech' Nice Sophia Antipolis


* Obtient une connexion a partir des proprietes specifiees
* dans le fichier database.properties
* @return la connexion a la base de donnees
*/

public

static
Connection getConnection()
throws
SQLException, IOException {
String url = "jdbc:mysql://localhost/PATIENT";
String username = "root";
String password = "Philips01";

return
DriverManager.getConnection(url, username, password);
}


/**
* Execute les requetes adequates afin de rajouter une nouvelle mesure
* dans la base de donnees
*/

public

static

void
AddMeasure(String Date, String Donnee)
throws
SQLException, IOException, ClassNotFoundException,

InstantiationException, IllegalAccessException {

Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = getConnection();

try
{
Statement stat = conn.createStatement();

// Init

int
Cpt = 0;

int
Nb = 0;

int
Valeur = 0;

int
IdPatient = 1;
// Identifiant du patient

int
IdMesure;

int
[] Id_Mesure =
new

int
[10000];


// Selection de la table MESURE
ResultSet result = stat.executeQuery("SELECT DISTINCT * FROM MESURE WHERE 1 ORDER BY ID_MESURE ASC");


// Recuperation des donnees MESURE

while
(result.next() !=
false
){
Id_Mesure[Nb]=result.getInt("Id_Mesure");

Nb++;
Wireless Care
64
Rapport de stage
Polytech' Nice Sophia Antipolis


}


// Maj Cle Primaire de MESURE

int
Nombre=Nb-1;
IdMesure=Id_Mesure[Nombre] + 1;


// Raz compteur
Nb = 0;


while
(Id_Mesure[Nb] != 0){

//Verifie les doublons

if
(Id_Mesure[Nb]==IdMesure){
Valeur=1;
}
Nb++;
}
System.out.println("Query : Num mesure : " + IdMesure + " // Num patient : " + IdPatient + " // Date : " + Date + " // Donnee : " +

Donnee);

if
(Valeur == 0){

// Insertion dans la table MESURE
stat.executeUpdate("INSERT INTO MESURE (ID_MESURE,ID_PATIENT,DATE,DONNEE) VALUES ('"+IdMesure+"',

'"+IdPatient+"', '"+Date+"', '"+Donnee+"') ");
}

else
{
System.out.println("Erreur Id Mesure");
}
}

finally
{
conn.close();
}
}


/**
* @param args the command line arguments
*/

public

static

void
main(String args[]) {
DatagramSocket socketUDP;
DatagramPacket message;

byte
[] tampon;

int
portLocal;

byte
[] tamponAccuse = "accuse de reception ".getBytes();

int
longueurAccuse = tamponAccuse.length;
String texte;
Wireless Care
65
Rapport de stage
Polytech' Nice Sophia Antipolis




try
{
portLocal = 10302;
//Integer.parseInt (args[0]);
socketUDP =
new
DatagramSocket (portLocal);

do
{

//on se prépare à recevoir un datagramme
tampon =
new

byte
[256];
message =
new
DatagramPacket (tampon, tampon.length);
socketUDP.receive(message);
InetAddress adresseIP = message.getAddress();

int
portDistant = message.getPort();
texte =
new
String(tampon);
texte = texte.substring(0, message.getLength());
System.out.println("Reception sur le port " + portDistant + " de la machine " + adresseIP.getHostName() + " : " + texte);


/* Partie SQL */

// Date
Calendar calendar =
new
GregorianCalendar();
Date trialTime =
new
Date();
calendar.setTime(trialTime);
DateFormat df = DateFormat.getDateInstance( DateFormat.LONG , Locale.FRANCE );
String strdf =
new
String(df.format( calendar.getTime()) );
DateFormat df2 = DateFormat.getTimeInstance( DateFormat.SHORT , Locale.FRANCE );
String strdf2 =
new
String(df2.format( calendar.getTime()) );
String strDate = strdf + " " + strdf2;

// Gestion des exceptions

try
{

// Ajout de la mesure dans la bdd mysql
AddMeasure(strDate,texte);
}
catch
(ClassNotFoundException ex) {
ex.printStackTrace();
}
catch
(IOException ex) {
ex.printStackTrace();
}
catch
(IllegalAccessException ex) {
ex.printStackTrace();
}
catch
(InstantiationException ex) {
ex.printStackTrace();
}
catch
(SQLException ex) {

while
(ex!=
null
){
ex.printStackTrace();
ex = ex.getNextException();
}
}
Wireless Care
66
Rapport de stage
Polytech' Nice Sophia Antipolis




//On envoie un accuse de reception
message =
new
DatagramPacket (tamponAccuse,longueurAccuse, adresseIP, portDistant);
socketUDP.send(message);
}
while
(texte!=
null
);
}

catch
(ArrayIndexOutOfBoundsException exc){
System.out.println("Avez vous donnez le numero" + " de port sur lequel vous attendez le message ?");
}

catch
(SocketException exc){
System.out.println("Probleme d'ouverture du socket");
}

catch
(IOException exc){
System.out.println("Probleme sur la reception" + "ou sur l'envoi du message");
}
}
}
Wireless Care
67
Rapport de stage
Polytech' Nice Sophia Antipolis


Annexe 7 : Code J2 ME
Le code de l'interface HelloMidlet.java du téléphone se trouve sur

http://www.esinsa.free.fr/Rapport/ELEC4/Stage/fichiers_stage%2007092007/J2ME_JAVA/
Wireless_Care_v2/src/hello/
Code de communication Bluetooth :
On utilise un composant bluelet pour communiquer (ce composant est dérivé de la librairie

JSR82)
package
hello.spp;
import
java.io.*;
import
javax.bluetooth.*;
import
javax.microedition.io.*;
import
hello.*;
public

class
SPP_Client
{


public

static
String strRecept;

//public final static UUID uuid = new UUID("102030405060708090A0B0C0D0E0F010", false);


public
SPP_Client()
{
}

public

void
send_SPP_message(ServiceRecord r, String msg)
{

String connString = "btspp://000A4F004D98:1";
//master=true;authenticate=true;encrypt=true";
DataInputStream input=
null
;
DataOutputStream output=
null
;

int
ent=0;
String str=
null
;
String str2=
null
;

int
[] s =
new

int
[10];

//log(connString);
StreamConnection conn =
null
;
Wireless Care
68
Rapport de stage
Polytech' Nice Sophia Antipolis



//log("creating: StreamConnection conn...");

try
{
conn = (StreamConnection) Connector.open(connString);

//log("opening: StreamConnection conn...");

//log("opening outputStream...");
output = conn.openDataOutputStream();

//log("opening inputStream...");
input = conn.openDataInputStream();

//log("end of initialisation...");

for
(
int
i=0;i<9;i++){
s[i]=input.read()-48;
str=String.valueOf(s[i]);
str2=String.valueOf(s[i]+48);

//log("indice: "+i+" valeur: "+str+" ou ascii: "+str2);
}

switch
(s[7]){

case
19:
//log("valeur:"+s[0]+s[1]+','+s[3]+s[4]+s[5]+" C");
strRecept=""+s[0]+s[1]+','+s[3]+s[4]+s[5]+"";

break
;

case
-16:
//log("valeur:"+s[1]+s[2]+','+s[4]+s[5]+s[6]+" C");
strRecept=""+s[1]+s[2]+','+s[4]+s[5]+s[6]+"";

break
;

default
:
//log("erreur");
}


// Close connection
output.flush();
conn.close();
input.close();
output.close();

}
catch
(IOException ex) {
ex.printStackTrace();
}
}
Wireless Care
69
Rapport de stage
Polytech' Nice Sophia Antipolis


Annexe 7 : Code C du P I C
#include
<p18f2520.h>
//processeur P I C 18F2520
#include
<usart.h>
#include
<delays.h>
#pragma
config OSC = INTIO67
#pragma
config PBADEN = OFF
#pragma
config LVP = OFF
#define
Tambiante 32
void
transmit2(
int
);
void
InitA_D(
void
);
int
ConvertAD(
void
);

void
InitA_D(
void
)
{
/* Configuration des registres du CAN */
ADCON0= 0x07;
// selection de l'entrée analogique: AN0 et activation du CAN : 00 0001 11
ADCON1= 0b00001101;
// Vref+ = VDD, Vref- = VSS, selection des entrées analogiques et des entrées numériques: 0000

1110 1101
ADCON2= 0x92;
// justification droite,temp de conversion de 4*TAD,horloge=fosc/32: 1001 0010
}
int
ConvertAD(
void
)
{

unsigned

char
ucValH=0;
// poid fort résultat
unsigned

char
ucValL=0;
// poid faible résultat

int
delta;
ADCON0bits.ADON=1;
// activation du convertisseur
Delay10TCYx( 5 );
// Delay for 50TCY
PIE1bits.ADIE
=
0;

/* Masquer les interruptions */

PIR1bits.ADIF
= 0;

/* Reset ADC interrupt bit */
Wireless Care
70
Rapport de stage
Polytech' Nice Sophia Antipolis


ADRESL
=
0;

/* Reset ADRES */
ADRESH
=
0;
ADCON0bits.GO=1;
// démarrage conversion
while
(ADCON0bits.GO);
// si ADGO passe à 0 fin de conversion
ucValL = ADRESL;
ucValH = ADRESH;
delta=ucValL;
delta+=ucValH*256;
// delta a partir des conversion
ADCON0bits.ADON=0;
// convertisseur arrêté
return
delta;
}
void
main(
void
)
{

int
iresultat;

//Setup Ports
TRISA = 0b00000010;
//0 = Output, 1 = Input
TRISBbits.TRISB0=1;

/* Configuration de l'oscillateur */
OSCCON= 0b01110111;
// f=8MHz avec un oscillateur interne
InitA_D();
iresultat=ConvertAD();
Delay10KTCYx(500);
transmit2(iresultat);
}
void
transmit2(
int
delta2){
int
j;
// calcul et affiche delta2
char
res2[4];
// char *c1="votre temperature est de: ";
float
Tempout=0;
char
res[8];
Wireless Care
71
Rapport de stage
Polytech' Nice Sophia Antipolis


int
i=0;
// calcul temp
int
t;
char
car;
Tempout=(
float
)Tambiante+(
float
)(delta2*10)/1024;

for
(i=0;i<5;i++){
res[i]= Tempout/10;
Tempout=10*(Tempout-10*res[i]);
es[i]=res[i]+48;
}
Delay10KTCYx(10);
res[5]=res[4];
res[4]=res[3];
res[3]=res[2];
res[2]=',';
res[6]=' ';
res[7]='C';
res[8]=' ';

OpenUSART( USART_TX_INT_OFF &
//desactivation interruption transmission
USART_RX_INT_OFF &
// desactivation interruption emission
USART_ASYNCH_MODE &
// mode asynchrone
USART_EIGHT_BIT &
// donnée sur 8 bits
USART_CONT_RX &
// reception continue
USART_BRGH_HIGH,
// haut débit de transmission
25 );
Delay10KTCYx(10);
if
(PORTBbits.RB0==1){
//while(BusyUSART()=='0'); envoi de la chaine "votre temperature est de:"
//putrsUSART(c1);
//Delay10KTCYx(100);
for
(t=0;t<5;t++){
Delay10KTCYx(10);
while
(BusyUSART()=='0');
WriteUSART(res[t]);
}
Wireless Care
72
Rapport de stage
Polytech' Nice Sophia Antipolis


Delay10KTCYx(10);
while
(BusyUSART()=='0');
putrsUSART(" C");
Delay10KTCYx(10);
while
(BusyUSART()=='0');
putrsUSART("\n \r");
Delay10KTCYx(10);
while
(BusyUSART()=='0');
putrsUSART("\n \r");
}
CloseUSART();
}
Wireless Care
73
Rapport de stage
Polytech' Nice Sophia Antipolis


Annexe 8 : Code P HP
<?php
/*
* Created on Aug 2, 2007
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
* @Copiright Laurent Gendre
*/

if (isset($_GET['login']) AND isset($_GET['measure'])) {
// Affichage de la variable
echo 'Le numero de patient est le : ' . $_GET['login'] . "\n";
echo "<br>";
echo 'La mesure de temperature est de : ' . $_GET['measure'] . "\n";
echo "<br>";
// Passage de la variable dans une fonction SQL
Register(($_GET['login']),($_GET['measure']));
} else {
echo "La mesure de temperature est inexistante";
echo "<br>";
}

function Register($login,$measure){
// Configuration
$Host="sql.free.fr";
$Login1="www.esinsa";
$Pass1="Philips01";
$Base="PATIENT";
// Initialisation des variables
$error=0;
// Suppression des erreurs de saisie
if ($measure == ""){
$error=1;
}
// Suppression de certains caracteres speciaux
$measure = str_replace("@", "", $measure);
$measure = str_replace("'", "", $measure);
Wireless Care
74
Rapport de stage
Polytech' Nice Sophia Antipolis


$measure = stripslashes($measure);
// Test de la variable
//if(is_double($measure)==FALSE){
//$error=1;
//echo "erreur2";
//}
if($error==0){
// Init
$Cpt=0;
$Nb=0;
$Doublon=false;

// Connexion à la base de donnée
$Bd = mysql_connect($Host,$Login1,$Pass1);
//connexion à la base de donnée
$Sel = mysql_select_db($Base,$Bd);
// Requete
$Result=mysql_query("SELECT DISTINCT * FROM MESURE WHERE 1 ORDER BY ID_MESURE ASC", $Bd);
if (!$Result) {

die('Requête invalide : ' . mysql_error());
}
// Recuperation des donnees MESURE
while(mysql_fetch_row($Result)){
$IdMesure[]=mysql_result($Result, $Cpt, "ID_MESURE");
$Cpt++;
}
// Maj Cle MESURE
$Nombre=$Cpt-1;
$Id_Mesure=$IdMesure[$Nombre] + 1;

$Cpt=0;
while(!$IdMesure[$Cpt]){
// Verifie les doublons
if($IdMesure[$Cpt]==$Id_Mesure){
$Doublon=true;
}
$Cpt++;
Wireless Care
75
Rapport de stage
Polytech' Nice Sophia Antipolis


}

// Maj Date
$Date=date("F j, Y, g:i a");

// Enregistrement conditionnel
if($Doublon==false){
// Requete d'insertion
mysql_query("INSERT INTO MESURE (ID_MESURE,ID_PATIENT,DATE,DONNEE) VALUES

('$Id_Mesure', '$login', '$Date', '$measure') " , $Bd);
if (!$Result) {

die('Requête invalide : ' . mysql_error());
}else{
echo "Numero de mesure : ";
echo "$Id_Mesure";

echo "<br>";
echo "Enregistrement Reussi";

echo "<br>";
}
}else{

echo "Erreur de doublon";

echo "<br>";
}

// Fermeture de la base
mysql_close($Bd);
}else{
echo "La mesure de temperature nest pas valide";
echo "<br>";
}
}
?>
Wireless Care
76
Rapport de stage