[pyar] pyserial, twisted y +

Facundo Batista facundobatista en gmail.com
Dom Jul 6 11:36:25 ART 2014


2014-07-06 1:08 GMT-03:00 Manuel Kaufmann <humitos en gmail.com>:

> Lo que hice fue crear un Thread que sea el productor (quien se conecta
> al puerto serie y guarda los datos en un buffer (Queue.Queue()) y en
> el main del archivo los consumía mediante un while True y usando
> Queue.Queue.get() . Esto me trajo algunos problemas ya que, por alguna
> razón, a veces se me quedaba bloqueado.

"Tenía un problema, usé threads, ahora tengo dos problemas".

El Queue.get() es bloqueante. Supongo que lo que decís es que te te
bloquea los dos hilos? Habría que ver el código.


> Me cansé de pelear con eso y me puse a leer un poco más: llegué a
> Twisted y SerialPort:
>
> https://twistedmatrix.com/documents/13.1.0/api/twisted.internet.serialport.SerialPort.html
>
> Ahora bien, usé Twisted una sola vez y muy por arriba y ahora no estoy
> seguro que me pueda servir para hacer lo que quiero: "captar los datos
> del puerto serie -sin perder ninguno, sino que guardando en un buffer-
> y luego graficarlos en 2 dimensiones"
>
> ¿Por dónde me conviene seguir investigando? ¿Es Twisted útil para eso?

Por un lado, según lo que vos describís, no necesitás paralelismo para
nada. O sea, primero capturás los datos del puerto serie, los vas
metiendo en una lista, y cuando terminás, graficás. ¿O no?

Por otro lado, si fueses a usar paralelismo, creo que Twisted te
serviría (pero no estoy seguro, porque todavía no veo por qué
necesitás paralelismo), si es que de serial.Serial podés exponer un
socket. Es muy similar a lo que hice para mezclar Twisted y pyinotify
en el ubuntuone-client [0], y anda de perlas.

Slds.


[0] linea 178 de
http://bazaar.launchpad.net/~ubuntuone-control-tower/ubuntuone-client/trunk/view/head:/ubuntuone/platform/filesystem_notifications/monitor/linux.py

-- 
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/
Twitter: @facundobatista


More information about the pyar mailing list