ELO 329: Diseño y Programación Orientada a Objetos
GUI para Control Inalámbrico de Movimiento de
un Robot
i.
Titulo: Cambiar mouse por teclado.
Actor: Usuario.
Descripción: El usuario una vez
iniciada la interfaz cambia el mouse por el teclado.
Flujo Principal:
1._ El usuario inicia aplicación
para el cliente (interfaz).
2._ El usuario se desplaza con el
puntero del mouse hacia la zona superior izquierda de la interfaz.
3._ El usuario mediante un clic
izquierdo del mouse selecciona el envío de comandos a través del teclado.
4._ La interfaz cambia el campo de
selección y resalta la imagen inferior correspondiente al teclado.
Variante:
3A1._ El usuario mediante un clic
derecho selecciona el envío de comandos a través del teclado.
4A1._ La interfaz no realiza ningún
cambio.
ii.
Titulo: Establecer conexión.
Actor: Usuario.
Descripción: El usuario establece
conexión con terminal.
Flujo Principal:
1._ El usuario inicia aplicación
para el cliente (interfaz).
2._ El usuario se desplaza con el
puntero del mouse hacia la zona inferior izquierda de la interfaz.
3._ El usuario mediante un clic
izquierdo del mouse accede a modificar uno de los dos campos de texto.
4._ El usuario ingresa el valor correspondiente.
5._ 3 y 4 dos veces (IP y Puerto).
6._ El usuario con el botón izquierdo del mouse presiona “set”.
7._ La interfaz resalta “set”
mientras el botón izquierdo del mouse siga presionado.
Variante:
6A1._ El usuario no presiona botón
izquierdo del mouse en “set”.
7A1._ La interfaz no resalta “set” y
no se establece conexión.
iii.
Titulo: Envío de comando mediante
mouse.
Actor: Usuario.
Descripción: Una vez establecida la
conexión, él usuario envía un comando utilizando el mouse.
Flujo Principal:
1._ El usuario establece conexión
(flujo principal caso de uso ii).
2._ El usuario se desplaza con el
puntero del mouse hacia la zona derecha de la interfaz.
3._ El usuario mediante un clic
izquierdo ó derecho presiona sobre una de las flechas de dirección de la
interfaz.
4._ La interfaz cambia la imagen de
la flecha presionada por una doble y resalta la imagen mientras el botón del
mouse siga presionado.
Variante:
3A1._ El usuario presiona una tecla.
4A1._ La interfaz no responde.
Figura 1: Diagrama de Clases
Figura 2: Diagrama de Secuencia
Figura 3: El usuario inicia aplicación para el cliente |
Figura 4: El usuario selecciona el envío de comandos a través del teclado |
Figura 5: El usuario modifica el campo IP |
Figura 6: El usuario modifica el campo PORT. |
|
Figura 7: El usuario presiona “set” |
Figura 8: Se establece conexión |
El usuario
inicia aplicación para el cliente. |
EL usuario presiona sobre una de las flechas de dirección de la interfaz |
||||
|
|
Figura 9: Terminal de prueba dibuja segmento de línea |
|
||
Problemas y Dificultades
Encontradas
A lo largo del desarrollo del proyecto
surgieron una serie de dificultades que se debieron sortear, entre estas
podemos destacar las siguientes:
·
Java maneja las teclas presionadas como eventos independientes, esto
genera problemas en el caso en que necesitemos reconocer una combinación de
teclas. Para solucionar lo anterior se utilizaron flags que permiten
interpretar combinaciones (Estados).
·
Generar la sensación de fluidez cambiando dinámicamente la dirección
cuándo se mueve el puntero del mouse con el botón presionado. Esto se solucionó
implementando otras funciones del MouseListener como lo son aquellas que detectan si el puntero esta
fuera o dentro de la casilla del botón presionado.
·
Ya que se trabajó con envío de datos, se investigó como se crea el
datagrama en el lenguaje JAVA.
Posibles Mejoras
Con el fin de mejorar el proyecto se incluyen ciertas mejoras que se pueden
realizar a futuro:
·
Agregar un streaming de una webcam conectada al terminal e ir
constatando mediante video el movimiento logrado.
·
Graficar la trayectoria que se
ha llevado desde el origen y determinar mediante unidades físicas cuánto se ha
recorrido.
·
Que la interfaz acepte distintos tipos de control como un podrían ser
un joystick USB, alguna aplicación dentro de un teléfono móvil ó control por
voz.
Descarga de
cliente y módulo de prueba
Nota: el cliente debe
utilizar los parámetros IP:PORT = 127.0.0.1:80 para pruebas locales.