Foros del Web » Programando para Internet » Javascript »

Google Maps con gps desde puerto

Estas en el tema de Google Maps con gps desde puerto en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 29/09/2013, 22:18
Avatar de SVR91  
Fecha de Ingreso: septiembre-2013
Ubicación: Cancún
Mensajes: 9
Antigüedad: 10 años, 6 meses
Puntos: 0
Pregunta Google Maps con gps desde puerto

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: 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 :(
  #2 (permalink)  
Antiguo 30/09/2013, 10:03
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Google Maps con gps desde puerto

el problema es que usualmente ningún navegador (que yo conozca) te va a dar acceso a un puerto en especifico, sí, en HTML5 hay acceso a diferentes dispositivos, pero hasta ahora no he visto acceso a puertos COM o USB por ejemplo.

Creo que lo que si podrías usar es un applet de java, que si tiene (por medio de permisos que conceda a la VM el usuario) acceder a puertos específicos. Aunque en general los applets de java son muy viejos y conseguir manuales sobre el tema puede resultar complicado.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 30/09/2013, 23:39
Avatar de SVR91  
Fecha de Ingreso: septiembre-2013
Ubicación: Cancún
Mensajes: 9
Antigüedad: 10 años, 6 meses
Puntos: 0
Pregunta Respuesta: Google Maps con gps desde puerto

Cita:
Iniciado por maycolalvarez Ver Mensaje
el problema es que usualmente ningún navegador (que yo conozca) te va a dar acceso a un puerto en especifico, sí, en HTML5 hay acceso a diferentes dispositivos, pero hasta ahora no he visto acceso a puertos COM o USB por ejemplo.

Creo que lo que si podrías usar es un applet de java, que si tiene (por medio de permisos que conceda a la VM el usuario) acceder a puertos específicos. Aunque en general los applets de java son muy viejos y conseguir manuales sobre el tema puede resultar complicado.
Me podrias explicar como usar el applet de java con el puerto :S

por que encontre este ejemplo:

Código:
<html>
<head>
  <script type="text/javascript">  
    function setup()
    {
      var serial = (document.getElementById("seriality")).Seriality();
      serial.begin(serial.ports[0], 9600);
      serial.write("Hello World");
    }
  </script>
</head>
<body onload="setup();">
  <object type="application/Seriality" id="seriality" width="0" height="0"></object>
</body>
</html>
Con el cual trabaja con el javascript y un puerto pero la verdad no se como podria hacerlo funcionar con lo que espero.
  #4 (permalink)  
Antiguo 01/10/2013, 10:13
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Google Maps con gps desde puerto

según lo que encontré Seriality es un plugin que debes instalar en el navegador, lo que confirma que de forma nativa el navegador no permite hacer lo que quieres.

Nunca he hecho un applet de java similar, te lo recomendé porque en una oportunidad ví un applet capaz de comunicarse con el TWAIN de un scannner, por lo cual puede tener acceso a los puertos
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 03/10/2013, 00:09
Avatar de SVR91  
Fecha de Ingreso: septiembre-2013
Ubicación: Cancún
Mensajes: 9
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Google Maps con gps desde puerto

Que tal saludos...!!! :)
Encontre el node.js que es un servidor-cliente que permite la transmisión de exceso de datos, lo investigare y quizas a algunos le pueda ayudar esto, sale nos vemos ;) y gracias por la ayuda maycolalvarez :)
  #6 (permalink)  
Antiguo 30/04/2014, 17:40
Avatar de ingsilor  
Fecha de Ingreso: abril-2014
Ubicación: Luque
Mensajes: 1
Antigüedad: 10 años
Puntos: 0
Respuesta: Google Maps con gps desde puerto

Hola SVR91

Lo ideal seria utilizar un programa de aplicación que lea de un socket o un puerto com en tu caso y que lo escriba en un .txt . y luego con el codigo que ya tienes puedes leer desde el archivo y mostrarlo en la web. Yo hice el programa aplicativo en C++, mi problema es que no puedo leerlo desde el archivo, cosa que tu ya lo solucionaste.
Puedes ayudarme en esa parte? y yo te ayudo con la lectura del socket

Etiquetas: funcion, google, gps, html, maps, php, puerto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:21.