[R-es] Leer datos desde un puerto udp y/o desde un puerto serie

Jorge Tornero - Listas jtorlistas en gmail.com
Mie Sep 23 10:52:40 CEST 2015


Hola, Antonio:

¡Dichosos barcos! Yo personalmente he encontrado bastantes dificultades 
con NMEA (y otros) a través de UDP, es un pequeño dolor.

Por lo que he visto de R, el problema puede residir en que las opciones 
posibles para conectar a sockets (socketConnection, make.socket) no 
contemplan, al menos por lo que he podido ir viendo, la posibilidad de 
escuchar UDP (aunque alguien lo habra hecho... seguro)

No obstante,hay una posible solución, al menos con simulador de GPS 
funciona (bajo Linux):

1) Hay que instalarse socat (en ubuntu/debian , apt-get install socat)

2) Ahora lo que hacemos es redireccionar el puerto UDP a un fichero de 
nuestro ordenador, eso sí, truncando cada vez que escribimos en él y así 
sólo queda la última sentencia recibida:
(imaginamos puerto UDp el 10000 y el fichero /home/antares/GPS.txt)

socat UDP-LISTEN:10000,reuseaddr,fork open:/home/antares/GPS.txt, 
create, trunc

En otras palabras, socat queda escuchando el puerto de interés, cuando 
recibe datos crea el fichero GPS.txt si no existe y lo trunca en otro 
caso, y escribe en él lo recibido por UDP.

3) Ahora, desde R hacemos alguna cosilla para ir leyendo desde ese 
fichero, para lo que R sí está preparado con scan(), por ejemplo

z<-0
nl<-""
nl2<-""

while (z<5){
nl<-scan('/home/antares/GPS.txt',what='character',quiet=TRUE,nlines=1)

     if (length(nl)>0) {
         if ((nl!=nl2)==TRUE) {

             nl2 <- nl
             print (paste('NMEA - ',nl))
             z<-z+1;

         }
     }
}


Como ejemplo y con gpsfeed+ como simulador, funciona, ahora ya otra cosa 
es ponerlo en práctica y que sea de utilidad...

Saludos,

Jorge




El 23/09/15 a las 08:20, Antonio Punzon Merino escribió:
>
>
> Hola,
> Soy bastante novato en esto de las comunicaciones.
> Recibo a trav�s de un puerto udp (tambi�n me interesa como se hace a trav�s de puerto serie) datos de gps, profundidad, etc. Querr�a saber como puedo abrir el puerto y leer la informaci�n en streaming
> He intentado diferentes opciones (scan, file,....) pero no he encontrado la forma.
> Muchas gracias
>
> Antonio
>
> 	[[alternative HTML version deleted]]
>
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es


	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es