Comme évoqué dans un article précédent, le viliv S5 est équipé d’une puce GPS Sirf Star3. J’ai donc voulu voir ce que la bête avait dans le ventre, en ayant en tête une future commande du genre « Quel temps fera t-il demain Daryl? » et bim Daryl va voir sur le net la météo concernant la ville où il se trouve…
J’ai donc cherché a little sur le net et… le GPS peut être directement attaqué sur son port COM… Cela ne vous rappelle pas quelque chose?
J’ai donc réutilisé l’API RXTX:
- On récupère le port en question
- On se connecte
- On lit la stream de données
Constatations:
On récupère un beau charabia du genre:
$GPRMC,101836.000,A,4825.1856,N,00956.8032,E,0.23,226.38,230710,,*07
$GPVTG,226.38,T,,M,0.23,N,0.4,K*68
$GPGGA,101837.000,4825.1857,N,00956.8023,E,1,04,1.4,567.4,M,48.0,M,,0000*5E
$GPGSA,A,3,17,05,08,18,,,,,,,,,8.6,1.4,8.5*36
$GPRMC,101837.000,A,4825.1857,N,00956.8023,E,0.57,292.18,230710,,*0
- Current time in UTC
- Latitude and identifier N or S
- Longitude and identifier E or W
- Quality of measurement (0 == invalid, 1 == valid GPS, 2 == valid DGPS)
- Horizontal Dilution of Precision
- Height above sea level, with unit
- Height over geoid, minus height over ellipsoid, with unit
- Checksum
Dans mon code Java, je filtre donc sur les lignes GPGGA, je split sur « , » et dans un premier temps je récupère la 6ième valeur (0 si pas de fix GPS, 1 si fix satellite OK)
Ensuite, si on a un fix, on découpe le reste pour faire ressortir:
- la latitude
- la lat direction Nord ou Sud
- la longitude
- la long direction Est ou Ouest
Bon à savoir: les latitudes et longitudes ne sont pas directement exploitables, elles sont au format 4825.1857 or la plupart des applications utilisent le format du style 48° 25.1857′
Pour cela j’ai récupéré une petite class qui prend en entrée toute la ligne GPGGA et renvoie des informations bien formatées.
Bon, le résultat sur le viliv S5 est un peu décevant car il y a un petit blackout entre le moment où l’on se connecte au port, et le moment où l’on obtient les 1ères données (1min approx), du coup on ne sait pas trop ce que fait le programme. De plus la réception du viliv S5 n’est pas extraordinaire en intérieur. Je peine à fixer les satellites à 1m de la fenêtre. Quand je vois cela, je me dis que le GPS de l’iphone est vraiment pas mal…
Code java ici: http://pastebin.com/91weXXNb
Class format NMEA ici: http://pastebin.com/D1wk0Drk
Une petite photo du résultat (j’ai effacé quelques données… Catch me if you want…):