Aplicación gráfica xgpbot-test para pruebas de la tarjeta GPBOT
Descripción:
Realización de un programa gráfico para el acceso a todos los recursos de la tarjeta GPBOT y GP_IFAZ. Entorno de programación Linux y librerías gráficas GTK+. El objetivo es que esta apliación sea usada por los alumnos del próximo año para comprobar el funcionamiento de sus placas y sus robots.
Se trata de un proyecto casi exclusivamente de software.
Tutor: Juan González
Descripción detallada:
Cuando en la tarjeta GPBOT se graba el servidor genérico , se tiene acceso desde el PC a todo el mapa de memoria del 6808, por lo que se puede leer y escribir en cualquiera de los puertos de entrada/salida. Esto permite, entre otras cosas, poder activar los motores conectados a la GP_IFAZ, o leer el estado de los sensores de infrarrojos.
La comuniación con el servidor genérico, se realiza a través de la API de la librería stargate. Nos ofrece los servicios de Ping, identificación, load y store.
El programa que se creará, xgpbot-test, ofrecerá un interfaz gráfico para acceder a todos los puertos digitales: A,B,C,D y E, a las entradas digitales, los motores y los sernsores.
Nombre del programa: xgpbot-test
Licencia: GPL
Librerías gráficas: GTK+ y Libglade
Funcionalidad básica:
Aquí se muestra un ejemplo de interfaz desarrollado con Glade-2, que permite hacerse una idea de la funcionalidad del programa:
La parte superior es una barra de menú. El menú Archivo sólo tiene la opción de Salir. En el menú de acciones se tiene acceso a las ventanas de Puertos digitales, Entradas analógicas, sensores y motores, que también están accesibles desde la barra de herramientas inferior
La barra de herramientas permite accesos directos a las diferentes ventanas de la aplicación: Ventana de puertos digitales, de entradas analógicas, de sensores y de motores. Al abrir una de estas ventanas, el botón correspondiente deberá quedar “no sensible” para evitar que se habran ventanas duplicadas.
En el estado de la conexión se indica el servidor identificado (obtenido mediante el servicio de identificación) y el estado de la conexión. Para conocer si hay conexión con el servidor, se realizará un Ping periodicamente (por ejemplo cada medio segundo). Si el ping no responde, se considerará que la conexión se ha perdido. Si responde, y anteriormente no había conexión, se reestablecerá. El ping estará habilitado por defecto, pero se puede deshabilitar en cualquier momento, accediendo al checkbutton “Activar/desactivar Ping”.
Este es un boceto de la ventana de puertos digitales:
Desde esta ventana se tiene acceso a todos los puertos digitales, tanto para escribir como para leer. El interfaz de acceso para cada uno de ellos es el mismo
En la entrada “Hex” se introduce el valor en hexadecimal a enviar al puerto.
El botón “Escribir” envía el contenido de “Hex” al puerto
El botón “Leer” realiza una lectura y muestra el resultado en Hex. Sólo se hace una lectura.
El botón de dos estados “Lectura cíclica” activa un temporizador para leer constantemente el puerto, por ejemplo cada 100ms. El resultado se va mostrando en “Hex”
El botón “Cerrar” cierra la ventana.
Los “checkboxes” de la izquierda se usan para establecer la dirección de los pines de los puertos: entrada (E) o Salida (S). Los bits que están marcados son de Salida (y deberá imprimirse una S en parte inferior) y el resto de Entradas (se indica con la letra E).
Ventana de entradas analógicas:
Cada canal analógico tiene asignada una barra de progreso que indica el nivel de tensión recibido. Si el canal tiene un valor de 255, la barra ocupará todo el espacio. Si tiene un valor de 0, será como el mostrado en la captura superior.
Los “checkbuttons” asociados a cada canal, indican si se está leyendo o no el canal correspondiente. Si está activado la lectura es continua, leyéndose cada 100ms por ejemplo.
Ventana de Sensores:
Se muestra el estado de cada uno de los sensores: ON (si está a 1), OFF (si está a 0)
Los checkbuttons de la izquierda especifican si está habilita o no la lectura de un determinado sensor. Si lo está, se puede leer cada 100ms por ejemplo.
Ventana de control de motores:
Con la parte superior se pueden mover los botones individualmente: adelante, parado o atrás.
La parte inferior está destinada a mover el robot. Mientras esté pulsada alguna de las flechas de dirección, el robot se estará moviendo. Cuando se suelte el botón, el robot se parará.
En la parte inferior están los valores que hay que enviar al puerto para que el robot se puede mover adelante, atrás, derecha o izquierda. Estos valores depende de cómo se hayan conectado los motores a la GP_IFAZ.
Mejoras al proyecto:
Las GTK+ son librerias multiplataforma. Una mejora muy interesante es conseguir que el programa compile para entornos Windows, usando la herramienta Cygwin.
Empaquetamiento de la aplicación como paquete .deb, para su fácil instalación en sistemas Debian Gnu/Linux