Interaccion con MCU y reproductor multimedia en pygtk
Arquitectura
Los clases ya definidas por Python, las cuales fueron usadas y son las siguientes:
Proyecto:
Esta clase contiene unicamente el main y hace correr la ventana principal de gtk
Base:
Esta clase contiene el window de gtk e implementa la acción del boton contenido en los frame reproductor y tiempo real.
Reproductor:
Esta
clase hereda de gtk.Frame contiene todos los botones, el reproductor
multimedia y el menú abrir, los cuales componen la parte principal del
frame, junto con un botón que al ser presionado, quita el frame y
coloca el frame tiempo_real.
Tiempo_real:
Esta clase también
hereda de gtk.Frame y posee una simulación del frame que está leyendo
los datos enviados por el MCU sobre la potencia generada por la
bicicleta, ademas de poseer una barra de menú y el botón volver, para
cambiar el frame de la misma forma que la clase Reproductor.
GST:
Esta
clase es gnome streamer la cual permite utilizar el reproductor en
nuesta ventana, ademas de permitir el uso de hebras para poder tener
las hebras para la reproducción del audio y video.
PANGO:
Esta
clase permite darle animación personalizada a los gtk.Label (igual que
en java Label) y permite que la fuente de abajo se mueva
sinusoidalmente y con la mitad de color negro y el resto verde como el
logo del proyecto.
PYGTK:
Esta es la clase mas importante, la
cual permite la integración de nuestro codigo en python para que pueda
ser un proceso heredado del entorno de escritorio gnome. El nombre
pygtk viene de python + gnome toolkit.
GTK:
Es la clase Gnome
ToolKit y nos permite poder utilizar los botones, los menús y todo el
entorno gráfico que utiliza el escritorio gnome (de la misma forma que
en java heredábamos las interfaces de swing o de awt).
Math:
Esta
clase nos permite usar funciones matemáticas , de la cual utilizamos la
función seno y damos el “efecto bailarin” al Label usado por pango.
Glib:
De
esta clase utilizamos “interrupciones” las cuales hacen posible ir
calculando el seno anteriormente mencionado en el tiempo y dar el
efecto de la sinusoidal corriendo, además generamos la “interrupción”
que permite ir actualizando en el tiempo lo que es mostrado en el Label
del Frame tiempo_real.