2018/06/18
GPS.cpp
- Committer:
- Tomo073
- Date:
- 2018-06-13
- Revision:
- 3:940fe222bab0
- Parent:
- 2:578f518a6a05
- Child:
- 4:41330399104d
File content as of revision 3:940fe222bab0:
#include "mbed.h" #include "GPS.h" GPS::GPS(PinName gpstx,PinName gpsrx): serial(gpstx,gpsrx){ } void GPS::attach(void(*fn)()){ serial.attach(fn, Serial::RxIrq); } void GPS::GetDefault(){ datadefault = serial.getc(); } void GPS::GetData(){ Initialization(); datadefault = serial.getc(); if(datadefault == '$'){ char DATA[20] = "\0"; Initialization(); getstring(DATA); if(!strcmp(DATA, "GPGGA")){ int info; for(info=1;info<11;info++){ getstring(DATA); switch(info){ case 1: time = strtof(DATA, NULL) + 90000.0; break; case 2: fMinutes = modff(strtof(DATA, NULL), &latitude)*60.0; latitude = latitude*100.0 + fMinutes; break; case 3: if(!strcmp(DATA, "S")){ latitude = latitude*-1.0; } break; case 4: fMinutes = modff(strtof(DATA, NULL), &longtitude)*60.0; longtitude = longtitude*100.0 + fMinutes; break; case 5: if(!strcmp(DATA, "W")){ longtitude = longtitude*-1.0; } break; case 9: altitude = strtof(DATA, NULL); break; case 10: if(strcmp(DATA, "M")){ altitude = altitude*-1.0; } readable = true; break; } } } } } void GPS::getstring(char a[]){ int n; for(n = 0;;n++){ char ch = serial.getc(); if(ch == ',' ||ch == '\n'){ a[n] = '\0'; break; } a[n] = ch; } } void GPS::Initialization(){ readable = false; longtitude = -1.0; latitude = -1.0; altitude = -1.0; time = -1.0; fMinutes = -1.0; }