Module GPS trame RMC problème de détection

Bien le bonjour à tous !

Bon alors voilà, ayant vu mainte discussion au sein de ce forum, toutes plus intéressantes les une que les autres, je me suis lancé et ais créé un compte, car moi aussi j'ai besoin de réponses spécifiques ^^'

Je suis en classe de terminale STI2D, et j'ai donc un projet de fin d'année à réaliser (étant en spécificité SIN ma partie concerne la programmation d'un objet). Notre sujet est un Imoca et ma partie concerne la programmation d'une carte Arduino permettant la réception, le stockage, le décryptage et l'affichage dans le moniteur série des trames GPS grâce à un module GPS de la marque seeed (réf : ).

Pour l'instant, mon programme est le suivant :

// link between the computer and the SoftSerial Shield
// at 9600 bps 8-N-1
// computer is connected to Hardware UART
// SoftSerial Shield is connected to the Software UART:D2&D3

#include <SoftwareSerial.h>

SoftwareSerial SoftSerial(2, 3);
String message = "";
unsigned char buffer[64];                                               // buffer array for data receveive over serial port
int count = 0;                                                          // counter for buffer array


void setup() {
  SoftSerial.begin(9600);                                               // the SoftSerial baud rate
  Serial.begin(9600);                                                   // the Serial port of Arduino baud rate

}

void loop() {
  if (SoftSerial.available())                                           // if date is coming from software serial port ==> data is coming from SoftSerial shield

  {
    while (SoftSerial.available())                                         // reading data into char array

    {

      buffer[count++] = SoftSerial.read();                                   // writing data into array
      if (message.substring == "$GPRMC")
      {
        Serial.println ("la trame est une trame de type RMC");
      }

      if (count == 64)break;
    }
    Serial.write(buffer, count);                                           // if no data transmission ends, write buffer to hardware serial port
    clearBufferArray();                                                    // call clearBufferArray function to clear the stored data from the array
    count = 0;                                                             // set counter of while loop to zero
  }
  if (Serial.available())                                                // if data is available on hardware serial port ==> data is coming from PC or notebook
    SoftSerial.write(Serial.read());                                       // write it to the SoftSerial shield

}



void clearBufferArray()                                                 // function to clear buffer array

{
  for (int i = 0; i < count; i++)
  {
    buffer[i] = NULL; // clear all index of array with command NULL
  }

}

J'arrive bien à recevoir les trames GPS et les afficher dans le moniteur série (voir image ci-dessous)

Le problème est que puisqu'on a à faire à un bateau, la trame qui m'intéresse n'est que la "$GPRMC", mais comment faire pour "effacer" les autres ? Et pourriez-vous m'aider à créer un bout de programme permettant de décoder la trame RMC ? Je sais à quoi correspondent les valeurs sur la trame, mais j'aimerai afficher dans le moniteur série cette trame de la manière suivante :
Latitude : valeur de la trame,
Cap1 : valeur de la trame,
Longitude : valeur de la trame,
Cap2 : valeur de la trame,
Heure : valeur de la trame,
ETC...

J'espère obtenir de l'aide et arriver à remplir ma mission ^^

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. ➜ déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans "Les bonnes pratiques du Forum Francophone”

Oupsi effectivement, mais auriez-vous une solution à mon pb malgré tout ?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.