Example code for reading from a serial GPS unit & parsing an RMC GPS string to a struct.

Dependencies:   mbed

Fork of mbed_blinky by Mbed

Committer:
HackerLabATTKit01
Date:
Tue Mar 14 21:22:36 2017 +0000
Revision:
20:a728f1075fb1
Parent:
18:7ba014531492
Added comment option for using MODSERIAL instead of Serial

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dan 0:7dec7e9ac085 1 #include "mbed.h"
HackerLabATTKit01 16:1bf12f0bb4b9 2 #include "GPRMCSentence.h"
HackerLabATTKit01 16:1bf12f0bb4b9 3
HackerLabATTKit01 16:1bf12f0bb4b9 4 #define GPSBUFFSIZE 256
HackerLabATTKit01 16:1bf12f0bb4b9 5
HackerLabATTKit01 16:1bf12f0bb4b9 6 Serial pc(USBTX, USBRX); // tx, rx
HackerLabATTKit01 16:1bf12f0bb4b9 7 Serial xgps(PTC15, PTC14);
HackerLabATTKit01 20:a728f1075fb1 8 // If using MODSERIAL (as part of the WNC Interface for the AT&T IoT Starter Kit):
HackerLabATTKit01 20:a728f1075fb1 9 // MODSERIAL xgps(PTC15, PTC14, GPSBUFFSIZE, GPSBUFFSIZE);
HackerLabATTKit01 16:1bf12f0bb4b9 10
HackerLabATTKit01 16:1bf12f0bb4b9 11 unsigned gpsSentenceIndex = 0;
HackerLabATTKit01 16:1bf12f0bb4b9 12 char gpsSentence[GPSBUFFSIZE];
HackerLabATTKit01 16:1bf12f0bb4b9 13 GPRMCSentence lastPosition;
dan 0:7dec7e9ac085 14
HackerLabATTKit01 16:1bf12f0bb4b9 15 void clearGpsSentence() {
HackerLabATTKit01 16:1bf12f0bb4b9 16 for(int i=0;i<GPSBUFFSIZE;i++) gpsSentence[i] = '\0';
HackerLabATTKit01 16:1bf12f0bb4b9 17 gpsSentenceIndex = 0;
HackerLabATTKit01 16:1bf12f0bb4b9 18 }
HackerLabATTKit01 16:1bf12f0bb4b9 19
HackerLabATTKit01 16:1bf12f0bb4b9 20 int main() {
HackerLabATTKit01 16:1bf12f0bb4b9 21 pc.printf("Where am I? ----------- \n");
HackerLabATTKit01 16:1bf12f0bb4b9 22 clearGpsSentence();
HackerLabATTKit01 16:1bf12f0bb4b9 23 while(1) {
HackerLabATTKit01 16:1bf12f0bb4b9 24 gpsSentence[gpsSentenceIndex] = xgps.getc();
HackerLabATTKit01 18:7ba014531492 25 //pc.putc(gpsSentence[gpsSentenceIndex]);
HackerLabATTKit01 16:1bf12f0bb4b9 26 gpsSentenceIndex++;
HackerLabATTKit01 16:1bf12f0bb4b9 27 if(gpsSentence[gpsSentenceIndex - 1] == '\n') {
HackerLabATTKit01 16:1bf12f0bb4b9 28 gpsSentence[gpsSentenceIndex] = '\0';
HackerLabATTKit01 16:1bf12f0bb4b9 29 if (parseGPRMCStrToStruct(gpsSentence, &lastPosition) >= 0) {
HackerLabATTKit01 16:1bf12f0bb4b9 30 pc.printf("time: %s Status: %c \n\r" , lastPosition.time, lastPosition.status);
HackerLabATTKit01 16:1bf12f0bb4b9 31 pc.printf("Lat : %s %c \n\r" , lastPosition.latitude, lastPosition.latdir);
HackerLabATTKit01 16:1bf12f0bb4b9 32 pc.printf("Long: %s %c \n\r" , lastPosition.longitude, lastPosition.longdir);
HackerLabATTKit01 16:1bf12f0bb4b9 33 }
HackerLabATTKit01 16:1bf12f0bb4b9 34 clearGpsSentence();
HackerLabATTKit01 16:1bf12f0bb4b9 35 }
HackerLabATTKit01 16:1bf12f0bb4b9 36 }
HackerLabATTKit01 16:1bf12f0bb4b9 37 }
HackerLabATTKit01 16:1bf12f0bb4b9 38
HackerLabATTKit01 16:1bf12f0bb4b9 39
HackerLabATTKit01 16:1bf12f0bb4b9 40 /*include "mbed.h"
HackerLabATTKit01 16:1bf12f0bb4b9 41
HackerLabATTKit01 16:1bf12f0bb4b9 42 DigitalOut rled(LED_RED);
HackerLabATTKit01 16:1bf12f0bb4b9 43 DigitalOut gled(LED_GREEN);
HackerLabATTKit01 16:1bf12f0bb4b9 44 DigitalOut bled(LED_BLUE);
dan 0:7dec7e9ac085 45
dan 0:7dec7e9ac085 46 int main() {
dan 0:7dec7e9ac085 47 while(1) {
HackerLabATTKit01 16:1bf12f0bb4b9 48 rled = 0;
HackerLabATTKit01 16:1bf12f0bb4b9 49 gled = 0;
HackerLabATTKit01 16:1bf12f0bb4b9 50 bled = 0;
HackerLabATTKit01 16:1bf12f0bb4b9 51 wait(0.2);
HackerLabATTKit01 16:1bf12f0bb4b9 52 rled = 0;
HackerLabATTKit01 16:1bf12f0bb4b9 53 gled = 0;
HackerLabATTKit01 16:1bf12f0bb4b9 54 bled = 1;
HackerLabATTKit01 16:1bf12f0bb4b9 55 wait(0.2);
HackerLabATTKit01 16:1bf12f0bb4b9 56 rled = 0;
HackerLabATTKit01 16:1bf12f0bb4b9 57 gled = 1;
HackerLabATTKit01 16:1bf12f0bb4b9 58 bled = 0;
HackerLabATTKit01 16:1bf12f0bb4b9 59 wait(0.2);
HackerLabATTKit01 16:1bf12f0bb4b9 60 rled = 0;
HackerLabATTKit01 16:1bf12f0bb4b9 61 gled = 1;
HackerLabATTKit01 16:1bf12f0bb4b9 62 bled = 1;
dan 0:7dec7e9ac085 63 wait(0.2);
HackerLabATTKit01 16:1bf12f0bb4b9 64 rled = 1;
HackerLabATTKit01 16:1bf12f0bb4b9 65 gled = 0;
HackerLabATTKit01 16:1bf12f0bb4b9 66 bled = 0;
HackerLabATTKit01 16:1bf12f0bb4b9 67 wait(0.2);
HackerLabATTKit01 16:1bf12f0bb4b9 68 rled = 1;
HackerLabATTKit01 16:1bf12f0bb4b9 69 gled = 0;
HackerLabATTKit01 16:1bf12f0bb4b9 70 bled = 1;
HackerLabATTKit01 16:1bf12f0bb4b9 71 wait(0.2);
HackerLabATTKit01 16:1bf12f0bb4b9 72 rled = 1;
HackerLabATTKit01 16:1bf12f0bb4b9 73 gled = 1;
HackerLabATTKit01 16:1bf12f0bb4b9 74 bled = 0;
HackerLabATTKit01 16:1bf12f0bb4b9 75 wait(0.2);
HackerLabATTKit01 16:1bf12f0bb4b9 76 rled = 1;
HackerLabATTKit01 16:1bf12f0bb4b9 77 gled = 1;
HackerLabATTKit01 16:1bf12f0bb4b9 78 bled = 1;
stevep 4:81cea7a352b0 79 wait(0.2);
stevep 4:81cea7a352b0 80 }
HackerLabATTKit01 16:1bf12f0bb4b9 81 }*/