Ray,
I thought the the code was attached as "GPS_Tracker_for_Goops_23Oct17_v1c.ico"
Just in case, here it is inline:
// Program to receive GPS data from Adafruit Ultimate GPS receiver and format it for output on a serial radio link
// ie XBee to a receiving station running GooPs GPS tracking software (http://goopstechnologies.com/)
//
// Project is intended to allow a user at a central location to locate several vehicles equipped with GPS receivers.
//Make sure to install the adafruit GPS library from GitHub - adafruit/Adafruit_GPS: An interrupt-based GPS Arduino library for no-parsing-required use
//template inline Print &operator <<(Print &obj, T arg) { obj.print(arg); return obj; }
#include <Adafruit_GPS.h> //Load the GPS Library. Make sure you have installed the library form the adafruit site above
#include <SoftwareSerial.h> //Load the Software Serial Library. This library in effect gives the arduino additional serial ports
#include <Streaming.h>
SoftwareSerial mySerial(3, 2); //Initialize SoftwareSerial, and tell it you will be connecting through pins 2 and 3
Adafruit_GPS GPS(&mySerial); //Create GPS object
String NMEA1; //We will use this variable to hold our first NMEA sentence
String NMEA2; //We will use this variable to hold our second NMEA sentence
// const char Veh_ID[] = "joe@joescar:";
String Veh_ID = "joe@joescar:";
char c; //Used to read the characters spewing from the GPS module
void setup() {
Serial.begin(9600); //Turn on the Serial Monitor
GPS.begin(9600); //Turn GPS on at baud rate of 9600
GPS.sendCommand("$PGCMD,33,0*6D"); // Turn Off GPS Antenna Update
GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA); //Tell GPS we want only $GPRMC and $GPGGA NMEA sentences
GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz update rate
delay(1000); //Pause
}
void loop() // run over and over again
{
readGPS(); //This is a function we define below which reads two NMEA sentences from GPS
}
void readGPS(){ //This function will read and remember two NMEA sentences from GPS
clearGPS(); //Serial port probably has old or corrupt data, so begin by clearing it all out
// Get first NMEA data sentance
while(!GPS.newNMEAreceived()) { //Keep reading characters in this loop until a good NMEA sentence is received
c = GPS.read(); //read a character from the GPS
}
GPS.parse(GPS.lastNMEA()); //Once you get a good NMEA, parse it
NMEA1 = GPS.lastNMEA(); //Once parsed, save NMEA sentence into NMEA1
// Get second NMEA data sentance
while(!GPS.newNMEAreceived()) { //Go out and get the second NMEA sentence, should be different type than the first one read above.
c = GPS.read();
}
GPS.parse(GPS.lastNMEA());
NMEA2 = GPS.lastNMEA();
// Send Vehicle ID and NEMA data out of serail port
Serial << Veh_ID << NMEA1 << "\n";
Serial << Veh_ID << NMEA2 << "\n";
}
void clearGPS() { //Since between GPS reads, we still have data streaming in, we need to clear the old data by reading a few sentences, and discarding these
while(!GPS.newNMEAreceived()) {
c = GPS.read();
}
GPS.parse(GPS.lastNMEA());
while(!GPS.newNMEAreceived()) {
c = GPS.read();
}
GPS.parse(GPS.lastNMEA());
}