GUI 2 - USB-EC3883-III-2019/EC3883-G09 GitHub Wiki
Interfaz grafica
La interfaz grafica se realizo haciendo uso de la API de PyQt5 de python. A partir de la interfaz es posible seleccionar el tipo de operacion que se desee realizar al momento de iniciar el programa, y a traves de dos botones de seleccion. La operacion por defecto es Maestro.
Requerimientos
- PyQt5
- PySerial
Como ejecutar la interfaz
Para ejecutar la interfaz se debe correr el siguiente comando: ç
python interface.py
Para ejecutar la interfaz de usuario se debe
Modo Master
Para poder enviar los datos, se deben seleccionar las zonas a enviar a traves de 4 menus desplegables disponibles, identificados por Torre X, donde la X se corresponde con el numero de torre para el cual se esta seleccionando la zona.
Una vez realizado la configuracion de las zonas, se tiene un recuadro de texto justo al lado del boton de enviar, al cual se le debe ingresar el mensaje (o caracter) en numero decimal codificado en UTF-8.
Para realizar el envio de la trama al microcontrolador se debe presionar el boton de ENVIAR presente en la interfaz. Posterior al envio de la trama, la interfaz se mantiene leyendo constantemente el puerto serial para recibir la trama de recepcion desde el microcontrolador.
La operación de lectura del puerto serial es prolongada por lo que puede dejar inutilizable la interfaz. Para resolver esto se utilizó un segundo hilo de ejecucion el cual realiza esta operacion mientras el hilo principal maneja las respuestas de la interfaz. Los datos recibidos por este hilo son impresos por consola, no por la interfaz.
Modo Esclavo
La operación esclavo es mucho mas sencilla que la operación del maestro. La manera de manejar la entrada salida es identica a la manera en la que se realiza la recepción de los datos en la operación maestro.
Para iniciar la operación esclavo se inicia la interfaz y se selecciona el boton que señala la etiqueta "SLAVE". Una vez este boton se pulsa, se inicia un segundo hilo de ejecución que permite la recepción de los datos e imprime los datos recibidos por consola.
Problemas recurrentes
Cierre de la interfaz
Debido a que los hilos de ejecucion tienden a ser casi independientes al hilo de la interfaz, estos no pueden ser detenidos de manera facil. Por lo que una vez se inicia una lectura en modo maestro o esclavo, hasta que no haya recibido la data a traves del serial, el hilo no se termina. Por lo tanto se puede cerrar la pantalla de la interfaz y el programa seguira corriendo. Para poder efectivamente detener el programa se necesita cerrar el programa que inicia la interfaz. En el caso de Linux, Bash y en el caso de Windows, Git Bash.
Operación maestro
No se pueden realizar varias operaciones de envio y recepción en modo maestro. Solamente es posible recibir correctamente los datos del maestro una sola vez. Posterior al primer envio, el hilo retorna inmediatamente aparentemente con data incorrecta. Se debe reiniciar la interfaz completamente para poder realizar una nueva recepción correcta.
Operación esclavo
Así como para la operación esclavo, no es posible realizar multiples recepciones de mensajes desde el modo esclavo. Por lo tanto, se debe reiniciar la ejecución de la interfaz.