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 <pych...@gmail.com> escribió: > > > El 17 de mayo de 2015, 1:02, Rolando Paz <flx...@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@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@python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > >
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/