La section linux de pokie

none none none
none pokie

 EeeBox

 Modelisme

 F@milyNet

 Linux
    Infosec nut
    Arm Raspberry
    Install 8.0
    Install 11.0
    MGE UPS WEB
    ADSL check
    TomTom

 Electronique

 Escalade

 Photos

 Skicam

 Ce serveur

 Inscription

 Liens

Vulnerability Scanner
none
none none none
none none none
none Pokie:TomTom (GPS) & Linux Dans cette page je vous propose une astuce pour mettre à jour le fichier d'éphémérides pour le quickfix des gps tomtom sous linux et lire/ecrire les fichiers ov2 en php:

Mise à jour du QuickFix Sirf Star III GPS sous linux

Le nécessaire:

  • wget, perl
  • un lecteur de cartes mémoires SD, ou le TomTom avec le cable usb

Installation:

Script quickfix_update.sh


#!/bin/sh -f
# script de mise a jour

mount /mnt/sda1
# Si la carte SD tomtom n'a pas de partition, alors remplacer la ligne précédente par:
# mount /mnt/sda

cd /mnt/sda1/ephem

wget -N http://service.mio-tech.com/eeservice/packedephemeris.ee
# Si vous possedez la version XL ou one v4 il vous faudra alors le ficher Long Term Orbit au lieu du precedent
wget -N http://gllto.glpals.com/7day/latest/lto.dat

# generate ee_meta.txt
FTIME=`stat -c '%Y' packedephemeris.ee`
FTIME=$(($FTIME+604800))
echo "Expiry=$FTIME" > ee_meta.txt

Description:

Le quickfix ne se met pas automatiquement a jour avec mon tomtom home sous windows et je n'aime pas utiliser les programmes proprietaire dont on ne sait pas ce qu'ils font ni pourquoi ils ne le font pas.

donc je telecharge sur le site de mio ou global locate (selon le chipset du GPS) les ephemerides pour 7 jours:
http://service.mio-tech.com/eeservice/packedephemeris.ee
http://gllto.glpals.com/7day/latest/lto.dat

Il semblerait que ce fichier sur le site de mio soit mis a jour a 19h. N'abusez pas en telechargant celui-ci plus d'une fois par semaine pour la sante de leur serveur. Cela ne change en rien les performances du quickfix.

puis je met a jour le fichier ee_meta.txt qui contient la date de validité du pack d'ephemeride en temps universel:
Expiry=1378080002

Qui signifie une date de validite jusqu'au 02 September 2013, 02:09
et je jetes le tout dans le repertoire ephem de la carte SD du tomtom.

Cela permet au GPS de demarrer a froid en 5 secondes: Habituellement il faut attendre 30 secondes pour que le satellite envoi sa position. Si on rate se signal a cause d'un immeuble, il faut attendre encore 30 secondes et ceci pour chaque satellite recu. Avec le fichier d'ephemeride, le gps connait la position de tous les satellites donc pas besoin d'attendre ce signal est dès qu'on recoit un signal on peut trianguler.

Structure d'un fichier ov2

TypeLongueurLongitudeLatitudeDescriptionFin
022B 00 00 008B F9 06 00C5 44 44 005b 42 4c ... 61 76 69 6c 6c 6500
1 octet4 octets4 octets4 octetsvariable1 octet

Lecture d'un fichier ov2 en php

$nbov2 = 0;
$file="POI.ov2";
$fp = fopen($file, "rb");
$type = fread($fp, 1);
$type = bin2hex($type);
while ($type == "02") {
  $len = unpack("V",fread($fp, 4));
  $len = $len[1]-14;
  $lon = unpack("V",fread($fp, 4));
  $lon = $lon[1] / 100000;
  $lat = unpack("V",fread($fp, 4));
  $lat = $lat[1] / 100000;
  $data = fread($fp, $len);
  $nbov2 = $nbov2 + 1;
  echo "type=$type lon=$lon lat=$lat data=$data\n";
  $nil = fread($fp, 1);
  $type = fread($fp, 1);
  $type = bin2hex($type);
}
fclose($fp);
echo "Nombre de POIs dans le fichier: $nbov2";

Ecriture d'un fichier ov2 en php

  $csv=file("fichier.csv");
  $nbcsv=count($csv);
  $file="tomtom.ov2";
  $fp = fopen($file, "w");
  for ($i = 0; $i < $nbcsv; $i++) {
    $table = split(",",chop($csv[$i])); // Chaque ligne est du type: longitude,latitude,description
    $lon = $table[0];
    $lat = $table[1];
    $des = $table[2];
    $TT = chr(0x02).pack("V",strlen($des)+14).pack("V",round($lon*100000)).pack("V",round($lat*100000)).$des.chr(0x00);
    @fwrite ($fp, "$TT");
  }
  fclose($fp);
none
none none none