ESTE PROGRAMA TOMA UNA CADENA DE GPS NEMEA Y CREA LA CADENA QUE EN GOOGLE MAPS SE ABRE EL MAPA INDICANDO LA GEOLOCALIZACION lA LIBRERIA GPS, FUE MODIFICADA EN LA ESTRUCUTURA DE DATOS, PARA RECONOCER LA VARIABLE (LOCK)DEL GPS QUE INDICA SI LOS DATOS SON ACEPTABLES EL PROGRAMA SE PRUEBA CON EL GPS VIRTUAL DE PROTEUS Y SE INYECTAN LOS DATOS A UNA FRDMKL25Z ATRAVES DE UN DONGLE QUE SE VINCULA DE FORMA LOGICA AL COMPIM DEL PROTEUS

Dependents:   GoogleMapa

Fork of GPS_G by joshema 216

/media/uploads/tony63/tareagsm.png

ESTE PROGRAMA TOMA UNA CADENA DE GPS NEMEA Y CREA LA CADENA QUE EN GOOGLE MAPS, SE ABRE EL MAPA INDICANDO LA GEOLOCALIZACION LA LIBRERIA GPS, FUE MODIFICADA EN LA ESTRUCUTURA DE DATOS, PARA RECONOCER LA VARIABLE (LOCK)DEL GPS QUE INDICA SI LOS DATOS SON ACEPTABLES. EL PROGRAMA SE PRUEBA CON EL GPS VIRTUAL DE PROTEUS Y SE INYECTAN LOS DATOS A UNA FRDMKL25Z ATRAVES DE UN DONGLE QUE SE VINCULA DE FORMA LÓGICA AL COMPIM DEL PROTEUS. LAS CONEXIONES LA MUESTRA LA FIGURA DE ARRIBA, SI SE DESEA INCORPORAR A UN RASTREADOR SATELITAL. EL LED VERDE SE ENCIENDE SOLO SI LOS DATOS SON ACEPTABLES, LAMENTABLEMENTE EL GPS DE PROTEUS NO MODIFICA LA CADENA, SI SE CONFIGURAN MENOS DE TRES SATÉLITES EN VISTA.

LA CADENA RESULTANTE AL ESQUEMA ES LA SIGUIENTE. EL CENTRO DEL ESTADIO ATANACIO GIRARDOT, EN LA CIUDAD DE MEDELLÍN - COLOMBIA.

http://maps.google.com/maps?q=6.256791,-75.590302

Committer:
tony63
Date:
Mon Apr 27 02:08:24 2015 +0000
Revision:
2:8d7c7165ffe2
Parent:
1:df8295aa2b2b
Child:
3:7f621626d7e9
cordenadas de gps en enteros para google maps

Who changed what in which revision?

UserRevisionLine numberNew contents of line
simon 0:15611c7938a3 1 /* mbed EM-406 GPS Module Library
simon 0:15611c7938a3 2 * Copyright (c) 2008-2010, sford
simon 0:15611c7938a3 3 *
simon 0:15611c7938a3 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
simon 0:15611c7938a3 5 * of this software and associated documentation files (the "Software"), to deal
simon 0:15611c7938a3 6 * in the Software without restriction, including without limitation the rights
simon 0:15611c7938a3 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
simon 0:15611c7938a3 8 * copies of the Software, and to permit persons to whom the Software is
simon 0:15611c7938a3 9 * furnished to do so, subject to the following conditions:
simon 0:15611c7938a3 10 *
simon 0:15611c7938a3 11 * The above copyright notice and this permission notice shall be included in
simon 0:15611c7938a3 12 * all copies or substantial portions of the Software.
simon 0:15611c7938a3 13 *
simon 0:15611c7938a3 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
simon 0:15611c7938a3 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
simon 0:15611c7938a3 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
simon 0:15611c7938a3 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
simon 0:15611c7938a3 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
simon 0:15611c7938a3 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
simon 0:15611c7938a3 20 * THE SOFTWARE.
simon 0:15611c7938a3 21 */
simon 0:15611c7938a3 22
simon 0:15611c7938a3 23 #include "GPS.h"
simon 0:15611c7938a3 24
simon 0:15611c7938a3 25 GPS::GPS(PinName tx, PinName rx) : _gps(tx, rx) {
tony63 1:df8295aa2b2b 26 _gps.baud(9600);
simon 0:15611c7938a3 27 longitude = 0.0;
simon 0:15611c7938a3 28 latitude = 0.0;
simon 0:15611c7938a3 29 }
simon 0:15611c7938a3 30
simon 0:15611c7938a3 31 int GPS::sample() {
simon 0:15611c7938a3 32 float time;
simon 0:15611c7938a3 33 char ns, ew;
simon 0:15611c7938a3 34 int lock;
simon 0:15611c7938a3 35
simon 0:15611c7938a3 36 while(1) {
simon 0:15611c7938a3 37 getline();
tony63 2:8d7c7165ffe2 38 //$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47
simon 0:15611c7938a3 39 // Check if it is a GPGGA msg (matches both locked and non-locked msg)
simon 0:15611c7938a3 40 if(sscanf(msg, "GPGGA,%f,%f,%c,%f,%c,%d", &time, &latitude, &ns, &longitude, &ew, &lock) >= 1) {
tony63 2:8d7c7165ffe2 41 if(!lock) { //si lock es 1 hay lecturas ok
simon 0:15611c7938a3 42 longitude = 0.0;
simon 0:15611c7938a3 43 latitude = 0.0;
simon 0:15611c7938a3 44 return 0;
tony63 2:8d7c7165ffe2 45 }
tony63 2:8d7c7165ffe2 46 else {
simon 0:15611c7938a3 47 if(ns == 'S') { latitude *= -1.0; }
simon 0:15611c7938a3 48 if(ew == 'W') { longitude *= -1.0; }
tony63 2:8d7c7165ffe2 49 latitude = (latitude / 100.0f);
tony63 2:8d7c7165ffe2 50 //float minutes = latitude - (degrees * 100.0f);
tony63 2:8d7c7165ffe2 51 //latitude = degrees + minutes / 60.0f;
tony63 2:8d7c7165ffe2 52 longitude = (longitude / 100.0f);
tony63 2:8d7c7165ffe2 53 //minutes = longitude - (degrees * 100.0f);
tony63 2:8d7c7165ffe2 54 //longitude = degrees + minutes / 60.0f;
tony63 2:8d7c7165ffe2 55
simon 0:15611c7938a3 56 return 1;
simon 0:15611c7938a3 57 }
simon 0:15611c7938a3 58 }
simon 0:15611c7938a3 59 }
simon 0:15611c7938a3 60 }
simon 0:15611c7938a3 61
tony63 2:8d7c7165ffe2 62 /*
simon 0:15611c7938a3 63 float GPS::trunc(float v) {
simon 0:15611c7938a3 64 if(v < 0.0) {
simon 0:15611c7938a3 65 v*= -1.0;
simon 0:15611c7938a3 66 v = floor(v);
simon 0:15611c7938a3 67 v*=-1.0;
simon 0:15611c7938a3 68 } else {
simon 0:15611c7938a3 69 v = floor(v);
simon 0:15611c7938a3 70 }
simon 0:15611c7938a3 71 return v;
simon 0:15611c7938a3 72 }
tony63 2:8d7c7165ffe2 73 */
simon 0:15611c7938a3 74 void GPS::getline() {
simon 0:15611c7938a3 75 while(_gps.getc() != '$'); // wait for the start of a line
simon 0:15611c7938a3 76 for(int i=0; i<256; i++) {
simon 0:15611c7938a3 77 msg[i] = _gps.getc();
simon 0:15611c7938a3 78 if(msg[i] == '\r') {
simon 0:15611c7938a3 79 msg[i] = 0;
simon 0:15611c7938a3 80 return;
simon 0:15611c7938a3 81 }
simon 0:15611c7938a3 82 }
simon 0:15611c7938a3 83 error("Overflowed message limit");
simon 0:15611c7938a3 84 }