tito tito
/
GPS_IUT_Nice
programme GPS pour ERS4
Fork of GPS by
Revision 1:f24af888e699, committed 2016-03-11
- Comitter:
- pierrick
- Date:
- Fri Mar 11 10:18:09 2016 +0000
- Parent:
- 0:2c0686a07ab8
- Commit message:
- code simple gps ers4 iut nice
Changed in this revision
diff -r 2c0686a07ab8 -r f24af888e699 GPS.cpp --- a/GPS.cpp Fri Nov 23 19:10:01 2012 +0000 +++ b/GPS.cpp Fri Mar 11 10:18:09 2016 +0000 @@ -35,12 +35,12 @@ while(1) { getline(); - + //printf("long= %f %c latitude= %f %c\n",&longitude, &ew, &latitude, &ns); // Check if it is a GPGGA msg (matches both locked and non-locked msg) if(sscanf(msg, "GPGGA,%f,%f,%c,%f,%c,%d", &time, &latitude, &ns, &longitude, &ew, &lock) >= 1) { if(!lock) { longitude = 0.0; - latitude = 0.0; + latitude = 0.0; return 0; } else { if(ns == 'S') { latitude *= -1.0; } @@ -62,15 +62,18 @@ v*= -1.0; v = floor(v); v*=-1.0; + puts("3\n"); } else { v = floor(v); + puts("4\n"); } return v; } void GPS::getline() { while(_gps.getc() != '$'); // wait for the start of a line - for(int i=0; i<256; i++) { + //for(int i=0; i<256; i++) { + for(int i=0; i<512; i++) { msg[i] = _gps.getc(); if(msg[i] == '\r') { msg[i] = 0;
diff -r 2c0686a07ab8 -r f24af888e699 GPS.h --- a/GPS.h Fri Nov 23 19:10:01 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* mbed EM-406 GPS Module Library - * Copyright (c) 2008-2010, sford - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include "mbed.h" - -#ifndef MBED_GPS_H -#define MBED_GPS_H - -/** A GPS interface for reading from a Globalsat EM-406 GPS Module */ -class GPS { -public: - - /** Create the GPS interface, connected to the specified serial port - */ - GPS(PinName tx, PinName rx); - - /** Sample the incoming GPS data, returning whether there is a lock - * - * @return 1 if there was a lock when the sample was taken (and therefore .longitude and .latitude are valid), else 0 - */ - int sample(); - - /** The longitude (call sample() to set) */ - float longitude; - - /** The latitude (call sample() to set) */ - float latitude; - -private: - float trunc(float v); - void getline(); - - Serial _gps; - char msg[256]; - -}; - -#endif
diff -r 2c0686a07ab8 -r f24af888e699 getline.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/getline.cpp Fri Mar 11 10:18:09 2016 +0000 @@ -0,0 +1,32 @@ +#include "mbed.h" +// receive a line from a stream, allowing backspace editing, +// and checking for buffer overflow. Terminates on either a \n or \r. +size_t getline(Stream &s, char *buf, size_t bufsize) +{ + char c; + size_t receivedChars = 0; + for(;;) + { + c = s.getc(); + if (c == '\r' || c == '\n') + break; + s.putc(c); + if (c == '\b') + { + if (receivedChars > 0) + { + buf--; + receivedChars--; + } + } + else if (receivedChars < bufsize - 1) + { + *buf++ = c; + receivedChars++; + } + } + *buf++ = 0; + s.putc('\n'); + s.putc('\r'); + return receivedChars; +} \ No newline at end of file
diff -r 2c0686a07ab8 -r f24af888e699 getline.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/getline.h Fri Mar 11 10:18:09 2016 +0000 @@ -0,0 +1,4 @@ + +// receive a line from a stream, allowing backspace editing, +// and checking for buffer overflow. Terminates on either a \n or \r. +extern size_t getline(Stream &s, char *buf, size_t bufsize); \ No newline at end of file
diff -r 2c0686a07ab8 -r f24af888e699 main.cpp --- a/main.cpp Fri Nov 23 19:10:01 2012 +0000 +++ b/main.cpp Fri Mar 11 10:18:09 2016 +0000 @@ -1,15 +1,87 @@ #include "mbed.h" -#include "GPS.h" +//#include "GPS.h" +#include <Serial.h> +#include "getline.h" +#include <math.h> +//#include "stream.h" Serial pc(USBTX, USBRX); -GPS gps(p13, p14); +//GPS gps(p13, p14); +Serial uart1(p13, p14); +char c; + int event_callback_t ; + int event; + unsigned char char_match ; + char msg[1000]; + /** The longitude (call sample() to set) */ + float longitude; + + /** The latitude (call sample() to set) */ + float latitude,time2; + + char ns, ew; + int lock; int main() { + uart1.baud(9600); + printf("hello\n"); + while (1){ + if (uart1.readable()) + { + + getline(uart1,msg,999); + // pc.printf("\n %s",msg); + //pc.printf("long= %f %c latitude= %f %c\n",&longitude, &ew, &latitude, &ns); + // Check if it is a GPGGA msg (matches both locked and non-locked msg) + if ( sscanf(msg, "$GPGGA,%f,%f,%c,%f,%c,%d", &time2, &latitude, &ns, &longitude, &ew, &lock )>=1) + { + if(!lock) { + longitude = 0.0; + latitude = 0.0; + pc.printf("long= %f %c latitude= %f %c\n",&longitude, &ew, &latitude, &ns); + //return 0; + } else { + if(ns == 'S') { latitude *= -1.0; } + if(ew == 'W') { longitude *= -1.0; } + float degrees =(latitude / 100.0f); + float minutes = latitude - (degrees * 100.0f); + latitude = degrees + minutes / 60.0f; + degrees = (longitude / 100.0f * 0.01f); + minutes = longitude - (degrees * 100.0f); + longitude = degrees + minutes / 60.0f; + printf("time = %f \n", time2); + pc.printf("long= %f %c latitude= %f %c\n",longitude, ew, latitude, ns); + //return 1; + }//end else + }//end if + }//end if + } //end while +} //end main + + /* + c=uart1.getc(); + pc.printf("%c",c); + */ + /* } + + + */ +/* while(1) { + //wait(1.0); + //printf("hello bis\n"); + if(gps.sample()) { - pc.printf("I'm at %f, %f\n", gps.longitude, gps.latitude); + printf("I'm at %f, %f\n", gps.longitude, gps.latitude); } else { - pc.printf("Oh Dear! No lock :(\n"); + printf("Oh Dear! No lock :(\n"); } } -} \ No newline at end of file +} + + +// Print "Hello World" to the PC + +#include "mbed.h" +*/ +