[pyar] GTK, señales y puerto serie.

Manuel Naranjo naranjo.manuel en gmail.com
Jue Jul 29 16:14:16 ART 2010


Seba,
> Hola gente, estoy llevando a cabo un proyecto que consiste de una 
> interfaz electrónica conectada por RS232 a una computadora que se 
> encarga de mostrar en un programa los datos obtenidos por RS232 y 
> subir un archivo a Internet con dicha información. Para la parte del 
> programa de computadora decidí usar python ya que tengo cierta 
> experiencia (aunque muy poca para ser sinceros) y conozco sus 
> virtudes. Ya estuve ensayando con el RS232 y gracias a 
> pyserial logramos obtener datos con cierta simpleza y facilidad. El 
> problema surge cuando yo mi única experiencias con interfaces 
> gráficas es con GTK (y glade) y en el solo he hecho ventanas simples, 
> manejando un par de widgets y las señales que ellos disparan (botones 
> por ejemplo).
Mhh me imagino por que lado debe venir tu problema. El tema es que GTK 
requiere un loop de eventos para funcionar, y eso no se lleva del todo 
bien en primera instancia con cualquier tipo de comunicaciones.

Te recomiendo que mires la librería PyGobject y en particular el método: 
|glib.io_add_watch(/|fd|/, /|condition|/, /|callback|/, /|...|/)

Esta función te va a permitir que tu callback sea llamado cuando cierta 
condición sea cumplida. Por ejemplo si vos vas a recibir datos vas a 
querer que tu callback sea llamado cuando hayan datos listos para ser 
leídos.
|
>   El problema es que esto no se como encararlo. ¿Se puede generar 
> alguna señal y a partir de la misma definir un método que se encargue 
> de lidiar con la transmisión RS232? ¿o definir la señal luego de que 
> la transmisión haya sido completada y que dicho método se encargue de 
> las transferencias ftp ? ¿que me recomiendan?
Podrías explicar un poquito más como funciona tu sistema? Vos envías un 
comando y esperas una respuesta? O el tipo esta todo el tiempo enviando?.

Sea como sea te recomiendo que trabajes de forma asincrónica, sino vas a 
necesitas un segundo hilo y vas a tener que sincronizar el hilo de la 
GUI con el hilo del acceso a datos lo cual no va a ser sencillo.

>   Sinceramente no conozco cual seria la mejor forma de realizar esto 
> desde el punto de vista del diseño, y por lo que pude googlear no 
> encontré ningún tutorial de GTK que no sea ultra básico y trate temas 
> como la generación de señales ajenas a un widget.

De acceso asincrónico podes mirar esto 
http://code.google.com/p/proximitymarketing/source/browse/trunk/openproximity2/serverXR/async.py 
fijate la parte que hace testSpawnApplication, la idea ahí es arrancar 
una aplicación externa y que cuando termine se reciba una señal. Tu caso 
es más sensillo.

Acá hay un proyecto que hice hace un par de años para la facu 
http://code.google.com/p/avs3a-analyzer/source/browse/trunk/gui/ la idea 
era tener una FPGA la cual funcionaba como analizador lógico e imprimía 
en un puerto serie el estado de las entradas, la GUI hecha en PyGTK y 
Glade graficaba el estado de las variables en el tiempo. En algo 
parecido a tiempo real sino me equivoco.

Saludos,
Manuel

pd: A mi sólo me salío el mail de Seba en una cuadrado azul horrible?


------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20100729/49ab5ddd/attachment.html>


More information about the pyar mailing list