[Python-es] script_IBOB

Rolando Paz flxpaz en gmail.com
Lun Mayo 18 16:29:14 CEST 2015


Hola Chema

Los datos que yo recibo de la IBOB son datos signed de 32 bit, creo que lo
correcto seria "<l"?

De acuerdo a tus observaciones, entonces el código debería ser así:

#!/usr/bin/python
"""
Primera prueba que busca graficar los datos binarios enviados por UDP desde
la IBOB.
Rolando Paz
"""
import numpy as np
import math, struct, socket
import matplotlib.pyplot as plt

HOST = '169.254.128.32'
PORT = 6969

#estableciendo el socket UDP
cs = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
cs.connect((HOST, PORT))

#desempaquetando datos binarios enviados por el enlace UDP
pkglen = struct.calcsize('<l')
    dataUDP = (struct.unpack('<f', s[i:i+pkglen]) for i in
range(0,len(resp),pkglen))

data = np.array(dataUDP,dtype=float)
plt.plot(data)
plt.show()

Es correcto el código?

Saludos

Rolando Paz


El 18 de mayo de 2015, 3:33, Chema Cortes <pych3m4 en gmail.com> escribió:

>
>
> El 17 de mayo de 2015, 1:02, Rolando Paz <flxpaz en gmail.com> escribió:
>
>> Hola nuevamente !
>>
>> Este script lo que debe hacer es obtener los datos desde una tarjeta
>> llamada IBOB (que en algún momento comenté por acá), enviados por UDP, y
>> luego graficarlos.
>>
>> Los datos son FFTs (Fast Fourier Transform) que procesa la IBOB.
>>
>> Pueden darme su opinión?
>>
>
> Parece un código bastante directo. Si funciona, no hay más que decir.
>
> Tal como está, a la dirección de HOST le faltan las comillas y la variable
> cs de pronto se expande como controlsocket. Por lo demás, ¿es necesario
> desempaquetar los datos recibidos como "unsigned long" (>L)? Si los datos
> se envían como floats, igual sería mejor desempaquetarlos directamente como
> float (>f). Ten en cuenta que np.array no te hace una conversión binaria de
> un "long" en "float".
>
> Por otro lado, del socket puedes recibir cualquier cantidad de datos, pero
> en cambio sólo estás desempaquetando un único dato, algo ilógico porque
> debes esperar más si quieres hacer una gráfica con ello, y además da error.
> Supongo que lo que buscas es desempaquetar una secuencia de datos:
>
>     pkglen = struct.calcsize(fmt)
>     dataUDP = (struct.unpack('>f', s[i:i+pkglen]) for i in
> range(0,len(resp),pkglen))
>
>
>
>>
>> #!/usr/bin/python
>> """
>> Primera prueba que busca graficar los datos binarios enviados por UDP,
>> Rolando Paz
>> """
>> import numpy as np
>> import math, struct, socket, pyfits
>> import matplotlib.pyplot as plt
>>
>> HOST = 169.254.128.32
>> PORT = 6969
>> print '\nConectando la iBOB...',
>>
>> #estableciendo el socket UDP
>> cs = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
>> cs.connect((HOST, PORT))
>>
>> resp = controlsocket.recv(4096)
>> print resp
>>
>> #desempaquetando datos binarios enviados por el enlace UDP
>> dataUDP = struct.unpack('>L',resp)
>> data = np.array(dataUDP,dtype=float)
>> plt.plot(data)
>> plt.show()
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
>
> --
> Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
> http://ch3m4.org/blog
> Buscador Python Hispano: http://ch3m4.org/python-es
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20150518/1790eb16/attachment.html>


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