[pyar] pyserial, twisted y +

Sebastián Seba ssebastianj en gmail.com
Dom Jul 6 11:58:32 ART 2014


El 6 de julio de 2014, 11:36, Facundo Batista <facundobatista en gmail.com>
escribió:

> 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
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>

Esto es lo que usé hace tiempo (inspirado en algunos ejemplos en Internet)
para hacer una aplicación que lea datos del puerto serie (enviados por un
microcontrolador):

## Código súper resumido a modo de ejemplo


# Productor (Thread #1)
# -------------------------------
while True:
    try:
        cola.put("Dato a encolar")
    except Queue.Full:
        pass


# Consumidor (Main Thread)
# --------------------------------------
while True:
    try:
        dato = cola.get(True, 0.01)     #  En este caso timeout = 0.01. Es
cuestión de ir jugando con distintos valores.
    except Queue.Empty:
        pass
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140706/1fadfb9b/attachment-0001.html>


More information about the pyar mailing list