Advertisement
Mayk0

Como Leer GPS Desde Puerto Serial en Ubuntu con Perl

May 7th, 2013
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.96 KB | None | 0 0
  1. #!/usr/bin/perl -w
  2. #use strict; #Esta linea es para hacer obligatorio la declaracion de variablesuse
  3. use Device::SerialPort; # Declaramos el Modulo para manejo de puertos
  4. my $serial = Device::SerialPort->new("/dev/ttyUSB0") || die "No se pudo abrir el puerto"; # configuracion del Puerto serial USB
  5. $serial->baudrate(4800); # Velocidad del Puerto o Razon de Bits(9600)
  6. $serial->read_char_time(0);     # don't wait for each character
  7. $serial->read_const_time(1000); # 1 second per unfulfilled "read" call
  8. $serial->write_settings; #
  9. # Envio de Datos por el Puerto Serial
  10.  
  11.  
  12. my $data;
  13. while(1){
  14.     my ($count,$saw)=$serial->read(1);
  15.  
  16.         if($saw ne '$'){ # $
  17.            $data .=$saw;
  18.         }else{
  19.        #http://aprs.gids.nl/nmea/#rmc
  20.  
  21.        #eg2. $GPRMC,225446,A,4916.45,N,12311.12,W,000.5,054.7,191194,020.3,E*68
  22.            #225446       Time of fix 22:54:46 UTC
  23.            #A            Navigation receiver warning A = OK, V = warning
  24.            #4916.45,N    Latitude 49 deg. 16.45 min North
  25.            #12311.12,W   Longitude 123 deg. 11.12 min West
  26.            #000.5        Speed over ground, Knots
  27.            #054.7        Course Made Good, True
  28.            #191194       Date of fix  19 November 1994
  29.            #020.3,E      Magnetic variation 20.3 deg East
  30.            #*68          mandatory checksum
  31.  
  32.         my ($id,$hora,$estado,$lat,$c_lat,$lng,$c_lng,$velocidad,$curso,$fecha,$variacion_mag,$chsum) =  split(",",$data);
  33.  
  34.         if($id eq 'GPRMC'){
  35.             #print "ID " .$id."\t".$estado."\t".$hora."\t".$lat."\t".$c_lat."\t".$lng."\t".$c_lng."\n";  
  36.  
  37.  
  38.         #print $c_lat.",".$c_lng."\n";#S,W
  39.  
  40.         my $lat_map = substr($lat,2,length($lat)) / 60 + substr($lat,0,2);
  41.         my $lng_map = substr($lng,3,length($lng)) / 60 + substr($lng,0,3) ;
  42.         if($c_lat eq 'S'){
  43.             $lat_map = $lat_map * -1;
  44.         }
  45.         if($c_lng eq 'W'){
  46.             $lng_map  = $lng_map * -1;
  47.         }
  48.         #print  $lat_map.",".$lng_map."\n";
  49.         print  "http://maps.google.cl/maps?q=".$lat_map.",".$lng_map."\n";  
  50. }
  51.         $data = '';
  52.  
  53.         }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement