Gestion de chaine de caractère

Bonjour,

je cherche à stocker dans un tableau "message" une chaîne de caractères envoyé régulièrement par un GPS par protocole XBee et reçu sur une clé USB XStick (Port série).

Le message est le suivant :
Heading: 274 Tilt: 7 Roll: -11 
LAT=48.715961 LON=2.203730 SAT=5 PREC=300 
CHARS=32386 SENTENCES=275 CSUM ERR=1


Je reçois de manière régulière ces messages, et j'aimerai stocker à chaque fois que j'appelle ma fonction de lecture, un seul de ces messages avec le bon ordre des caractères évidemment.

Il faudrait donc que je puisse repérer le début du message ("Head" par exemple avec la fonction "strstr"), puis que je stock les caractères dans le tableau "message[]" jusqu'à ce que j'arrive à la fin du message. Une fois que j'ai récupérer le premier message, j'efface le tableau puis je recommence avec le message suivant et ainsi de suite ...

Pour l'instant, j'arrive à stocker un nombre N de caractère (genre N=110) dans le tableau data[]. Mais quand je lance ma fonction, il stock N caractère dans data[] mais il commence au mauvais caractère, par exemple j'affiche :
oll: 0 
LAT=83330.00LON=LAT=83330.00LON=0.00 SAT=0 PREC=500 
Heading: 54 Tilt: -47 Roll: 0 
LAT=83330.00LON=He


Pouvez-vous m'aider svp ?

Merci d'avance !

3 réponses

  1. Bonjour, oui mon programme est en C et sur LINUX !
    0
    1. Un truc du genre :
      char * ptr;
      
      // Recherche du début
      do {
        ptr = NULL;
        lire data, nb_data
        if (nb_data>0)
        {
          data[nb_data] = 0;
          ptr = strstr (data, "Head");
          if (ptr != NULL) printf("%s", ptr);
        }
      } while (ptr == NULL);
      
      // On a trouvé le début
      
      do {
        lire data, nb_data
        if (nb_data>0)
        {
          data[nb_data] = 0;
          printf("%s", data);
        }
      } while (1);


      Ce n'est pas parfait car tu peux recevoir un paquet avec seulement un bout de "Head". A améliorer...
      0