“Librería para la creación de
interfaces gráficas para el control de
sistemas empotrados y aplicación a
un brazo telemanipulado”
“Graphical interfaces library for embedded control
systems. Application to a telemanipulated arm”
Ángel Muñoz Cantera
e-mail:
[email protected]
Septiembre de 2006
Agradecimientos
El presente proyecto nunca se hubiera hecho realidad sin el apoyo de mis amigos.
Amigos que han puesto su granito de arena durante los muchos meses que ha durado
este trabajo, y en momentos en que las cosas no resultaban fáciles. Quiero agradeceros
a todos vuestra ayuda e interés. Sobre todo a Marta, por tu apoyo incondicional y por
los ánimos que siempre has sabido darme, y a Pablo, por tu optimismo y tu sentido
común. Me siento afortunado por haberos tenido ahí. También quiero dar las gracias
especialmente a Elena, quien siempre ha sido para mí la luz en el camino y, más allá de
eso, una verdadera amiga.
A mis padres.
Índice general
1. Introducción
1.1. Objetivos del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. MaRTE OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3. Partes del proyecto y estructura de la memoria . . . . . . . . . . . . . . . . .
1.4. Elementos utilizados en el desarrollo del proyecto . . . . . . . . . . . . . . . .
1.5. Nociones previas recomendadas para una mejor comprensión del proyecto . .
1.5.1. Organización de entrada/salida en la arquitectura x86 . . . . . . . . .
1.5.2. Definición y funciones de los drivers de dispositivos . . . . . . . . . . .
1.5.3. Características de los drivers en Linux y en MaRTE OS . . . . . . . .
1.5.4. Adaptación de la librería SVGALib para MaRTE OS . . . . . . . . . .
1.5.5. Formas de acceder al hardware del PC . . . . . . . . . . . . . . . . . .
2. Driver de ratón PS/2
2.3.
2.1.
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1. El IBM PS/2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.2.
Interfaz PS/2 para teclado y ratón . . . . . . . . . . . . . . . . . . . .
2.2. El controlador de teclado 8042 . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1. Registros del 8042 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.2.
Inicialización de la máquina . . . . . . . . . . . . . . . . . . . . . . . .
Interfaz estándar de ratón PS/2 . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1. Eventos, Resolución y Escalado . . . . . . . . . . . . . . . . . . . . . .
2.3.2. Paquete de datos de movimiento PS/2 estándar . . . . . . . . . . . . .
2.3.3. Modos de operación del ratón PS/2 estándar
. . . . . . . . . . . . . .
Órdenes del ratón PS/2 estándar . . . . . . . . . . . . . . . . . . . . .
2.3.4.
2.4. Características del driver de ratón . . . . . . . . . . . . . . . . . . . . . . . .
2.4.1. La cola de eventos Fifo Queue . . . . . . . . . . . . . . . . . . . . . .
2.4.2. Paquete de nivel superior PS2 Mouse . . . . . . . . . . . . . . . . . . .
2.4.3. Paquete PS2 Mouse-Functions . . . . . . . . . . . . . . . . . . . . . .
2.4.4. Extensiones del protocolo PS/2 estándar . . . . . . . . . . . . . . . . .
2.4.5. Aplicación de ejemplo de uso del driver
. . . . . . . . . . . . . . . . .
3. Driver de joystick analógico
3.1.
Introducción: El adaptador de juegos para PC.
. . . . . . . . . . . . . . . . .
3.1.1. El hardware del adaptador de juegos . . . . . . . . . . . . . . . . . . .
3.1.2. Necesidad de calibración del joystick . . . . . . . . . . . . . . . . . . .
3.1.3. Expresiones generales para la normalización . . . . . . . . . . . . . . .
III
1
1
2
2
4
5
5
5
6
9
9
11
11
11
12
13
13
14
15
15
16
16
18
18
18
20
31
33
34
36
36
37
39
39
ÍNDICE GENERAL
3.2. Características del joystick Genius F-16 . . . . . . . . . . . . . . . . . . . . .
3.3. Características del driver de joystick analógico
. . . . . . . . . . . . . . . . .
3.3.1. Cola de eventos Colas Array Simple . . . . . . . . . . . . . . . . . .
3.3.2. Paquete de nivel superior Joystick . . . . . . . . . . . . . . . . . . .
3.3.3. Paquete para joystick analógico Joystick Analog . . . . . . . . . . .
3.3.4. Métodos del joystick analógico Joystick Analog Functions . . . . .
3.3.5. Paquete con las funciones de calibración Jscal . . . . . . . . . . . . .
3.3.6. Comentarios sobre los coeficientes de corrección de los ejes . . . . . . .
3.3.7. Aplicación de ejemplo de uso del driver
. . . . . . . . . . . . . . . . .
4. Biblioteca para la representación y control de paneles de mandos
4.1.
4.2. Funcionamiento de los elementos de pantalla
Introducción: SVGALib y jerarquía de clases desarrollada . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
4.2.1. Elemento Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.2. Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.3. Luces
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.4. Botones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3. Tratamiento de la pantalla . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1. La matriz de pantalla . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.2. Dibujo del puntero en la pantalla . . . . . . . . . . . . . . . . . . . . .
4.3.3. La tarea Gestiona Pantalla . . . . . . . . . . . . . . . . . . . . . . .
5. Aplicación al panel del BTM
5.1. Primera parte: estructura del software adaptado . . . . . . . . . . . . . . . .
5.1.1. Adaptación del paquete Joystick Robot . . . . . . . . . . . . . . . .
5.1.2. Adaptación del paquete Botones . . . . . . . . . . . . . . . . . . . . .
5.1.3. Adaptación del paquete Luces . . . . . . . . . . . . . . . . . . . . . .
5.2. Segunda parte: prueba del software adaptado . . . . . . . . . . . . . . . . . .
6. Conclusiones y líneas futuras
6.1. Resumen de logros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2. Líneas futuras de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bibliografía
40
41
44
45
53
55
56
59
60
63
63
69
69
70
70
71
72
72
73
74
77
77
78
79
80
81
83
83
84
85
IV
Índice de tablas
2.1. Puertos del controlador 8042 . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Algoritmo del escalado 2:1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3. Paquete de datos de movimiento PS/2 . . . . . . . . . . . . . . . . . . . . . .
3.1. Máscaras de tipos de joystick . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
16
16
42
V
Índice de figuras
1.1. Robot BTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Panel BTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3. Esquema general de conexiones del BTM . . . . . . . . . . . . . . . . . . . . . . . . .
1.4. Arquitectura de aplicaciones MaRTE . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5. Entorno de desarrollo para MaRTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6. Estructura completa para el uso de dispositivos en MaRTE OS . . . . . . . . . . . . .
1.7. Formas de acceder al hardware en el PC . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1. Ratón PS/2 estándar de 3 botones . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Conector PS/2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.
Interfaz física PS/2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4. Código de colores para los puertos PS/2 . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5. Registros del controlador 8042 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6. Arquitectura de módulos del driver de ratón PS/2 . . . . . . . . . . . . . . . . . . . .
2.7. Arquitectura básica de funcionamiento del driver de ratón PS/2 . . . . . . . . . . . . .
2.8. Evento de ratón PS/2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.9. Uso de la máquina de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.10. Uso del objeto “Mouse” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1. Posición del joystick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Mando direccional FCS y CHF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. Puerto de entrada del adaptador de juegos . . . . . . . . . . . . . . . . . . . . . . . . .
3.4. Conexión esquemática de los potenciómetros
. . . . . . . . . . . . . . . . . . . . . . .
3.5. Señal analógica de timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6. Joystick Genius MaxFighter F-16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7. Bits del gameport para el F-16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.8. Arquitectura de módulos del driver de joystick . . . . . . . . . . . . . . . . . . . . . .
3.9. Arquitectura de funcionamiento del driver del joystick . . . . . . . . . . . . . . . . . .
3.10. Evento de joystick analógico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1. Estructura de la librería para el interfaz gráfico . . . . . . . . . . . . . . . . . . . . . .
4.2. Jerarquía de clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3. Ejemplo de Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4. Ejemplo de luz normal y seleccionada . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5. Ejemplo de botón circular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6. Matriz de pantalla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.7. Punteros normal y de selección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
Comentarios de: Librería para la creación de interfaces gráficas para el control de sistemas empotrados y aplicación a un brazo telemanipulado (0)
No hay comentarios