<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">El 18 de mayo de 2015, 16:29, Rolando Paz <span dir="ltr"><<a href="mailto:flxpaz@gmail.com" target="_blank">flxpaz@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hola Chema<div><br></div><div>Los datos que yo recibo de la IBOB son datos signed de 32 bit, creo que lo correcto seria "<l"?</div><div><br></div><div>De acuerdo a tus observaciones, entonces el código debería ser así:</div><div><div><br></div><div><div dir="ltr" style="font-size:13px"><div><font color="#9900ff" face="arial, helvetica, sans-serif">#!/usr/bin/python</font></div><div><font color="#9900ff" face="arial, helvetica, sans-serif">"""</font></div><div><font color="#9900ff" face="arial, helvetica, sans-serif">Primera prueba que busca graficar los datos binarios enviados por UDP desde la IBOB.</font></div><span class=""><div><font color="#9900ff" face="arial, helvetica, sans-serif">Rolando Paz <br></font></div><div><font color="#9900ff" face="arial, helvetica, sans-serif">"""</font></div><div><font color="#9900ff" face="arial, helvetica, sans-serif">import numpy as np<br></font></div><div><font color="#9900ff" face="arial, helvetica, sans-serif">import math, struct, socket   </font></div></span><span class=""><div><font color="#9900ff" face="arial, helvetica, sans-serif">import matplotlib.pyplot as plt</font></div><div><font color="#9900ff" face="arial, helvetica, sans-serif"><br></font></div><div><font color="#9900ff" face="arial, helvetica, sans-serif">HOST = '169.254.128.32' </font></div><div><font color="#9900ff" face="arial, helvetica, sans-serif">PORT = 6969</font></div><div><br></div></span><span class=""><div><font face="arial, helvetica, sans-serif"><span style="color:rgb(153,0,255)">#estableciendo el socket UDP</span><br></font></div><div><font color="#9900ff" face="arial, helvetica, sans-serif">cs = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)</font></div><div><font color="#9900ff" face="arial, helvetica, sans-serif">cs.connect((HOST, PORT))</font></div><div><font color="#9900ff" face="arial, helvetica, sans-serif"><br></font></div></span><span class=""><div><font face="arial, helvetica, sans-serif"><span style="color:rgb(153,0,255)">#desempaquetando datos binarios enviados por el enlace UDP</span><br></font></div></span><div><font color="#9900ff" face="arial, helvetica, sans-serif">pkglen = struct.calcsize('<l')<br></font></div><span class=""><div><div><div><font color="#9900ff" face="arial, helvetica, sans-serif">    dataUDP = (struct.unpack('<f', s[i:i+pkglen]) for i in range(0,len(resp),pkglen))</font></div></div></div></span></div></div></div></div></blockquote><div><br></div><div>Si recibes "unsigned 32bits", no lo desempaquetes entonces  como floats.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div dir="ltr" style="font-size:13px"><span class=""><div><font face="arial, helvetica, sans-serif"><br></font></div></span><span class=""><div><font face="arial, helvetica, sans-serif"><span style="color:rgb(153,0,255)">data = np.array(dataUDP,dtype=float)       </span><br></font></div></span></div></div></div></div></blockquote><div><br></div><div>Lo mismo, si son enteros, ¿necesitas que sean  floats para algo? <br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div dir="ltr" style="font-size:13px"><span class=""><div><font face="arial, helvetica, sans-serif"></font></div><div><font color="#9900ff" face="arial, helvetica, sans-serif">plt.plot(data)</font></div><div><font color="#9900ff" face="arial, helvetica, sans-serif">plt.show()</font></div><div style="color:rgb(80,0,80)"><font color="#0000ff"><br></font></div></span><div><font color="#000000">Es correcto el código?</font></div></div></div></div></div></blockquote><div><br></div><div>Lo más divertido del python es probar a ver si funciona.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div dir="ltr" style="font-size:13px"><div><font color="#000000"><br></font></div><div><font color="#000000">Saludos</font></div><span class="HOEnZb"><font color="#888888"><div><font color="#000000"><br></font></div><div><font color="#000000">Rolando Paz </font></div><div style="color:rgb(80,0,80)"><font color="#0000ff"><br></font></div></font></span></div></div></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">El 18 de mayo de 2015, 3:33, Chema Cortes <span dir="ltr"><<a href="mailto:pych3m4@gmail.com" target="_blank">pych3m4@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span>El 17 de mayo de 2015, 1:02, Rolando Paz <span dir="ltr"><<a href="mailto:flxpaz@gmail.com" target="_blank">flxpaz@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><font color="#000000">Hola nuevamente !</font></div><div><font color="#000000"><br></font></div><div><font color="#000000">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.</font></div><div><font color="#000000"><br></font></div><div><font color="#000000">Los datos son FFTs (Fast Fourier Transform) que procesa la IBOB.</font></div><div><font color="#000000"><br></font></div><div><font color="#000000">Pueden darme su opinión?</font></div></div></blockquote><div><br></div></span><div>Parece un código bastante directo. Si funciona, no hay más que decir.<br></div><div><br></div><div>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".<br><br></div><div>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:<br><br></div><div><span style="font-family:monospace,monospace">    pkglen = struct.calcsize(fmt)</span></div><div><span style="font-family:monospace,monospace">    dataUDP = (struct.unpack('>f', s[i:i+pkglen]) for i in range(0,len(resp),pkglen))<br></span></div><div> <br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span><div dir="ltr"><div><font color="#0000ff"><br></font></div><div><font color="#0000ff"><br></font></div><div><font color="#0000ff">#!/usr/bin/python</font></div><div><font color="#0000ff">"""</font></div><div><font color="#0000ff">Primera prueba que busca graficar los datos binarios enviados por UDP,</font></div><div><font color="#0000ff">Rolando Paz <br></font></div><div><font color="#0000ff">"""</font></div><div><font color="#0000ff">import numpy as np<br></font></div><div><font color="#0000ff">import math, struct, socket, pyfits   </font></div><div><font color="#0000ff">import matplotlib.pyplot as plt</font></div><div><font color="#0000ff"><br></font></div><div><font color="#0000ff">HOST = 169.254.128.32</font></div><div><font color="#0000ff">PORT = 6969</font></div><div><font color="#0000ff">print '\nConectando la iBOB...',</font></div><div><font color="#0000ff"><br></font></div><div><font color="#0000ff">#estableciendo el socket UDP<br></font></div><div><font color="#0000ff">cs = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)</font></div><div><font color="#0000ff">cs.connect((HOST, PORT))</font></div><div><font color="#0000ff"><br></font></div><div><font color="#0000ff">resp = controlsocket.recv(4096)<br></font></div><div><font color="#0000ff">print resp</font></div><div><font color="#0000ff"><br></font></div><div><font color="#0000ff">#desempaquetando datos binarios enviados por el enlace UDP<br></font></div><div><font color="#0000ff">dataUDP = struct.unpack('>L',resp)         </font></div><div><font color="#0000ff">data = np.array(dataUDP,dtype=float)       <br></font></div><div><font color="#0000ff">plt.plot(data)</font></div><div><font color="#0000ff">plt.show()</font></div></div>
<br></span>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-es" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div><span><font color="#888888"><br><br clear="all"><br>-- <br><div>Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales": <a href="http://ch3m4.org/blog" target="_blank">http://ch3m4.org/blog</a><br>Buscador Python Hispano: <a href="http://ch3m4.org/python-es" target="_blank">http://ch3m4.org/python-es</a></div>
</font></span></div></div>
<br>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-es" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org">Python-es@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-es" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature">Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales": <a href="http://ch3m4.org/blog" target="_blank">http://ch3m4.org/blog</a><br>Buscador Python Hispano: <a href="http://ch3m4.org/python-es" target="_blank">http://ch3m4.org/python-es</a></div>
</div></div>