[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