réception trame GPS

Bonjour, j'aimerai recevoir une trame GPS et la stocker dans un tableau, seulement je n'arrive pas à stocker caractère par caractère de la trame dans une case à la fois dans le tableau. Après j'aimerai pouvoir isoler chaque partie de la trame c'est pour ca que j'aimerai un caractère = une case, Pourriez vous m'aider ? Merci

lebidoc: Bonjour, j'aimerai recevoir une trame GPS et la stocker dans un tableau, seulement je n'arrive pas à stocker caractère par caractère de la trame dans une case à la fois dans le tableau. Après j'aimerai pouvoir isoler chaque partie de la trame c'est pour ca que j'aimerai un caractère = une case, Pourriez vous m'aider ? Merci

bonjour tu veux faire du parsing de sentences NMEA ? A moins que ne veuille reinventer la poudre , il y a la lib tinygps bien symp. http://arduiniana.org/libraries/tinygps/

Oui je connais cette librairie mais j'aimerai le faire sans celle ci car l'utilisation que je veux faire avec la trame ne doit pas dépendre de la librairie, il me faut donc pouvoir stocker un caractère par un caractère de la trame dans un case d'un tableau. Vous avez une idée ? Merci

Les GPS envoient des chaînes de caractères et jusqu'à preuve du contraire, une chaîne de caractères c'est un tableau de caractères donc je ne vois pas bien où est le problème.

lebidoc: C'est juste de stocker un caractère dans une case d'un tableau en fait. J'aimerai faire "tableau=GPS.read();" en gros et que un caractère se mette dans une case

il est connecté comment ton GPS , si c'est par serial tu dimensionne un tableau suffisament grand pour recevoir ta sentence

et tu fais

if (Serial.available() > 0) {
     inByte = Serial.read();
tableau[I]=inByte;
I++
}

lebidoc: Et comment tu fais pour remettre I à 0 à chaque fin de ligne ?

tu teste les caracteres CR/LF et mets I à -1 Mais si tu pose ce genre de question c'est que tu ne cerne pas les bases je te conseile de lire ça http://eskimon.fr/62-arduino-3-communication-par-la-voie-serie

Artouste: bonjour tu veux faire du parsing de sentences NMEA ? A moins que ne veuille reinventer la poudre , il y a la lib tinygps bien symp. http://arduiniana.org/libraries/tinygps/

Hello, juste pour infos la bibliothèque tinygps++ est sortie: http://arduiniana.org/libraries/tinygpsplus/

TinyGPS++ is a new Arduino library for parsing NMEA data streams provided by GPS modules. Like its predecessor, TinyGPS, this library provides compact and easy-to-use methods for extracting position, date, time, altitude, speed, and course from consumer GPS devices. However, TinyGPS++’s programmer interface is considerably simpler to use than TinyGPS, and the new library can extract arbitrary data from any of the myriad NMEA sentences out there, even proprietary ones.

;)

john_lenfr: Hello, juste pour infos la bibliothèque tinygps++ est sortie: http://arduiniana.org/libraries/tinygpsplus/

Bonjour Merci , je ne l'avais pas vu passer cette lib, ça fait quelques mois que n'ai pas "reaccoupler" :grin: du GPS et de l'arduino. Je viens de tester , elle à l'air souple et sympa

Concernant la question à l'origine de ce post, je suggérerais de jeter un oeil par là : http://arduino.cc/en/Serial/ReadBytesUntil Il suffit de définir le caractère à chercher comme étant le retour chariot (CR) qui termine les trames NMEA et tu récupères un buffer remplit avec ta trame. Comme la trame NMEA se termine par CR + LF il faut lire un caractère de plus et le rejeter. ATTENTION à définir un buffer de taille suffisante pour recevoir la trame la plus longue possible.

fdufnews: Concernant la question à l'origine de ce post, je suggérerais de jeter un oeil par là : http://arduino.cc/en/Serial/ReadBytesUntil Il suffit de définir le caractère à chercher comme étant le retour chariot (CR) qui termine les trames NMEA et tu récupères un buffer remplit avec ta trame. Comme la trame NMEA se termine par CR + LF il faut lire un caractère de plus et le rejeter. ATTENTION à définir un buffer de taille suffisante pour recevoir la trame la plus longue possible.

bonjour fdufnews une sentence NMEA fait au max 82 caracteres (80 + les 2 terminateurs) elle offre en plus qq carateristiques simples à utiliser : le debut est toujours un "$" la sentence comporte toujours en fin (mais avant le checksum) un "*" le check est codé sur 2 bytes (representation ascii du check en HEXA)