En fait, je ne comprend pas vraiment comment fonctionne les fonctions d'arduino, rien ne me parle pour detecter une serie de caractère dans une trame.
Et j'aimerais donc savoir quelle partie de mon programme je dois changer et quelle fonction utiliser
Edit : J'ai reussi a faire fonctionner mon code, j'ai réussi a obtenir les infos dont j'avais besoin
#define RX 0;
String message = "";
void setup()
{
Serial.begin(9600);
}
void loop()
{
//Serial.print("Trame gps :");
Serial.print(message);
char carac = 0;
// boucle qui attends un \n pour valider la trame et la décoder (/!\ Passer l'option en bas à droite du moniteur série en "Nouvelle ligne")
while (carac != '\n')
{
// si un caractère est présent sur la liaison
if(Serial.available())
{
// lecture d'un caractère
carac = Serial.read();
// concaténation du caractère au message
message = message + carac;
}
}
Serial.print (message);
if (message.substring(0,6) == "$GPRMC")
{
//Serial.print("Trame GPRMC Recue : ");
//Serial.println(message);
// Décodage de la trame
// latitude
String latitude; latitude = latitude + message.substring(20,29); if(message[30] == 'N') latitude = latitude + " Nord"; else latitude = latitude + " Sud"; Serial.println ("Latitude: " + latitude);
// longitude
String longitude; longitude = longitude + message.substring(32,42); if(message[43] == 'W') longitude = longitude + " Ouest"; else longitude = longitude + " Est"; Serial.println ("Longitude: " + longitude);
// Heure
String heure; heure = heure + message[7] + message[8] + "H " + message[9] + message[10] + "Min " + message[11] + message[12] + "Sec "; Serial.println("heure: " + heure);
//Date
String date; date = date + message[57] + message[58] + "/" + message[59] + message[60] + "/20" + message[61] + message[62] ; Serial.println("date: " + date);
}
if (message.substring(0,6) != "$GPRMC"){ Serial.println(""); }
else
Serial.println("");
message = "";
}
$GPGGA,103822.000,4804.1441,N,00045.5744,W,1,4,2.01,97.5,M,47.7,M,,*77
$GPGSA,A,3,07,30,05,28,,,,,,,,,2.24,2.01,0.99*0E
$GPGSV,3,1,12,05,72,231,31,30,64,069,29,13,48,282,20,07,39,055,28*7C
$GPGSV,3,2,12,28,31,130,11,20,26,309,,15,16,282,,02,10,214,*72
$GPGSV,3,3,12,09,09,094,18,21,08,330,,27,01,022,,49,,,*4C
$GPRMC,103822.000,A,4804.1441,N,00045.5744,W,0.39,337.53,190218,,,A*75
Latitude: 4804.1441 Nord
Longitude: 00045.5744 Ouest
heure: 10H 38Min 22Sec
date: 19/02/2018
$GPVTG,337.53,T,,M,0.39,N,0.72,K,A*33
$GPGGA,103823.000,4804.1442,N,00045.5745,W,1,4⸮$GPGGA,103824.000,4804.1443,N,00045.5745,W,1,4,2.01,97.5,M,47.7,M,,*72
$GPGSA,A,3,07,30,05,28,,,,,,,,,2.24,2.01,0.99*0E
$GPRMC,103824.000,A,4804.1443,N,00045.5745,W,0.33,324.54,190218,,,A*7F
Latitude: 4804.1443 Nord
Longitude: 00045.5745 Ouest
heure: 10H 38Min 24Sec
date: 19/02/2018
$GPVTG,324.54,T,,M,0.33,N,0.60,K,A*3F
$GPGGA,103825.000,4804.1444,N,00045.5746,W,1,4,2.01,97.5,M,47.7,M,,*77
$GPGSA,A,3,07,30,05,28,,,,,,,,,2.24,2.01,0.99*0E
$GPRMC,103825.000,A,4804.1444,N,00045.5746,W,0.29,344.31,190218,,,A*74
Latitude: 4804.1444 Nord
Longitude: 00045.5746 Ouest
heure: 10H 38Min 25Sec
date: 19/02/2018
$GPVTG,344.31,T,,M,0.29,N,0.53,K,A*31
$GPGGA,103826.000,4804.1445,N,00045.5746,W,1,4,2.01,97.5,M,47.7,M,,*75
$GPGSA,A,3,07,30,05,28,,,,,,,,,2.24,2.01,0.99*0E
$GPRMC,103826.000,A,4804.1445,N,00045.5746,W,0.33,7.02,190218,,,A*79
Latitude: 4804.1445 Nord
Longitude: 00045.5746 Ouest
heure: 10H 38Min 26Sec
date: 02/18/20,,
$GPVTG,7.02,T,,M,0.33,N,0.60,K,A*3E
$GPGGA,103827.000,4804.1446,N,00045.5746,W,1,4,3.51,97.5,M,47.7,M,,*73
$GPGSA,A,3,07,30,05,28,,,,,,,,,7.13,3.51,6.20*0F
$GPGSV,3,1,12,05,72,231,32,30,64,069,30,13,48,282,20,07,39,055,25*7A
$GPGSV,3,2,12,33,32,199,,28,31,130,17,20,26,309,,15,16,282,*70
$GPGSV,3,3,12,02,10,214,,09,09,094,17,21,08,330,,27,01,022,*7A
$GPRMC,103827.000,A,4804.1446,N,00045.5746,W,0.32,358.38,190218,,,A*7A
Latitude: 4804.1446 Nord
Longitude: 00045.5746 Ouest
heure: 10H 38Min 27Sec
date: 19/02/2018
$GPVTG,358.38,T,,M,0.32,N,0.59,K,A*35
$GPGGA,103828.000,4804.1446,N,00045.5746,W,1,4,3.51,97.5,M,47.7,M,,*7C
$GPGSA,A,3,07,30,05,28,,,,,,,,,7.12,3.51,6.20*0E
$GPRMC,103828.000,A,4804.1446,N,00045.5746,W,0.27,356.50,190218,,,A*71
Latitude: 4804.1446 Nord
Longitude: 00045.5746 Ouest
heure: 10H 38Min 28Sec
date: 19/02/2018
Mais maintenant j'obtient parfois des résultats incomplèt durant l'affichage (ici la date) et je ne comprend pas pourquoi c'est comme ca, alors que j'ai une trame complète.
Voila un exemple pour illustrer
$GPRMC,103826.000,A,4804.1445,N,00045.5746,W,0.33,7.02,190218,,,A*79
Latitude: 4804.1445 Nord
Longitude: 00045.5746 Ouest
heure: 10H 38Min 26Sec
date: 02/18/20,,
$GPRMC,104617.000,A,4804.1430,N,00045.5561,W,0.11,55.57,190218,,,A*40
Latitude: 4804.1430 Nord
Longitude: 00045.5561 Ouest
heure: 10H 46Min 17Sec
date: 90/21/208,