[Python-es] script_IBOB

Chema Cortes pych3m4 en gmail.com
Mar Mayo 19 02:02:58 CEST 2015


El 18 de mayo de 2015, 16:29, Rolando Paz <flxpaz en gmail.com> escribió:

> 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))
>

Si recibes "unsigned 32bits", no lo desempaquetes entonces  como floats.


>
> data = np.array(dataUDP,dtype=float)
>

Lo mismo, si son enteros, ¿necesitas que sean floats para algo?


> plt.plot(data)
> plt.show()
>
> Es correcto el código?
>

Lo más divertido del python es probar a ver si funciona.


>
> 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/
>>
>>
>
> _______________________________________________
> 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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20150519/8a5e7793/attachment.html>


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