elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Comunicaciones
| |-+  Dispositivos Móviles (PDA's, Smartphones, Tablets) (Moderadores: Shell Root, rub'n)
| | |-+  Google Maps + GPS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Google Maps + GPS  (Leído 4,765 veces)
SVR91

Desconectado Desconectado

Mensajes: 1



Ver Perfil
Google Maps + GPS
« en: 30 Septiembre 2013, 05:56 am »

Saludos, tengo un dispositivo gps el cual he configurado para recibir únicamente comandos GPRMC lo que quiero es utilizar el Google Maps para que reciba esos comandos cada 3 segundos o un determinado tiempo para que pueda hacer el rastreo en el Google Maps, sinceramente ya he buscado mucho en "San Google" pero me quedo asi de:  :huh: por que encuentro que muchos se rinden y se van con la geolocalización de los navegadores (Definitivamente esto no quiero usar, si ya tengo mi dispositivo gps)

Lo estoy haciendo con linux (diran por que en linux, si hay personas que utilizan mas el S.O. windows, lo hago por que mis intenciones son que me funcione en linux por cuestiones de proyecto)

Utilizo un parser de NMEA a GPRMC del cual

Código:
<?php
set_time_limit(10);
// Converts DMS ( Degrees / minutes / seconds )
// to decimal format longitude / latitude
function DMStoDEC($dms, $longlat){
    if($longlat == 'lattitude'){
      $deg = substr($dms, 0, 2);
      $min = substr($dms, 2, 8);
      $sec = '';
    }
    if($longlat == 'longitude'){
      $deg = substr($dms, 0, 3);
      $min = substr($dms, 3, 8);
      $sec='';
          }
      return $deg+((($min*60)+($sec))/3600);
}
//Set timezone
date_default_timezone_set('America/Cancun');

//Connect to GPS
$gps = fopen("/dev/ttyUSB0", "r"); //Leerlo desde el puerto
//$gps = fopen("/home/saul/Escritorio/gps.txt", "r"); //Leerlo desde ubuntu saul
//$gps = fopen("/home/pi/Desktop/gps.txt", "r"); //Leer archivo en RPi

//Read data from GPS
while(!feof($gps)){
  $buffer = fgets($gps);
  if(substr($buffer, 0, 6)=='$GPRMC'){
    //echo $buffer."-----------------------"."\n";
    $gprmc = explode(',',$buffer);
    $data['timestamp'] = strtotime('now');
    $data['sat_status'] = $gprmc[2];
    $data['lattitude_dms'] = $gprmc[3];
    $data['lattitude_decimal'] = DMStoDEC($gprmc[3],'lattitude');
    $data['lattitude_direction'] = $gprmc[4];
    $data['longitude_dms'] = $gprmc[5];
    $data['longitude_decimal'] = DMStoDEC($gprmc[5],'longitude');
    $data['longitude_direction'] = $gprmc[6];
    if($gprmc[6]=='W'){
    $data['longitude_decimal']= '-'.DMStoDEC($gprmc[5],'longitude');
    }
    $data['speed_knots'] = $gprmc[7];
    $data['bearing'] = $gprmc[8];
    $data['google_map'] = 'http://maps.google.com/maps?q='.$data['lattitude_decimal'].','.$data['longitude_decimal'];
    /*print_r($data);*/
    echo "\n\n";
} }
fclose($gps);



?>

Si recibo la información del Puerto directamente con esta linea:

Código:
$gps = fopen("/dev/ttyUSB0", "r"); //Leerlo desde el puerto

Procesa esta información y nunca se detiene... pero con un cat /dev/ttyUSB0 >> gps.txt y lo leo desde ese archivo

Código:
$gps = fopen("/home/saul/Escritorio/gps.txt", "r"); //Leerlo desde ubuntu

Y me ubica en el ultimo punto captura del documento con esto:

Código:
//Read data from GPS
while(!feof($gps)){
  $buffer = fgets($gps);
  if(substr($buffer, 0, 6)=='$GPRMC'){
    //echo $buffer."-----------------------"."\n";
    $gprmc = explode(',',$buffer);
    $data['timestamp'] = strtotime('now');
    $data['sat_status'] = $gprmc[2];
    $data['lattitude_dms'] = $gprmc[3];
    $data['lattitude_decimal'] = DMStoDEC($gprmc[3],'lattitude');
    $data['lattitude_direction'] = $gprmc[4];
    $data['longitude_dms'] = $gprmc[5];
    $data['longitude_decimal'] = DMStoDEC($gprmc[5],'longitude');
    $data['longitude_direction'] = $gprmc[6];
    if($gprmc[6]=='W'){
    $data['longitude_decimal']= '-'.DMStoDEC($gprmc[5],'longitude');
    }
    $data['speed_knots'] = $gprmc[7];
    $data['bearing'] = $gprmc[8];
    $data['google_map'] = 'http://maps.google.com/maps?q='.$data['lattitude_decimal'].','.$data['longitude_decimal'];
    /*print_r($data);*/
    echo "\n\n";
}}

fclose($gps);



Y en el javascript mando las coordenadas que me hace el parser hecho en php asi:

Código:
function initialize() {
        var myLatlng = new google.maps.LatLng(<?php echo $data['lattitude_decimal'];?>,<?php echo $data['longitude_decimal'];?>);
          var mapOptions = {
            center: myLatlng,
            zoom: 16,
            mapTypeId: google.maps.MapTypeId.ROADMAP
          }

          var map = new google.maps.Map(document.getElementById("map_canvas"),mapOptions);
          var marker = new google.maps.Marker({
            position: myLatlng,
            map: map,
            title: 'Hello World!'
          });

        }

con el html en la marca del <body> asi:

Código:
<body onload="initialize()">

Y como les digo desde el archivo sin ningún problema pero desde el puerto tengo problemas...

Lo que quiero es hacer que cada determinado tiempo me lea desde el puerto para que primero no procese toda la información que va recibiendo y pueda hacer un Tracking (Rastreo) sin ningún problema con el google maps, solo eso me falta.

¡INTENTE! con el javascript el settimeout asi:

Código:
function gps(){
setTimeout(
        function initialize() {
        var myLatlng = new google.maps.LatLng(<?php echo $data['lattitude_decimal'];?>,<?php echo $data['longitude_decimal'];?>);
          var mapOptions = {
            center: myLatlng,
            zoom: 16,
            mapTypeId: google.maps.MapTypeId.ROADMAP
          }

          var map = new google.maps.Map(document.getElementById("map_canvas"),mapOptions);
          var marker = new google.maps.Marker({
            position: myLatlng,
            map: map,
            title: 'Hello World!'
          });

        },3000);
)

Y ni si quiera me muestra el Google Maps, e intente en el PHP con un sleep dentro del while:

Código:
//Read data from GPS
while(!feof($gps)){
  $buffer = fgets($gps);
  if(substr($buffer, 0, 6)=='$GPRMC'){
    //echo $buffer."-----------------------"."\n";
    $gprmc = explode(',',$buffer);
    $data['timestamp'] = strtotime('now');
    $data['sat_status'] = $gprmc[2];
    $data['lattitude_dms'] = $gprmc[3];
    $data['lattitude_decimal'] = DMStoDEC($gprmc[3],'lattitude');
    $data['lattitude_direction'] = $gprmc[4];
    $data['longitude_dms'] = $gprmc[5];
    $data['longitude_decimal'] = DMStoDEC($gprmc[5],'longitude');
    $data['longitude_direction'] = $gprmc[6];
    if($gprmc[6]=='W'){
    $data['longitude_decimal']= '-'.DMStoDEC($gprmc[5],'longitude');
    }
    $data['speed_knots'] = $gprmc[7];
    $data['bearing'] = $gprmc[8];
    $data['google_map'] = 'http://maps.google.com/maps?q='.$data['lattitude_decimal'].','.$data['longitude_decimal'];
    /*print_r($data);*/
    echo "\n\n";
}
//sleep for 3 seconds
sleep(3);
}

Y no me funciona... practicamente lo que quiero es estar recibiendo la información desde el puerto (donde tengo conectado mi dispositivo gps) y procesarlo cada 3 segundos con el google maps para que pueda realizar el rastreo en "Tiempo real", alguien que sepa? y que me pueda ayudar porfavor u.u no encuentro la solución a este (considero yo...) pequeño detalle  :(



« Última modificación: 30 Septiembre 2013, 06:02 am por SVR91 » En línea

Conoce lo que se hacer y compartamos conocimientos desde: http://www.webonactivo.blogspot.com/
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: Google Maps + GPS
« Respuesta #1 en: 15 Noviembre 2013, 05:14 am »

Hace como 1 año estaba realizando un proyecto parecido al que tienes, usaba win$, aunque no tiene nada que ver... El caso es qué,

Tenia una base de datos en postgresql, -supongo que ese motor de base de datos, por ser agil-, y se realizo un daemon en C, el cual capturaba los datos cada X tiempo, generaba un archivo CSV y después lo subía a la base de datos, como tambien dependiendo de un parámetro, los subía directamente a la base de datos.

La ultima acción realizaba muchas peticiones al motor de base de datos, pero era para verlo en tiempo real.


En línea

Te vendería mi talento por poder dormir tranquilo.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines