Example code for reading from a serial GPS unit & parsing an RMC GPS string to a struct.
Fork of mbed_blinky by
main.cpp@20:a728f1075fb1, 2017-03-14 (annotated)
- 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?
User | Revision | Line number | New 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 | }*/ |