Renan Alves
/
GPS_Test_Code
test code
Fork of GPS_U-blox_NEO-6M_Test_Code by
main.cpp
- Committer:
- renanbmx123
- Date:
- 2018-05-25
- Revision:
- 2:4cc7f42f94c1
- Parent:
- 1:acd907fbcbae
File content as of revision 2:4cc7f42f94c1:
/* * Author: Renan * Date: 27-02-18 * Notes: Firmware for GPS GP 735T */ #include "mbed.h" #include <stdio.h> #include "TextLCD.h" int dateRef = 90318; Serial pc(USBTX,USBRX); Serial gps(p9, p10); TextLCD lcd(p11, p12, p15, p16, p29, p30); // rs, e, d4, d5, d6, d7 void Init() { gps.baud(9600); pc.baud(9600); } int getGPS(char* cDataBuffer,float *lat,float *lon,float *tmf,float *spd, int *dat, char *ns, char *ew, char *stat) { char nortSouth, eastWest, status; int date,fq, nst; // fix quality, Number of satellites being tracked, 3D fix float latitude, longitude, timefix, speed,altitude; if(strncmp(cDataBuffer,"$GPRMC", 6) == 0) { sscanf(cDataBuffer, "$GPRMC,%f,%c,%f,%c,%f,%c,%f,,%d", &timefix, &status, &latitude, &nortSouth, &longitude, &eastWest, &speed, &date); if (latitude !=0) *lat = latitude; if (longitude != 0) *lon = longitude; *tmf = timefix; *spd = speed; if (date >= dateRef) *dat = date; if (nortSouth == 'N' | nortSouth == 'S') *ns = nortSouth; if (eastWest == 'W' | eastWest == 'E') *ew = eastWest; *stat = status; // pc.printf("GPRMC Fix: %f, Status: %c, Latitude: %f %c, Longitude: %f %c, Speed: %f, Date: %d\n", timefix, status, latitude, nortSouth, longitude, eastWest, speed, date); // pc.printf("GPRMC Fix: %f, Status: %c, Latitude: %f %c, Longitude: %f %c, Speed: %f, Date: %d\n", *tmf, *stat, *lat, *ns, *lon, *ew, *spd, *dat); return 0; } if(strncmp(cDataBuffer,"$GPGLL", 6) == 0) { sscanf(cDataBuffer, "$GPGLL,%f,%c,%f,%c,%f", &latitude, &nortSouth, &longitude, &eastWest, &timefix); //pc.printf("%s",cDataBuffer); if (latitude !=0) *lat = latitude; if (longitude != 0) *lon = longitude; *tmf = timefix; *spd = speed; if (nortSouth == 'N' | nortSouth == 'S') *ns = nortSouth; if (eastWest == 'W' | eastWest == 'E') *ew = eastWest; return 0; } if(strncmp(cDataBuffer,"$GPGGA", 6) == 0) { sscanf(cDataBuffer, "$GPGGA,%f,%f,%c,%f,%c,%d,%d,%*f,%f", &timefix, &latitude, &nortSouth, &longitude, &eastWest, &fq, &nst, &altitude); if (latitude !=0) *lat = latitude; if (longitude != 0) *lon = longitude; //*alt = altitude; *tmf = timefix; if (nortSouth == 'N' | nortSouth == 'S') *ns = nortSouth; if (eastWest == 'W' | eastWest == 'E') *ew = eastWest; return 0; } return -1; } int main() { Init(); char Buffer[128],str[7]; char ns, ew, status; int date,gpsACK; // fix quality, Number of satellites being tracked, 3D fix float latitude, longitude, timefix, speed; memset(Buffer,0,sizeof(Buffer)); date = 0; latitude = longitude = timefix = speed = 0; ns = ew = status =0; while(true) { if(gps.readable()) { gps.gets(Buffer,90); if(Buffer[0] == '$'){ memcpy(str,Buffer, 6); //printf("\nrecv: %s\n",str); gpsACK = getGPS(Buffer, &latitude, &longitude, &timefix, &speed, &date, &ns, &ew, &status); } } if (gpsACK == 0) { lcd.printf("HORA:%d\n",(int)timefix); lcd.printf("DATA:%d\n",date); pc.printf("GPRMC Fix: %f, Status: %c, Latitude: %f %c, Longitude: %f %c, Speed: %f, Date: %d\n", timefix, status, latitude, ns, longitude, ew, speed, date); wait(.2); /* lcd.cls(); lcd.printf("LATITUDE:\n%f %c ",latitude,ns); wait(2); lcd.cls(); lcd.printf("LONGITUDE:\n%f %c ",longitude,ew); wait(2);*/ } } }