buonasera,
sto realizzando un piccolo sistema con un gps, e ho bisogno di localizzare all'interno delle varie stringhe lette da seriale i dati che mi servono.
essendo i dati sempre lunghi uguali ho deciso di utilizzare la funzione substring.
Il mio problema ora è riuscire a passare dalla String a una variabile di tipo int o float, in modo che per esempio la latitudine dovrei moltiplicarla per 10 per spostare la virgola, però quando vado a leggere i dati int nel monitor seriale questi non corrispondono a quelli presenti in string, come posso risolvere?
vi do il codice (stavo facendo delle prove con l'orario)
#include <SoftwareSerial.h>
//pin 6 RX e pin 7 TX
SoftwareSerial mySerial(6, 7);
String NMEA;
String ora1;
float ora;
void setup() {
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
//init seriale hardware
Serial.begin(9600);
//init seriale software
mySerial.begin(9600);
}
void loop() {
if (mySerial.available()) {
//leggo la prima riga
char c = mySerial.read();
if (c != '\n') {
NMEA += c;
//Serial.print(NMEA);
}
else {
//printo solo la stringa che mi interessa
if (NMEA.substring(0, 6) == "$GNRMC")
{
ora1= NMEA.substring(7, 16) ;
ora=atoi(ora1.c_str());
Serial.println(ora);
/*Serial.println(caso);
if(conteggio==13){
conteggio=0;
Serial.println("");
}*/
}
NMEA = "";
}
}
}
Grazie in anticipo.