Académique Documents
Professionnel Documents
Culture Documents
Donnes du client : Mise en place de linterface avec le GPS. Spcifications extrapoles de ces donnes : - Mise en place dun serveur applicatif de traitement des donnes. - Mise en place dune base de donnes afin davoir un historique des points de passage, des vitesses, des altitudes et des directions. - Interfaage via GPRS entre le module GPS et le server TCP avec possibilit dune communication bidirectionnelle. - Mise en place dun systme de traitement unifi des donnes indpendant du modle du module GPS. - Dveloppement et publication dun service web. - Dveloppement dun client lourd avec authentification. Services fournir : - Disponibilit du service web. - Historique infini des points. - Client lourd : trac des itinraires, acquisition de la vitesse maximale, acquisition du dernier point, poursuite en temps rel dun module. Architecture propose :
Internet
Client
Internet
Client Base de donnes SQL Server 2005 Service Web Java
Architecture valide par le client. Planning prvisionnel : - Etude : deadline le 15 dcembre 2007. - Dveloppement de la partie applicative : deadline le 11 janvier 2008. - Dveloppement du service web avec le client lourd : deadline le 18 janvier 2008. - Passage en qualit : 19 au 21 janvier 2008. - Recette : le 22 janvier 2008. - Livraison en production : prvue le 24 janvier 2008.
Cahier de dveloppement
Dveloppement du serveur applicatif
Etude
Aprs documentation sur Internet ainsi quune prise de contact directe avec la socit Nomadic, nous avons obtenu les manuels de protocole de communication des deux types de modules GPS en notre possession. Suite cette recherche bibliographique, nous avons pu entamer ltude proprement parler de la structure du serveur applicatif. Lensemble du dveloppement sest fait sous : - Windows XP SP2 ou Windows Vista - Microsoft Visual Basic 2005 ou Visual Basic Enterprise Studio.Net - Eclipse Europa - Base de donnes MS SQL Server 2005 Express Edition Nous avons opt pour programmer le serveur applicatif en Visual basic .Net, il se compose dune fentre principale dadministration contenant entre autres la trace dexcution des commandes envoyes et reues des modules GPS. Ensuite, le traitement des diffrentes connexions aux modules GPS se fait de manire multi-threade : pour chaque client dont la connexion est accepte, lapplication cre un nouveau thread. Nous avons galement dcid de crer une classe spcifique pour stocker toutes les donnes dun point GPS (ID, date, longitude, latitude, vitesse, cap, altitude, nombre de satellites) et les formater correctement. En ce qui concerne le webservice, nous avons opt pour la programmation en Java. Les mthodes de base taient la rcupration dun log de positions entre deux dates avec un nombre maximum de rsultats, la rcupration de la dernire position.
Cette classe est utilise pour : - Lancer le serveur - Envoyer des commandes aux modules GPS - Configurer lIP du serveur - Grer les paramtres de connexion la base de donnes Ses mthodes sont principalement lies aux actions sur les contrles, le traitement est effectu par la classe clsServer. clsServer Cest cette classe qui traite activement avec les clients GPS ainsi que la base de donnes. Elle contient une collection de clients. Elle remonte galement une srie dvnements (signaux au sens systme) la form principale pour notamment afficher des messages de log. clsAbstractClient Cette classe abstraite regroupe tous les types de clients au sens GPS, quel que soit le module qui tente de se connecter. Cette classe doit tre hrite, on ne peut lutiliser en tant que telle. clsIntellitracX1 et clsN100 Classes drives de clsAbstractClient, elles sont spcifiques au type de module GPS qui se connecte. Pour utiliser un nouveau boitier, le dveloppeur devra crer une nouvelle classe clsDEVICE qui hrite de clsAbstractClient.
Lobjet PositionLog Cest un objet sans mthodes, uniquement pourvu de proprits. Il a t cr afin de nous assurer que les informations retournes par le module GPS, une string, soient bien recoupes et changes dans le bon format avant lentre en base de donnes. Cet objet nous sert aussi lorsque nous extrayons des donnes depuis la base de donnes. La base de donnes Notre base de donnes est une base de donnes Microsoft SQL Server 2005 Express Edition. Cette dition a simplement une limite de taille de DB de 4Go et ne possde pas doutils dadministration avancs. Nous fonctionnons avec une instance nomme localhost\SQLExpress, en authentification mixte. Elle contient pour le moment une table contenant les diffrentes entres de lhistorique de positions ; les colonnes sont ID (varchar), Date (date), Longitude (float), Latitude (float), Speed (float), Heading (float), NbSatellites (int). Quel que soit le type de module, le format des informations remontes est sensiblement le mme, ce qui nous a simplifi la tche.
Attention : le format de donnes date est trs diffrent selon que lon soit dans une base SQL ou dans un langage de programmation ou sur un service web.
Le client
Authentifiaction Web service Zone de configuration de lacqusition Acquisition de Acquisition de vitesse maximale la dernire position Mode traque
Historique de positions
Boutons de navigation
Sur la partie droite de la form, on retrouve une fentre web dans laquelle est affiche la carte correspondant aux rsultats avec un itinraire trac si on ne slectionne aucun lment. Contrle gnral de laccs au service web : La zone dauthentification nous permet davoir lidentifiant et le mot de passe de lutilisateur disponible en permanence pour les renvoyer au service chacun de nos appels. Les envois de requtes au service web sont en gnral dans un try-catch afin de ne pas planter le client si jamais nous perdons la connexion ou si lauthentification est mauvaise. Nous avons en cas derreur, un pop-up avec le texte de lexception leve et le genre derreur. Configuration de lacquisition Le menu droulant des ID est dynamique et rcupre la liste des ID disponibles auprs du webservice en temps rel chaque fois que lutilisateur clique dessus. Lorsque lutilisateur slectionne une ID, une requte selon les critres actifs ce moment l est automatiquement effectue. Si aucune ID nest entre et/ou slectionne, une pop-up interrompt le traitement et demande quune ID soit choisie. Le nombre de points est plafonn 100 par dfaut sur le contrle car sinon lurl passe dans le calcul de la carte trace est trop longue (plus de 2083 caractres) et ne se rsout pas. Par dfaut, la date maximale est la date du jour et la date minimale est la date une semaine avant le jour courant (fonction addDate(int) en VB)
Historique de positions : Contrle de type ListView en vue dtails . Pour chacun des rsultats renvoys par une requte, on ajoute un nouvel objet dans la listview. Lorsque lon clique sur un lment, il est slectionn et mis en surbrillance. Cette action de cliquer dclenche un handle qui rafraichit la fentre web pour centrer la carte sur lunique point slectionn. Boutons de navigation : Ils permettent lorsque la requte renvoie plus de rsultats que le nombre demand, de naviguer entre plusieurs pages de rsultats grce la variable iteration retroune au service web. Si lon se trouve dj la premire page, un handle rend le bouton previous inaccessible. Boutons Get Max Speed et Get Last Position : ils font appel aux fonctions ponymes au niveau du webservice, avec comme ID, celle slectionne dans le menu droulant. Mode traque : Ce mode permet le trac en temps rel du suivi dun module. Au moment o lon coche le bouton, la listview de rsultats est vide. Lorsque le bouton est coch, chaque tick du timer, un GetLastPosition est fait et son rsultat ajout la listview des rsultats sans remise zro. Le timer utilis est un timer prconfigur avec ses handles dans VB.Net, avec par dfaut un temps de 2s.
Etude
Afin de pimenter un peu ce projet, nous avons dcid de raliser ce web service laide dEclipse Europa, de Tomcat et dAxis2 dans le but de dcouvrir Java. Pour cela, nous avons rcupr le JDBC Sql Server pour Java et Axis2 utilis pour gnrer le web service laide de classes Java.
Cette partie t conue pour permettre au client final daccder des informations pertinentes sur les vhicules surveills. Les mthodes actuellement consommables sont : GetIds : Retourne lidentification de tous les boitiers GetLastPosition(id) : Retourne la dernire position occupe dun boitier GetPositions(id, date min, date max, iterations, max results) : Retourne un tableau de positions. Cette fonction est la principale et permet de rcuprer des trajets effectus par les vhicules. Nous devons pour cela indiquer la date de dbut et de fin que nous souhaitons consulter, lidentifiant du boitier, litration puis le nombre maximal de rsultats. Litration est utilise pour parcourir les rsultats si le nombre de positions retournes est suprieur au nombre maximal de rsultats. GetMaxSpeed(id, date min, date max) : Renvoie la vitesse maximale atteinte par le boitier dans lintervalle dates spcifis. Pour chaque appel, le client doit fournir un login et un mot de passe utilisateur afin de limiter laccs au web service de lextrieur.
La structure du Web Service est relativement simple. GeoTracker.java Classe principale du Web Service, cest partir de celle-ci que le web service t gnr. Ce sont les mthodes publiques qui sont exposes par le Web Service. Les variables membres et les mthodes prives sont utilises pour son fonctionnement interne. Voici les fonctions du Web Service publiques (en java):
public PositionLog GetLastPosition(String userName, String Password, long trackerId) public PositionLog[] GetPositions(String userName, String Password, int trackerID, Date minDate, Date maxDate, int maxResponse, int iteration, boolean OnlyMovingPositions) public SpeedLog GetMaxSpeed(String userName, String password, int trackerID, Date minDate, Date maxDate) public int[] GetIds(String userName, String password)
Le nom choisi pour les fonctions est le plus explicite possible. Pour cela, il nest pas ncessaire dexpliquer leurs fonctions dans le dtail.
SqlConnection.java Cette classe est une surcouche aux fonctions du JDBC Sql Server utilise pour simplifier les appels des fonctions de connexion. De ce fait, la connexion au server SQL seffectue de manire extrmement simple. SpeedLog.java Cette classe est en ralit un conteneur destin renvoyer un lment de type complexe (au sens XML) lors de lappel de la fonction GetMaxSpeed. Il est trs important de noter que chaque conteneur destin tre renvoy travers le Web Service doit possder des mthodes bien formates de type getX et setX (X tant le nom de la variable membre). Dans le cas contraire, le fichier WSDL ne contiendra pas les informations ncessaires pour rcuprer les donnes dans llment renvoy. PositionLog.java Cette classe joue le mme rle que SpeedLog, mais pour les informations de positions. Elle est donc une classe conteneur destine tre renvoye par le Web Service. En effet, lors de lappel de la fonction GetLastPosition, le Web Service renvoie un Objet PositionLog contenant les informations recherches.