escuela politÉcnica nacional facultad de...
TRANSCRIPT
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA ELÉCTRICA
ANALIZADOR DE PUERTOS PARA PC's
Tesis previa la obtención del Título de Ingeniero en
Electrónica y Telecomunicaciones
IMANUEL RAFAEL JAYA DUCHE
Quito, agosto de 1998
de 'Reyeá fian. átt *K¿&&tíc&id¿a, y aw&i
¿W dc&á, de MU vida,,
fe'MC¿MQ& de
lealtad (¿tó¿cúz.
deí ^aé^tatonío- de
donde áe deá¿wiolí¿ eáte tnaí&fe, fa&i
feuttte 'J/elande *Dviecto*i de
el a&ite de
ct
a-
<$ue ¿¿ci&uw, fraáiéie ta, tenMuwtuUÁtt de ta,
me <bft&tf¿ ctettáztttetíietite, ta- <%ue cuna
e&fí&io- aguada. aw¿L*tdo- cutwficte avece& na ia,
CERTIFICACIÓN
Certifico que el presente trabajo ha sido
realizado en su totalidad por el Señor
Manuel Rafael Jaya Duche
/
Ing. Jaime Velarde
DIRECTOR DE TESIS
CONTENIDO
TABLA DE CONTENIDO
CAPITULO I: EL ANALIZADOR DE PUERTOS 1
1.1 Introducción 2
.,2 Justificación del tema 3
1.3 Objetivos que se desean conseguir 5
CAPITULO II: LAS COMPUTADORAS PERSONALES (PCs) 7
2.1 EVOLUCIÓN Y ARQUITECTURA DE LAS PCs S2.1.1 Evolución de las PCs S2.1.2 El desarrollo tecnológico 92.1.3 El microprocesador 11
2.1.3.1 Desarrollo de los microproccsadores 112.1.3.2 Los microproccsadores de la INTEL 132.1.3.3 Los microproccsndores de la MOTOROLA 22
2.1.4 Arquitectura de la PC 23
2.2 LOS PUERTOS DE E/S 252.2.1 Direcciones base de los puertos de E/S 252.2.2 Direcciones de memoria 272.2.3 Nivel de petición de interrupción (IRQ) 272.2.4 El puedo paralelo. 28
2.2.4.1 Dircccionamicnlo del puerto. 302.2.4.2 Velocidad del puerto paralelo 32
2.2.5 El puerto serie 352.2.5.1 Concctorcs del puerto serie 352.2.5.2 Direcciones que utiliza el puerto serie 362.2.5.3 Transmisión de datos por el puerto serie 452.2.5.4 Tipos de puerto serie 47
2.2.6 El puerto de juegos 522.2.6.1 Dircccionamicnlo de¡ puerto, 52
2.3 LOS BUSES DE LAS PCs 532.3.1 El bus ISA 53
2.3.1.1 El bus ISA de S bits 542.3.1.2 El bus ISA de 16 bits 57
2.3.2 El bus MCA -592.3.3 El bus EISA -. 592.3.4 Los buses locales 62
2.3.4.1 El bus Loca! de Video o Video Loca! (VLJ 622.3.4.2 El bus local PCI 64
CONTENIDO
CAPÍTULO ni: HERRAMIENTAS DE PROGRAMACIÓN 66
3.1 ENTORNO VISUAL BASIC 673.1.1 Descripción del entorno de Visual Basic— 67
3.1.1.1 Ventana Proyecto 683.1.1.2 Módulo de formularios 683.1.1.3 Módulo de clase 683.1.1.4 Módulo estándar 68
3.1.2 Terminologías de Visual Basic 683.1.3 Fundamentos de programación 72
3.1.3.1 Funcionamiento de una aplicación controlada por eventos. 723.1.3.2 Código que se ejecuta inicial mente. 723.1.3.3 Terminación de una aplicación. 73
3.1.4 Elementos del lenguaje 733.1.4.1 Constantes 733.1.4.2 Variables 733.1.4.3 Tipos de datos. 743.1.4.4 Contexto de la variable 753.1.4.5 Operadores; 75
3.2 ENTORNO VISUAL C++ 763.2.1 Descripción del enlomo de Visual C-H- 763.2.2 Fundamentos de programación 783.2.3 Elementos del lenguaje 81
3.2.3.1 Constantes 813.2.3.2 Variables 813.2.3.3 Tipos de datos y rangos 82
3.3 DLLs (DYNAM1C LINK LIBRARY) 833.3.1 Descripción délas DLLs 833.3.2 Cargando una dll S3
3.3.2.1 Carga implícita 833.3.2.2 Carga explícita 84
3.3.3 Búsqueda de un archivo DLL 853.3.4 Construcción de una DLL 85
3.3.4.1 Construcción en MASM 853.3.4.2 Construcción en Lenguaje C/C-H- 88
CAPITULO IV: DESARROLLO DEL SOFTWARE 94
4.1 DEFINICIÓN DEL PROBLEMA 95
4.2 SELECCIÓN DE LOS LENGUAJES DE PROGRAMACIÓN 97
4.3 DESARROLLO DEL PROGRAMA "ANALIZADOR DE PUERTOS" 994.3.1 Estructura del programa — 994.3.2 Programación por Formularios 102
4.3.2.1 Formulario "LECTURA DE PUERTOS" 1024.3.2.2 Formulario "ESCRITURA EN PUERTOS" 1104.3.2.3 Formulario "LECTURA DE UN PUERTO" I 124.3.2.4 Formulario "ESCRITURA EN UN PUERTO" 1 124.3.2.5 Formulario "CONTRASEÑA" 113
CONTENIDO
4.3.2.6 Formulario "SISTEMA OPERATIVO" 1144.3.2.7 Formulario "ACERCA DE" 1154.3.2.8 Formulario "PADRE (MDI)" 1164.3.2.9 Formulario de "PRESENTACIÓN" 120
4.3.3 Diagrama de bloques del funcionamiento del programa 1224.3.4 Descripción del diagrama de bloques 125
4.4 APLICACIONES DEL SOFTWARE 128
CAPITULO V: PUEBAS Y RESULTADOS 129
5.1 PRUEBAS CON EL PUERTO PARALELO LPT1 130
5.2 PRUEBAS CON LOS PUERTOS SERIALES COM1/COM2 131
5.3 PRUEBAS CON UNA TARJETA PROTOTIPO DE ADQUISICIÓN DE
DATOS 132
CONCLUSIONES Y RECOMENDACIONES 135
BIBLIOGRAFÍA 139
GLOSARIO 142
APÉNDICES 149APENCICEA: MANUAL DEL USUARIO 15ÜAPENCICEB: CÓDIGO FUENTE 159
ANEXOS 227
CAPITULO I
EL ANALIZADOR DE PUERTOS
1.1 Introducción
El Analizador de Puertos es una herramienta de software didáctica, diseñada para ser
utilizada por los estudiantes en sus respectivas prácticas referentes al tema y por personas
con conocimiento del fascinante mundo de los puertos de las PCs.
Esta herramienta fue desarrollada en Visual Basíc 4.0, por tanto, su entorno es similar al de
cualquier aplicación de Windows 95 y para una mayor rapidez en la transferencia de los
datos, este programa utiliza una DLL como una interfaz entre los puertos que están a bajo
nivel y el entorno de Visual Basíc. Además, en esta herramienta, el usuario será capaz de
analizar todo el rango de los puertos, esto es: de OOOOH hasta FFFFH, así mismo tiene la
capacidad de dar información sobre el posible controlador que se encuentra configurado al
puerto, claro está si éste existe.
Otra de las ventajas que tiene esta herramienta es ¡a de dar una actualización inmediata del
puerto que el usuario desee analizar. Así mismo, el usuario podrá elegir cualquier puerto
que sea modificable para cambiar nuevos datos y de esta forma realizar múltiples
aplicaciones desde la PC hacia el exterior y si lo prefiere también puede controlar la parte
interna de la misma PC.
Finalmente, este software puede ser instalado en cualquier PC que tenga Windows 95
siguiendo las mismas instrucciones de instalación que el resto de programas.
CAPITULO I
1.2 Justificación del tema
En esta década y a puertas del siglo XXI, las computadoras personales han experimentado
un desarrollo impresionante en lo referente a las velocidades con que estas se desenvuelven
y a la capacidad de memoria que alcanzan. Así mismo junto con ellas, las empresas
diseñadoras de paquetes de software ponen a disposición de los usuarios variadas
herramientas computacionales, acorde con sus respectivas necesidades, y por su puesto,
porque representan un gran rédito económico para las mencionadas empresas.
No obstante se necesitan herramientas de software especificas para algún campo o área de
trabajo en particular, es decir, que sirven para ser aplicadas en áreas estratégicas de trabajo.
Este es el caso de la materia Interfaces para Microcomputadoras y otras similares que se
dicta en la facultad de Ingeniería Eléctrica, donde el tema concerniente al estudio de los
puertos de las PCs se ha venido realizando desde un punto de vista teórico y a la
imaginación de los estudiantes.
Así mismo cuando un estudiante realiza un proyecto sobre adquisición y/o envió de datos
mediante alguna tarjeta prototipo, necesariamente tiene que realizar junto con ella un
programa de software para el análisis de la transferencia de datos, dicho de otra forma, el
diseñador tiene que realizar un doble trabajo para determinar si su tarjeta prototipo funciona
o tiene algunas fallas en su diseño. Esta doble labor consistiría en realizar el diseño y
construcción, de la tarjeta prototipo y a parte de eso, también tendría que realizar el
CAPITULO 1
programa que analice la transferencia de datos entre la tarjeta prototipo y algún puerto de la
PC.
Por otro lado existen programas que sirven para revisar la conexión de dispositivos
externos a sus respectivos puertos, pero estos o son muy generales o sirven para el análisis
de algunos puertos específicos. Algunas aplicaciones a más de dar un diagnostico breve de
los puertos también dan un reporte de los diferentes niveles de interrupción (IRQs), así se
tiene al MSD (Microsoft Diagnostic) que funciona bajo MSDOS, el mismo que realiza todo
lo escrito en las líneas anteriores.
Bajo el sistema operativo de Windows, se tiene al Administrador de Dispositivos, el
mismo que en una de las opciones Entrada/Salida brinda información sobre las
direcciones de los puertos de la PC y el nombre de los diferentes dispositivos que están
configurados a dichos puertos, pero no da información sobre que está sucediendo en alguno
de estos puertos, es decir, solo da una información muy general.
Por último, en la actualidad la mayoría de los paquetes que funcionan bajo Windows 95,
son óptimas en cualquier tipo de labor que realicen, a pesar de que Windows 95 es a veces
inestable e irregular.
En virtud de todas las necesidades planteadas, se ha visto factible y necesario realizar como
tema de tesis, un programa didáctico denominado "Analizador de Puertos pnra PCs", el
mismo que tendrá las características de las aplicaciones sobre puertos existentes y al mismo
CAPITULO I
tiempo, tratará de cubrir los puntos fallantes por parte de otras aplicaciones, pues para ello
en la actualidad se disponen de lenguajes poderosos de programación en lo referente a
funciones e interfaces gráficas amigables al usuario.
Finalmente esta herramienta será utilizada por los estudiantes en sus respectivos
laboratorios y por personas que conocen del tema y desean profundizar e investigar más el
mundo de los Puertos.
1.3 Objetivos que se desean conseguir
Una vez mencionado los justificativos tratados en el punto anterior y tomando como base
aplicaciones existentes sobre puertos, se pretende alcanzar mejoras significativas a dichas
aplicaciones, es por ello que en este punto se mencionan los objetivos que se pretenden
alcanzar en el presente tema. Así se tiene:
> Desarrollar un software como herramienta didáctica de fácil manejo por parte del
usuario, Este programa mostrará las diferentes actividades que están realizándose
internamente en los puertos, así mismo, se podrá manipular directamente sobre ellos.
Además mostrará información de los puertos en el instante mismo que esté realizando
el análisis.
> La herramienta deberá desarrollarse para que funcione en el entorno de Windows 95 o
sistemas operativos superiores.
CAPÍTULO II
LAS COMPUTADORAS PERSONALES (PCs)
En este Capítulo se estudia a las computadoras personales también denominados como PCs,
abreviación que será utilizada en algunos de los pasajes de este capítulo. Se dará una
descripción de su evolución, arquitectura y por su puesto, el tema que tiene relación con el
presente tema de tesis, es decir, Los Puertos de E/S, es así como se mencionará a los
puertos más utilizados y por medio de que dispositivos están conectados al mundo exterior.
Este Capítulo finaliza con una descripción de Los buses de las PCs.
2.1 EVOLUCIÓN Y ARQUITECTURA DE LAS PCs
2.1.1 Evolución de las PCs
Antes de la aparición de las computadoras, la humanidad ha tenido que utilizar una serie de
inventos, los cuales progresivamente fueron evolucionando hasta que aparecieron
elementos electrónicos que dieron un enorme impulso para la evolución de las PCs. A
continuación en la Tabla 2.1, se da una breve cronología y descripción de los diferentes
inventos que han surgido al paso de la historia:
CAPÍTULO II
ANO INVENTO DESCRIPCIÓN
1000 a.C. El abacoDesarrollado por la civilización China. Calcula yalmacena números mediante piezas móviles.
Inventada por Blais Pascal, fue la primera sumadoramecánica1642 Lapascalina
167] CalculadoraConstruida por Jacob Leibnitz. Esta calculadoramecánica era capaz de multiplicar y dividir.
1822 Máquinadiferencial
Charles Babbage produjo una calculadora mecánica quepodía calcular logaritmos hasta con veinte decimales.
1834 Maquinaanalítica
También disenada por Babbage, aunque nunca fueconstruida, las ideas con ias que fue diseñada son elfundamento de las computadoras modernas.
1890 Calculadoras contarjetas
perforadas
Hermán Hollerith construyó estas máquinas parautilizarlas en los censos de los EstadosUnidos.
1944 MARX!Disenado por Howward Áiken, es considerada laprimeracomputadora, aunque fue construido con relés.
1946 EN1ACSe pone en marcha la primera computadora electrónica,construida con 18000 tubos de vacío y diseñada porEckert y Mauchly de la Universidad de Pennsylvania.
947 EDSACSe pone en marcha la primera computadora programableen la Universidad de Cambridge. Esta estaba construidabajo los conceptos de John Yon Neuman.
Tal) I a 2.1 Evolución de la PCs
2.1.2 El desarrollo tecnológico
E! desarrollo tecnológico de los dispositivos electrónicos, ha impulsado el rápido
crecimiento de las computadoras. Así mismo, estos dispositivos aparecieron y siguen
CAPITULO TI
surgiendo según las necesidades de la época, es así como se los ha dividido por
generaciones de acuerdo al orden de aparición en el devenir de la historia.
En la Tabla 2.2, se da una breve descripción de dichas generaciones.
GENERACIÓN DESCRIPCIÓN
Primera GeneraciónEstas computadoras eran lentas y de poca memoriainterna, utilizaban la cinta magnética para elalmacenamiento en masa, eran construidas basándose entubos de vacío. Ejemplos de estos son el UNIVAC 1, deSperry Rand y las series 600 y 700 de IBM.
Segunda Generación
Estas computadoras fueron construidas gracias a lainvención de los transistores. Se usa por primera vez loscanales, la multiprogramación y el tiempo compartido.Aparecen los lenguajes de alto nivel. Ej: las series 1400 y1700 de IBM, el 1107 de Sperry Rand y el 3600 de CDC.
Tercera GeneraciónEstas computadoras fueron construidas en base acircuitos integrados LSI (de alta escala de integración)Ej: Las AppIe-I y TI, la IBM XT.
Cuarta Generación
Estas computadoras fueron construidas basándose encircuitos integrados VLSJ (de muy alta escala deintegración). Ej. Las computadoras actuales compatiblescon TBM y Macintosh.
Quinta GeneraciónEn la actualidad algunos países desarrollados, seencuentran trabajando en desarrollos tecnológicos talescomo: la inteligencia Artificial, redes neuronales, etc.
Tabla 2.2 Generaciones
10
CAPITULO n
2.1.3 El microprocesador
Se llama a este dispositivo como el cerebro de la computadora, pues es el encargado de
administrar y ejecutar tareas complejas. Frecuentemente suele denominarse a este elemento
como la CPU, nombre que es inapropiado, porque el microprocesador es parte de la CPU.
No obstante para nuestro estudio vamos a usarlo como sinónimos. En la historia dos
empresas; INTEL y MOTOROLA han estado siempre a la cabeza en lo que se refiere al
desarrollo y construcción de los microprocesadores, es así como en las siguientes tablas se
da una breve cronología, descripción y principales características de los diferentes
microprocesadores que estas dos empresas han desarrollado o se encuentran desarrollando
en la actualidad. Esto servirá como referencia para el análisis de algunas semejanzas y
diferencias que pudieran existir.
2.1.3.1 Desarrollo de los microprocesadores
ANO1971
1971
1974
1974
1975
1975
MTCROPROC4004
8008
8080
6800
SOS5
Z80
DESCRIPCIÓNPrimer microprocesador de INTEL. Maneja datoscuatro bits.
de
Primer microprocesador de ocho bits de INTEL.
Microprocesador de ocho bits de INTEL. Es una mejoradel 8008.
Primer microprocesador de ocho bitsMOTOROLA.
de
Microprocesador de ocho bits de INTEL. Es una mejoradel SOSO.
Microprocesador de ocho bits de Zilog. Esmejora del 8080.
una
11
CAPITULO II
ANO1975
1977
1979
1982
1984
1985
1989
J990
1993
1994
1997
MICROPROC6502
S086-80S8
68000
80286
68020
80386
80486
68040
PENTIUM
PowerPC
PENTIUMMMX
DESCRIPCIÓNMicroprocesador de ocho bits de MOS Technology. Fueutilizado en computadoras como las Apple I y II, yCommodore 16 y 64.
Primer microprocesador de 16 bits de INTEL. Fueronutilizados por la IBM en los primeros PC XT.
Primer microprocesador de 16 bits de Motorola. Fueutilizado por la Apple en los primeras Macintosh.
Microprocesador de 16 bits de INTEL. Escompatible con el 8086. Fue utilizado por la IBM en losprimeros PC AT.Primer microprocesador de 32 bits de Motorola. Escompatible con el 68000, es utilizado por la Apple en lasegunda generación de las Macintosh.
Primer microprocesador de 32 bits de INTEL Escompatible son sus antecesores. Es utilizado por la IBM ycompatibles.
Microprocesador de 32 bits de INTEL. Es compatible consus antecesores. Actualmente es utilizado por la IBM ycompatibles.
Microprocesador de 32 bits de Motorola. Internamentecontiene un 68020 y un procesador matemático.
Primer microprocesador de 64 bits de INTEL.
Primer microprocesador RISC de la alianza Motorola,Apple e IBM.
Intel lanzó las instrucciones MMX3 la primer granmejora a gran escala de] conjunto de instrucciones desdeel 386. Estas instrucciones mejoran el desempeño demultimedia.
Tabla 2.3 Evolución tic los- microprncc.SiulQrcx
12
CAPÍTULO II
En la actualidad, el futuro de estandarización se compite entre las máquinas que utilizan
microprocesadores CISC (Complete Instruction Source Code), tales como los ya
mencionados 286, 386, 486 y PENTIUM; o los que utilizan microprocesadores RISC
(Reduced Instruction Source Code), tales como los PowerPC de MOTOROLA.
Por la gran difusión que han dado al desarrollo de los microprocesadores las dos empresas
más importantes, a continuación se tiene un pequeño resumen así como sus características
más importantes de los diferentes microprocesadores tanto de INTEL como de
MOTOROLA.
2.1.3.2 Los microprocesadores de la INTEL
MODELO
80S68028680386 DX80386 SX80486 DX80486PentiumPentiumMMX
ANO DEPRESENT
19781982198519881989199119931997
CAPACIDAD DEBUS DE DATOS
16 bits16 bits32 bits16 bits
32 bits32 bits64 bits64 bits
TAMAÑO DEPALABRA
1 6 bits16 bits32 bits32 bits32 bits32 bits32 bits32 bits
MEMORIADIRECCIÓN AB LE
1 MB1 6 MB4GB4GB4GB4GB4GB4GB
Tabla 2.4 Los_m.icroprocesadores de lij íntcl
13
CAPÍTULO TI
CARACTERÍSTICAS :
El 8086
Es el primero microprocesador importante de la familia 80X86, es un procesador de 16 bits,
es decir, procesa dos bytes a ¡a vez. Otros microprocesadores creados por INTEL antes del
8086 son: 4004, SOOS, 8080, 8085
El 8088
Era casi igual al SOS6, con la excepción que tenía un bus de datos externo de 8 bits en lugar
de 16 bits.
El 80286
El 80286 conocido como 286, era igual que el 8086, en cuanto al bus de datos y tamaño de
palabra, la diferencia es que era más rápido y ofrecía nuevas e importantes opciones.
La primera opción fue el incremento de la cantidad de memoria a la que se podría accesar.
Otra nueva opción iue la memoria virtual que le permite al 286 accesar un medio de
almacenamiento como un disco duro y manejarlo con una memoria interna.
El 80386
En 1985 INTEL presentó el 80386 o 386 que es un procesador de 32 bits ya que manipula
datos internos con palabras de 32 bits y accesa aproximadamente a 4GB de memoria.
14
CAPITULO ff
Además tiene un nuevo modo de operación llamado modo virtual 86, con el cual puede
simular hasta 17 microprocesadores 8086. Esto permite a los sistemas correr varios
programas de DOS al mismo tiempo.
En 1986 INTEL creó una versión especial de 386 llamado 386 SX, que es igual al 386
común con la excepción de que tiene un bus de datos de 16 bits en lugar de 32 bits.
El 80486
No ofrece nuevos cambios, sin embargo combina en un solo chip varias funciones que se
llevaba a cabo en múltiples chips comunicados a través del bus.
El 486 combina en un solo chip:
> Un procesador 386 DX
> Un coprocesador matemático 387
> Y un controlador de memoria caché.
Esta combinación aumenta la velocidad del procesador. Además el 486 SX es idéntico al
486 DX con la excepción de que su coprocesador está inhabilitado. Un dato poco conocido
e interesante es que un coprocesador matemático 487 SX es en realidad un 486 DX con
todas sus funciones.
CAPITULO TJ
PENTIUM
Es miembro más poderoso de los microprocesadores de INTEL. Con el Pentium, INTEL
rompió la tradición de los nombres numéricos de sus modelos, en parte para evitar que
otros fabricantes usen dichos nombres en sus productos (chips). La velocidad y poder del
Pentium sobresale del de sus predecesores; mientras que e! 80486 tiene aproximadamente
1,2 millones de transistores el Pentium tiene más de 3 millones y puede procesar más de
100 millones de instrucciones por segundo. Además el Pentium corre programas de
aplicación aproximadamente 5 veces más rápido que un 80486 DX.
El procesador Pentium es fabricado usando una avanzada tecnología en el proceso de
fabricación de semiconductores caracterizada por tener menos de una miera (una
millonésima de metro) de tamaño. Los procesadores Pentium a 75iVlHz, 90MHz, lOOMHz,
y ]20MHz están implementados utilizando tecnología de 3.3V, 0.6 mieras, y los
procesadores Pentium a 120MHz, 133MHz, 150MHz, 166MHz, y 200MHz lo son en
tecnología de 3.3V, 0.35 mieras.
PENTIUM PRO
La familia de procesadores Pentium® Pro es la siguiente generación de Intel para equipos
de sobremesa de altas prestaciones, estaciones de trabajo y servidores. La familia consta de
procesadores a 150, 166, ISO y 200 Mhz y es fácilmente arnpliable hasta 4 procesadores en
un sistema multiprocesador. El procesador Pentium® Pro consigue un nivel de rendimiento
superior a los procesadores de la generación anterior gracias a una innovación llamada
16
CAPITULO II
Ejecución Dinámica que constituye el paso siguiente después de la arquitectura super
escalar implementada en el procesador Pentium. Esta tecnología permite las avanzadas
funciones de visualización e interacción que se precisan tanto en las actuales aplicaciones
comerciales y técnicas de alto nivel como en las que surgirán en el futuro. El procesador
Pentium® Pro incluye también funciones avanzadas de integridad de datos, fiabilidad y
capacidad de servicio para aplicaciones criticas.
Con 5,5 millones de transistores, la familia de procesadores Pentium® Pro está basada en
procesos avanzados de Intel BiCMOS de 0.6 y 0,35 mieras. Este proceso utiliza transistores
bipolares para aumentar la velocidad y transistores CMOS para conseguir bajo consumo y
alta densidad.
> Principales características:
> Disponible en velocidades de 150MHz, l66MHz, ISOMHzy 200MH
^ Compatibilidad binaria con aplicaciones que se ejecutan en miembros anteriores de la
familia de microprocesadores Intel
> Optimizado para aplicaciones de 32-bits que se ejecutan sobre sistemas operativos
avanzados de 32-bits
> Microarquitectura de Ejecución Dinámica
> Un único encapsulado incluye la CPU del procesador Pentium® Pro, la memoria caché
y la interfaz del bus del sistema
> AmpÜable hasta 4 procesadores y 4 GB de memoria
r- Bus del sistema externo dedicado independiente, y bus de la caché interno dedicado a
alta velocidad
17
CAPÍTULO II
> Memorias caché de 8K/8K independientes para datos e instrucciones, sin bloqueo,
memoria caché de nivel-1
> Memoria caché integrada de 256 KB, 512 KB ó 1MB, incluida en el encapsulado, no
bloqueada, nivel-2
> Características de integridad y fiabilídad de datos que incluyen ECC,
análisis/recuperación de fallos y comprobación de redundancia funcional
> Actualizable a un futuro procesador OverDrive®
La mejora de rendimiento de la familia de procesadores Pentium® Pro frente a las
anteriores arquitecturas de Intel se debe principalmente a la Ejecución Dinámica que
comprende las siguientes innovaciones tecnológicas:
> Predicción de bifurcaciones múltiples: predice el flujo del programa a través de varias
bifurcaciones
> Análisis del flujo de datos: planifica las instrucciones para que se ejecuten cuando estén
listas, independientemente del orden del programa original
^- Ejecución especulativa: aumenta la velocidad de ejecución mirando más allá de lo
marcado por el contador del programa y ejecutando instrucciones que probablemente se
necesitarán
> Otras características significativas del procesador Pentium® Pro que le hacen estar por
delante de los procesadores existentes son;
V Memoria caché de 256 Kb ó 512 Kb sin bloqueo de nivel dos, lo que mejora el
rendimiento reduciendo el tiempo promedio de acceso a memoria y proporcionando un
CAPITULO II
rápido acceso a las instrucciones y datos utilizados recientemente. La velocidad de esta
caché está mejorada mediante un bus de datos interno de 64 bits, que funciona a la
velocidad máxima del núcleo de la CPU
> Una unidad de coma flotante (FPU) con pipelíne para admitir los formatos de 32 y 64
bits especificados en la norma 754 del TEEE, así como un formato de 80 bits. Esta
unidad es capaz de ejecutar más de 200 millones de instrucciones de coma flotante por
segundo (MFLOPS) a 200 MHz. La FPU es compatible a nivel de código objeto con las
FPU.de los procesadores Pentium e InteI486.
5^ Capacidad de utilizar uno o dos pares de procesadores Pentium® Pro para la
comprobación de redundancia funcional (FRC)
5- El bus GTL+ admite de forma "inmediata" hasta 4 procesadores, lo que permite el
multiproceso simétrico de 4 vías y bajo coste, proporcionando de ese modo un aumento
de rendimiento significativo para las aplicaciones de varias líneas de ejecución
> Los cambios en el voltaje de la CPU producen un impacto mínimo en el diseño del
sistema gracias a un paradigma de tensión de alimentación mejorada.
^ La protección por pandad de las señales del bus (direcciones, petición y respuesta) con
mecanismo de reintento permite asegurar la integridad y fiabil idad de los datos del
Sistema
> ECC (Error Checking and Correction) de comprobación y corrección de errores, que
permite corregir errores de un solo bit y detectar errores de dos bits en el bus de datos
E! procesador Pentium® Pro incluye también varias funciones utilizadas para
verificaciones y supervisión del funcionamiento. Entre ellas se incluyen:
l'J
CAPÍTULO II
Comprobación automática incorporada (BLST) que proporciona cobertura simple frente
a fallos del microcódigo y PLA grandes, así como comprobación de la memoria caché
de instrucciones, la memoria caché de datos, los buffers Translation Lookaside (TBL) y
la ROM Mecanismo de arquitectura Standard Test Access Port and Boundary Sean
IEEE 1149.1, que permite la verificación del procesador Pentium® Pro mediante una
interfaz estándar.
Contadores de rendimiento internos para supervisión del funcionamiento y recuento de
sucesos
PENTIUM MMX
El procesador Pentium© con tecnología MMX1M es la más reciente incorporación a la
familia de procesadores Pentium® ,. ofrece mejoras de micro-arquítectura sobre los
miembros anteriores de esta familia. Sus principales características son;
V Soporte total de la tecnología MMX de Intel. La tecnología MMX de Intel está basada
en la técnica SIMD una única instrucción, múltiples datos que permite un incremento
de rendimiento en una amplia gama de aplicaciones multimedia y de comunicaciones.
Cincuenta y siete nuevas instrucciones, así como también nuevos tipos de
empaquetamiento de datos son soportados por el procesador Pentium con tecnología
MMX. Todos los sistemas operativos y aplicaciones software existente son totalmente
compatibles con el procesador Pentium con tecnología MMX
20
CAPITULO II
> Doble caché para código y datos de 16K cada uno. Las memorias caches nivel-1 de
código y datos han sido duplicadas a 16 KB en el procesador Pentium© con tecnología
MMX. Las memorias Caches internas con separación más grandes, mejoran el
rendimiento al reducir el tiempo de acceso medio a memoria, y permiten un acceso
rápido a las instrucciones y datos más recientemente utilizadas. Se puede acceder a las
memorias caches de instrucciones y datos de forma simultánea mientras la caché dual
soporta dos referencias de datos simultáneamente. La caché de datos soporta una
técnica de retro-escritura (sobre una base de línea a línea) para actualizaciones de
memoria.
> Predicción de bifurcación mejorada. La predicción dinámica de bifurcación usa el
Branch Target Buffer (BTB) para aumentar el rendimiento al predecir el juego de
intrucciones a ejecutar. El BTB ha sido mejorado en el procesador Pentium® con
tecnología MMX para aumentar su exactitud.
> Pipeline mejorado. Para aumentar el rendimiento se ha añadido un adicional pipeline.
> Buffers de escritura más profundos. Un juego de cuatro buffers de escritura es ahora
compartido entre los dos pipelines para mejorar el rendimiento de escritura a memoria.
CELERON
El procesador Intel Celeron™ está diseñado para equipos de sobremesa de bajo coste, o
"PC Básico", y es compatible con los procesadores anteriores de la arquitectura Intel.
El procesador Intel Celeron™ da un buen rendimiento en aplicaciones que corren en
sistemas operativos tales como Windows * 95, Windows NT * y UNIX *. Esto se ha
CAPÍTULO II
logrado integrando los mejores atributos de los procesadores Intel - el rendimiento de la
ejecución dinámica del procesador Pentium II más las características de la tecnología
MMX™ - dando como resultado un nivel base de rendimiento para el comprador de PC
Básico.
El procesador Intel Celeron™ permite un coste eficaz para el PC Básico proporcionando un
nivel base de funcionalidad. Además, el procesador Celeron™ ofrece un rendimiento
particularmente bueno en las pruebas de coma flotante y multimedia.
2.1.3.3 Los microprocesadores de la MOTOROLA
MODELO
68000680206803068040
ANO DEPRESENT
1979198419871990
CAPACIDAD DEBUS DE DATOS
16 bits32 bits32 bits32 bits
TAMAÑO DEPALABRA
32 bits32 bits32 bits32 bits
MEMORIAD1RECC10NABLE
16MB4MB4GB4GB
Tabla 2.5 Los microprocesadores tic la Motorola
Este grupo de microprocesadores es conocido como la fami l ia 680X0.
El 68000 tenía un diseño interno que usaba palabras de 32 bits. Los procesadores de Intel
no lo hacían hasta que se introdujo el 80386.
Funcionalmente el 6SOOO y el 68010 fueron más o menos equiparables al 8086 y al 8088 de
Intel. En función de capacidad y velocidad, el 68020 es más o menos equiparable al 80286,
y el 6S030 y 68040 se puede comparar al 80386 y 80486 respectivamente.
22
CAPITULO TI
2.1.4 Arquitectura de la PC
Cuando hablamos de arquitectura de las PCs, no debemos limitarnos a una sola
arquitectura, sino más bien debemos tener en cuenta que éstas también han ido
evolucionando con el paso de la historia. Estas arquitecturas también dependen la empresa
que los diseña, es así que tomaremos como ejemplo a las arquitecturas diseñadas por la
IBM.
Empezando desde la PC Original, éstas han ido evolucionando hasta la actualidad que se
habla de poderosas computadoras con un sin número de aplicaciones. Luego de la PC
original apareció la PC XT (Extended Technology) que era una mejora de la PC original,
posteriormente apareció la PC AT (Advanced Technology) cuya introducción, marcó el uso
de una nueva generación de procesadores de la INTEL empezando con las 802S6, a partir
de estas tres tipos de arquitecturas posteriormente aparecieron gran cantidad de
arquitecturas hasta donde conocemos en la actualidad y los que nos faltan por conocer.
A continuación en Figura 1.1, se muestra la arquitectura básica de la PC XT.
23
CAPITULO II
Conlrul
XTAL
M.31818 MILt.
1.1 Arquitectura de la PC
24
CAPÍTULO TI
2.2LOS PUERTOS DE E/S
Un puerto es un dispositivo (denominado también registro) que conecta a un
microprocesador con el mundo exterior. El microprocesador recibe la información
contenida en el puerto de entrada a través del bus de datos interno para procesarla, así
mismo, éste deposita la información en el puerto de salida para que por medio de una
interfaz salga dicha información ai mundo exterior. Los puertos son identificados por sus
direcciones en el intervalo de OOOOH - 03FFH o 1024 puertos en total, no obstante las PCs
actuales ocupan los puertos desde la dirección 03FFH hasta FFFFH para los nuevos
dispositivos, y tanto sus direcciones como sus contenidos están generalmente en formato
hexadecimal. Se debe tomar en cuenta que las direcciones de los puertos son distintas a las
direcciones convencionales de memoria. Es así como existen direcciones base de puertos y
direcciones de memoria los mismos que serán mostrados más adelante.
2.2.1 Direcciones base de los puertos de E/S
La dirección base del puerto de E/S (Entrada/Salida) especifica un canal a través del cual se
transfiere la información entre los dispositivos externos (Ej. La impresora) y el
microprocesador. Para la CPU el puerto aparece como una dirección.
Como se observó anteriormente las direcciones de los puertos van de OOOOH - 03FFH, los
mismos que pueden ser divididos en dos bloques: un primer bloque de 512 puertos que van
de OOOOH - 01FFH, es utilizado por la tarjeta principal de la PC, el segundo bloque de 512
puertos que va de 0200H - 03FFH, es utilizado o está disponible para la conexión de
tarjetas y las ranuras de expansión. Existe también un tercer bloque con 64512 puertos que
va de 0400H - FFFFH, el mismo que en las PCs actuales es uti l izado por dispositivos
CAPITULO II
desconocidos o propios del sistema. Todos estos bloques y direcciones se detallan en la
Tabla 2.6, donde también se muestran algunos tipos de puertos de E/S.
Dirección delpuerto0000^ 001F0020 -> 003 F0040 -^ 005F0060 -> 007F
0080 -> 009FOOAO -> OOBFOOCO -^ 01FF020002010202 -> 02770278 -> 027F
0280 -> 02F702F8 -> 02FF0300 -$ 0377
0378 -> 037F
0380 -> 03AF03BO -> 03BF
03CO -> 03CF03DO -> 03DF
03EO -> 03EF03FO -> 03F703FS -> 03FF0400 -^ FFFF
No depuertos
32323232
3232320
11
1188
120S
120
8
4816
1616
1688
64512
Direcciónutilizada0000^ 00 1F0020 -> 00210040 -^ 0043006000610080 -> 0083OOAOOOCO •> 01FF020002010230 -> 023F027S -> 027A
02ES -> 02EE02FS -> 02FE0300->031F0320 -> 032F
0330 -> 033F0378 -> 037A
03 80^ 03 AF03BC 03BE
03CO -> 03CF03DO -> 03DF
OSES -^ 03EF03FO ^> 03F703F8 -> 03FE0400 -> FFFF
Dispositivo
Controlador de DMAControlador de interrupcionesTimer/contadorTecladoBocinaRegistros de pagina DMABit mascara DMANo usadoNo usadoPuerto de juegosMouse (ratón)LPT2 (LPT3 en las computadoras deltipo MCA)COM4COM2Usado para tarjetas prototipoControladores de disco duro (sólo en elmodelo PS/2 30)Controladores SCSILPT1 (LPT2 en las computadoras deltipo MCA)No usadoLPT1 (sólo en las computadoras del tipoMCA)Controlador EGA/VGACGA (también EGA/VGA en los modosde vídeo de color)COM3Controlador de unidad de disquetes.COMÍUsado por dispositivos desconocidos
Tabla 2.6 Direcciones base de los puertos
26
CAPÍTULO TT
2.2.2 Direcciones de memoria
La dirección base de memoria se define como la dirección de memoria de la computadora
que utilizará un determinado dispositivo (tarjeta) para intercambiar información. En la
Tabla 2.7, se muestra algunas áreas de la memoria así como el segmento donde se
encuentran. Las direcciones de los segmentos están en formato Hexadecimal.
Segmento0000 -> 003F0040 -^ 004F0050 -> ...
AOOO -> AFFFBOOO -> B7FFBSOO -> BFFFCOOO -» DFFFEOOO -> FFFF
DescripciónTabla de vectores de interrupciónÁrea de datos del BIOSÁrea de datos del DOS/BIOSExtensiones del DOS ai BIOS (IO.SYS)Área del DOS KERNEL (MSDOS.SYS)Área del buffer de directoriosÁrea del buffer del discoBloque de parámetros del Drive •Área para instalación de DriversPorción residente del COMMAND.COMMemoria residente de programas (TSRs)Área de carga y ejecución de programasPorción transitoria de COMMAND.COMBufTer de Vídeo (modos gráficos: ODh - 13h)Buffer de Vídeo (monocromático: modo texto 7)Buffer de Vídeo (color: modos 0 -6 )Área de la ROM, páginas de la memoria de expandidaROM BIOS
Tabla 2.7 Direcciones de la memoria
2.2.3 Nivel de petición de interrupción (IRQ)
Cuando un dispositivo (tarjeta) envía una petición al microprocesador de la PC, ut i l iza una
señal electrónica denominada interrupción. Cada dispositivo de su sistema debe uti l izar un
27
CAPITULO TI
nivel de petición de interrupción (IRQ) diferente, que se especifica durante la
configuración del dispositivo.
En la Tabla 2.8, se muestra los niveles de interrupción, donde si la sentencia es
"Disponible" se podría utilizar habitualmente para conectar cualquier dispositivo que el
usuario desee a menos que se diga lo contrarío (Ej. Tarjeta de Red).
ÍRQs9
3
45
6789101112131415
SentenciaNo utilizarNo utilizar
No utilizarDisponible
No utilizarNo utilizarNo utilizarNo utilizarDisponibleDisponibleDisponibleNo utilizarNo utilizarDisponible
Computadora con procesador 386SX (ó superior)Reservado para el adaptador EGA/VGAReservado para COM2 o COM4, a no ser que sólo haya unpuerto serie instalado; utilizado a veces por el Mouse.Reservado para COMÍ o COM3.Excepto si se utiliza para un segundo puerto paralelo [LPT2]o el Mouse.Reservado para controlador de unidad de disquete.Reservado para el puerto paralelo [LPT1].Reservado para el reloj en tiempo real.Reservado para el adaptador EGA/VGA
Salvo que se utilice para el controlador SCSI.Salvo que se utilice para un Mouse del tipo PS/2.Reservado para ej'toprocesador matemático.Reservado papa^el controlador de disco duro.
Niveles' de Interrupción
2.2.4 El puerto paralelo.
El puerto paralelo es un estándar diseñado para conectar una impresora al PC. Es utilizado
por la CPU para enviar datos a la impresora. Esta interfaz gobierna las señales de entrada y
salida. La uti l idad de estas señales es dejar que la computadora conozca el estado de la
CAPITULO TT
impresora para de esta forma controlar este dispositivo. Ocho bits de datos contienen toda
la información enviada con cada flanco de reloj.
El hardware de este puerto consiste en 8 bits de salida de datos, 5 bits de entradas de
control y 5 bits de salidas de control. Las señales de control se describen a continuación:
Salidas:
STROBE: Comunica a la impresora que los ocho bits de datos están disponibles para ser
leídos. Conmuta a un nivel lógico bajo cuando los datos están preparados.
INTT: Inicializa la impresora.
SLCT IN: Selecciona la impresora cuando cambia a un nivel lógico bajo.
AUTO FD: Comunica a la impresora que imprima una línea en blanco seguida por un
retroceso del carro.
DO-D7: Bits de datos.
Entradas:
ACK: Informa a la CPU que los datos han sido recibidos correctamente.
BUSY: La impresora pone esta linea a nivel uno lógico cuando el buffer de memoria esta
lleno. La computadora dejará de enviar más datos.
SLCT: Indica a la computadora que se dispone de una impresora.
ERROR: Dice a la computadora que se ha producido un error. La CPU deja de enviar más
datos.
PE: Indica que el papel se ha terminado.
Todas estas señales están conectadas a un conector hembra de 25 pines. Y responden a
niveles lógicos TTL.
29
CAPITULO n
2.2.4.1 Direccionamiento del puerto.
E! sistema operativo MS-DOS soporta tres puertos paralelos llamados LPT I, LPT2 y
LPT3. Por lo tanto, se encuentra tres juegos de direcciones dedicadas a estos puertos en el
mapa de entradas/salidas como se muestra en la Tabla 2.9.
Direcciones de las LPTsPUERTO
LPT1LPT2
LPT1/LPT3
DATO I ESTADO378H278H3BCH
379H279H3BDH
CONTROL37AH27AH3BEH
Tabla 2.9 Direcciones de los puertos paralelos
Como el resto de puertos paralelos son análogos, se estudiará solamente las direcciones
dedicadas a LPT1 (Line Priníer 1). Cada puerto paralelo utiliza tres direcciones del mapa de
entradas/salidas de la computadora. ParaLPTl estas direcciones son 37SH, 379H y 37AH.
Puerto 378H: En esta dirección la CPU escribe los datos que serán enviados a la
impresora. Es un puerto de salida. En la Tabla 2.10 se pueden ver que pines del conector
de salida se utilizan.
30
CAPITULO íf
Tabla de bits de datosBIT JF UNCIÓNDODID2D3D4D5D6D7
DatoODato ]Dato 2Dato 3Dato 4Dato 5Dato 6
L Dato?
PIN23456789
Tabla 2.10 Bít.s de datos
Puerto 379H: Este es un puerto de entrada. A través de este puerto la CPU puede conocer
el estado de la impresora. La correspondencia entre pines y señales esta listada en la Tabla
2.11.
Tabla de bits de estadoBITDODID2D3D4D5D6D7
FUNCIONJI PINno conectadono conectadono conectadoERRORSLCTPEACKBUSY
1517121011
Tabla 2.11 Bits de estado
Puerto 37AH: En esta dirección la computadora escribe las señales que controlan a la
impresora. Es un puerto de salidas, Tabla 2.12.
31
CAPITULO II
Tabla de bits de controlBITDODID2D3D4D5D6D7
FUNCIÓN 1 PINSTROBE
AUTO FDINIT
SLCTINHabilitación IRQ7
no conectadono conectadono conectado
1141617
Tabla 2.12 Bits de datos
Como se puede observar en la Tabla 2.12, el puerto paralelo es capaz de controlar el canal
de interrupción IRQ7. Esta es una capacidad muy potente del puerto paralelo.
2.2.4.2 Velocidad del puerto paralelo
La velocidad depende de la velocidad de !a computadora y del software que lo administra,
que a su vez depende del lenguaje de programación y del programa en el cual está
utilizando. Como una regla muy general, es posible lograr tasas de transferencia de 40 - 80
Kbps en computadoras rápidas y de 10 -15 Kbps en máquinas de 8 MHz. Algunos
diseñadores de puertos más recientes, incluyen el mejorado puerto paralelo en el chip set
SL de Intel, y los puertos del nuevo estándar 1284 de IEEE, puede transferir datos a 1
Mbps. A continuación se muestra la mencionada Norma.
CAPÍTULO rr
Norma IEEE 1284
La reciente norma; "IEEE Std. 1284-1994 Standard Signaling Method for a Bi-directional
Parallel Peripheral Interface for Personal Computers", supone tal avance para el puerto
paralelo como el Pentium frente 286. Esta norma provee una alta velocidad de
comunicación bi-direccional entre el ordenador y el periférico externo lo que hace la
comunicación de 50 a 100 veces más rápido que el puerto paralelo original. A parte del
incremento de velocidad la gran ventaja es que la compatibilidad con todos los periféricos
existentes que puedan usar el puerto paralelo.
La norma 1284 define 5 modos de transmisión de datos. Cada tipo provee un método de
transmisión de datos ya sea la dirección ordenador - periférico, la inversa (Periférico -
Computadora) o bi-direccional. Los modos son:
>• Computadora - Periférico: Compatibility Mode: "Centronics" en modo standard.
> Periférico - Computadora: Byte Mode: 8 bits al mismo tiempo usando líneas de datos,
algunas veces pueden funcionar como un puerto bi-direccional.
> Bi-direccional
> EPP: Puerto Paralelo Ampliado, usado principalmente por periféricos como: CD-ROM,
cintas, discos duros, adaptadores de redes, etc. excluyendo las impresoras.
> ECP: Puerto con Capacidad Extendida, usado principalmente por scanners e impresoras
de nueva generación.
33
CAPITULO TI
Todos lo puertos paralelos pueden usarse en modo bi-direccional usando el modo
Compatibility. El modo Byte puede ser utilizado por al menos el 25% de las bases
instaladas de puertos paralelos.
Todos los modos utilizan software solo para la transmisión de datos, el driver se encarga de
escribir los datos, comprobar las líneas de unión (BUSY), hacer valer las señales de control
apropiadas (STROBE) y luego pasar al siguiente byte. Este software limita la efectiva
transmisión de datos a unos ratios de 50 a 100 Kbytes por segundo.
Además de los 2 anteriores modos, EPP y ECP están siendo implementados sobre los más
nuevos controladores de E/S por la mayoría de fabricantes. Estos modos usan hardware
para ayudar a la transmisión de datos. Por ejemplo en el modo EPP, un byte de datos puede
ser enviado al periférico por una simple instrucción de salida. El control E/S controla todo
el intercambio y transmisión de datos al periférico. En resumen, la norma 1284 nos indica
lo siguiente:
1. Cinco tipos de operaciones para transmitir datos.
2. Un método para la computadora y el periférico para determinar el modo de transmisión
mantenido y negociar el modo requerido.
3. Define la interfaz física:
y Cables.
V- Conectores.
CAPITULO Tí
4, Defina la interfaz eléctrica.
>- Drivers.
> Terminación.
>- Impedancia.
2.2.5 El puerto serie
El puerto serie de la computadora es un adaptador asincrono utilizado para intercomunicar
varias computadoras entre sí.
Un puerto serie recibe y envía información fuera de la computadora mediante un
determinado software de comunicación o un driver del puerto serie.
El software envía la información al puerto carácter a carácter, convirtiéndolo en una señal
que puede ser enviada por un cable serie o un módem.
Cuando se ha recibido un carácter,, el puerto serie envía una señal por medio de una
interrupción indicando que el carácter está listo. Cuando la computadora ve la señal, los
servicios de! puerto serie leen el carácter:
2.2.5.1 Conectores del puerto sene
En las PC's, se emplea como conector de la interfaz serie, un termina! macho al que
corresponde el DTE (Data Terminal Equipment) que, a través de un cable conectamos a un
periférico que posee un conector hembra al que corresponde el DCE (Data
Comumunications Equipment). En la Tabla 2.13, se muestra el terminal DTE, que tiene las
siguientes conexiones (para un conector DB-25)..
35
CAPITULO n
PTN || Nombre || Dirección de Tx12345678
2023
P. GTDRDRTSCTSDSRGNDDCDDTR
DSRD
—-> DCE-> DTE^•DCE-> DTE->DTE
—-> DTE-> DCE
<r->
FunciónTierra de seguridadSalida de datos DTEEntrada de datos DTEPetición de emisión DTEListo para transmitir DCECE listo para comunicarse con DTEMasa común del circuitoDetección de portadoraSeñal de terminal disponibleIndicador de velocidad de transmisión
Tabla 2.13 Funciones del DTE
2.2.5.2 Direcciones que utiliza el puerto serie
El puerto serie utiliza direcciones y una línea de señales, un IRQ para llamar la atención del
procesador. Además el software de control debe conocer la dirección.
La mayoría de los puertos series utilizan direcciones standard predefinidas. Éstas están
descritas normalmente en base hexadecimal. Cuando se instala un nuevo puerto,
normalmente se mueve un jumper o switch para seleccionar un puerto (COMÍ, COM2,
COM3, etc.), con lo que se asigna una dirección y una interrupción usada por la tarjeta del
puerto.
Las direcciones e IRQs usadas por los puertos serie fueron definidas al diseñar el PC
originalmente; sin embargo, las del COM3 y COM4 no se han def inido oficialmente,
aunque están aceptadas por convenios. En la Tabla 2.14, se muestran las direcciones y los
IRQs utilizados:
CAPITULO II
Puerto || DirecciónCOMÍCOM2COM3COM4 _j
3F8H2FSH3E8H2E8H
Interrupción (tRQ)4343
Tabla 2.14 Direcciones de ..los puertos serie
Se pueden añadir gran cantidad de puertos serie a un PC, ya que existe gran flexibilidad a la
hora de definir direcciones no-standard, siempre que se encuentren entre el rango 100 y
3FF hexadecimal, y siempre que no entren en conflicto con otros dispositivos.
Las computadoras IBM PS/2 usan la Micro Channel Architecture. En la Tabla 2.15, se
define las direcciones e IRQs para los puertos desde COMÍ a COM8:
PuertoCOMÍCOM2COM3COM4COM5COM6COM7COM8
Dirección3F8H2F8H3E8H2E8H4220422852205228
Interrupción (IRQ)43433333
Tabla 2.15 Puertos de COMÍ a COM8
Los dispositivos usan las IRQs para llamar la atención del procesador enviándole una señal.
Cuando el procesador recibe la señal, interrumpe su tarea, respondiendo a dicha señal.
37
CAPITULO II
De las IRQs que utiliza el PC, sólo dos están definidas para uso por los puertos serie: IRQ 3
es usada por COM2, e IRQ 4 es usada por COMÍ. Estos son el standard oficial.
Cuando se trata de instalar más de dos puertos series en un mismo PC, existen dos
posibilidades:
> Tratar de compartir interrupciones entre los diferentes puertos
> Usar otras interrupciones disponibles para puertos adicionales
El convenio para COM3 y COM4 era compartir las IRQs con COMÍ y COM2.
Desgraciadamente, no trabaja perfectamente en sistemas operativos multitarea usados en la
actualidad (Windows, Win95, WinNT, OS/2 y UNIX). Otro problema es que existen muy
pocas interrupciones disponibles si se posee una placa compatible con IBM PC/XT.
Así como los puertos paralelos ocupan tres registros o puertos, el puerto serie ocupa siete
registros con los cuales trabaja. A continuación en la Tabla 2.16, se listan estos registros.
COMl|COM2| COM3 | COM43FS3F83F83F93F93FA3FB3FC3FD3 FE
2F82FS2F82F92F92FA2FB2FC2FD2FE
3E83ES3ES3E93E93EA3EB3EC3ED3EE
2E82ES2E82E92E92EA2EB2EC2ED2EE
REGTxBRxBDLLDLM1ERIIRLCRMCRLSRMSR
Nombre de los registrosBuíTer de transmisiónBuffer de RecepciónLatch para divisor (LSB")Latch para divisor fMSB")Reg. habilitador de interrupciónRetí, identifícador de interrup.Ree. controlador de líneasRetí, controlador de modemRee. de estado de líneaRes. de estado de modem
DLAB0 (Write)1 Write)
11
Tabla 2.16 Registros de los puertos serie
CAPÍTULO II
TxB (Transmissíon Buffer - Buffer de transmisión)
En este registro se escribe el byte a ser transmitido. Este registro se accede cuando el bit
DLAB-0 (bit 7 del LCR).
RxB (Reception Buffer - Buffer de recepción)
En este registro se lee el byte que llega por el canal serial. Este registro se accede cuando el
bit DLAB=0 (bit 7 del LCR).
DLL (Divisor Latch LSB - Latch Divisor para LSB)
En este registro se escribe el byte menos significativo del número (16 bits), con el cual se
quiere dividir el reloj de entrada. Aquí se programa la tasa de baudios. Este registro se
accede cuando el bit DLAB=1 (bit 7 del LCR),
DLM (Divisor Latch MSB - Latch Divisor para MSB)
En este registro se escribe el byte menos significativo del número (16 bits), con el cual se
quiere dividir el reloj de entrada. Aquí se programa la tasa de baudios. Este registro se
accede cuando el bit DLAB=1 (bit 7 del LCR).
LCR (Line Control Register - Registro de control de línea)
En este registro se especifica el formato de comunicación asincrona. Este registro puede ser
leído. A continuación en la Tabla 2.17,se describe la función de cada bit.
CAPITULO TI
Ü7DLAB
D6Set Break
D5Stick Par
D4EPS
D3PEN
D2STB
DIWLS1
DOWLSO
Tabla 2.17 Bits del LCR
WLSO y \VLSI
Especifica la cantidad de bits en cada carácter transmitido o recibido.
STB
Especifica la cantidad de bits de parada que serán transmitidos o recibidos para cada
carácter.
PEN
Este es un bit para habilitar las paridades.
EPS
Este es un bit seleccionador de pandad par.
Stick parity Bit
Especifica el nivel lógico del bit de pandad a ser transmitidos.
Set Break
Este es un bit controla la actividad del break.
DLAB
Este es un bit controla el acceso al latch divisor.
DLAB—1: permite el acceso a los latch divisores generadores de tasa de baudios
DLAB—0: permite el acceso a los buffers de transmisión y recepción.
40
CAPITULO TI
LSR (Line Status Register - Registro de Estado de Línea)
Este es un registro de 8 bits en el que se encuentra la información correspondiente a la
transferencia de datos. Su descripción en la Tabla 2.18, se detalla a continuación.
D70
D6TSRE
D5THRE
D4BI
D3FE
D2PE
DIOR
DODR
Tabla 2.18 Bits del LSR
DR
Este bit indica que fue recibido un dato, es decir, que existe un dato listo en el buffer.
OR
Este bit indica un error de over-run. Este error indica que el dato que estaba el buffer,
todavía no había sido leído.
PE
Este bit indica un error de paridad. Indica que el carácter recibido no tiene una paridad
correcta.
FE
Este bit indica un error de "frame". Indica que el carácter recibido no tenía un bit de parada
válido.
BI
Este es un bit indicador de break.
THRE
Este es un bit indica que el registro de transmisión está vacío.
41
CAPITULO II
TSRE
Este es un bit indica que el registro de desplazamiento está vacío.
El bit D7 siempre permanece en 0.
IIR (Interrupt Identification Register - Registro identiflcador de-TVT
Con el fin de obtener el mínimo de overhead durante la transferencia de datos, este registro
prioriza la interrupción en 4 niveles como se muestra en la Tabla 2.19:
Prioridad1234
InterrupciónEstado de línea del receptorDato recibidoRegistro de Tx vacíoEstado del módem
Tabla 2.19 Niveles de prioridad
El registro IIR cuando está direccionado, congela la interrupción pendiente de más alta
prioridad y no actúa hasta que aquella sea servida.
D70
D60
D50
D40
D30
D2-
DI-
DO-
Tabla 2.20 Bits del ITR
42
CAPITULO U
DO
Este bit indica cuando existe una interrupción pendiente.
DlyD2
Estos bits identifican la interrupción pendiente de más alta prioridad.
IER (Interrup Enable Register - Registro híibílitador de interrupción)
Este registro permite individualmente los cuatro tipos de interrupción.
D70
D60
D50
D40
D3-
D2-
. DI-
DO-
Tabla 2.21 Bits del IER
DO
Habilita la interrupción del dato recibido.
DI
Habilita la interrupción cuando el registro de Tx está vacío.
D2
Habilita la interrupción que es provocada por el estado de línea del receptor.
D3
Habilita la interrupción que es provocada por el cambio en el estado del inódem (CTS,
DSR, RI, CD).
43
CAPÍTULO 11
MCR (Modem Control Register - Registro de Control del Módeni)
Este registro controla la interfaz con el modem. La descripción de los pines se muestra a
continuación en la Tabla 2.22.
D70
D60
D50
D4LOOP
D3OUT2
D2OUT1
DIRTS
DODTR
Tabla 2.22 Bits del MCR
DTR
Este bit controla la salida DTR.
TVTS
Este bit controla la salida RTS.
OUT1
Este bit controla la salida #OUT1. Esta es una salida auxiliar
OUT2
Este bit controla la salida #OUT2. Esta es una salida auxiliar
LOOP
Este bit controla el recurso de diagnostico llamada "Loop back"
MSR (Modem status Register - Registro de Estado del Modem)
Este registro informa el estado de línea de control del modem.
D7RLSD
D6Rl
D5DSR
D4CTS
D3DRLSD
D2TER1
DIDDSR
DODCTS
Tabla 2.23 Bits del MSR
44
CAPITULO TI
DCTS
Cuando este bit se encuentra en uno lógico indica que la entrada CTS ha cambiado de
estado desde la última lectura.
DDSR
Funcionamiento idéntico al anterior, pero con una entrada DSR
TERI
Este bit indica el fin de señal del detector de tonos.
DRLSD o DCD
Cuando se encuentra en nivel uno lógico indica que la entrada CD (RLSD) ha cambiado de
estado desde la última lectura.
CTS
Indica el estado de entrada CTS.
DSR
Idéntico que el anterior, para una entrada DSR
Rl
Idéntico que el anterior, para una entrada RI.
RLSD o CD
Idéntico que el anterior, para una entrada CD.
2.2.5.3 Transmisión de datos por el puerto serie
Para el protocolo de transmisión de datos, sólo se tienen en cuenta dos estados de la línea, O
y 1, también llamados bajo (Low) y alto (High). Cuando no se transmite ningún carácter, la
45
CAPITULO II
línea esta alto. Si su estado pasa a bajo, se sabe que se transmiten datos. Por convenio se
transmiten entre 5 y 8 bits, pero la BIOS sólo soporta una anchura de datos de 7 u 8 bits.
Durante la transmisión, si la línea está bajo, se envía un O y sí está alto indica un bit a uno.
Se envía primero el bit menos significativo, siendo el más significativo el último en
enviarse,
A continuación se envía un bit de paridad para detectar errores. Finalmente se mandan los
bits de parada (stop), que indican el fin de la transmisión de un carácter. El protocolo
permite utilizar 1, 1,5 y 2 bits de parada.
El número de bits que componen cada palabra depende del código a emplear, así, si se
quieren transmitir datos ASCII normales, serán de 7 bits, pero si se quiere enviar el juego
completo de caracteres, cada una debería estar formada por 8 bits.
Dependiendo de esto, si se emplea paridad y él número de bits de parada, se mandarán un
determinado número de caracteres dependiendo de la velocidad en baudios (bits por
segundo) por el puerto serie.
En la figura 2.2, se puede ver con detalle la transmisión del carácter ASCII (A), que es el
65 y su representación binaria es 0100001.
46
CAPITULO II
Jrüíih
i i i i i i i i i i i
Tiempo
>
Bit de Inicio8 Bits de datos(01000001 para A cU Stop
Bit de Paridad
Figura 2.2 Transmisión serial de hits
2.2.5.4 Tipos de puerto serie
Hay muchos tipos de puertos serie, que están definidos normalmente por el tipo de UART
que utilicen.
El UART (Universal Asynchronous Receíver / Transmitter, Receptor/Transmisor
Asincrono Universal) es un chip del puerto serie que convierte los datos de formato
paralelo utilizados por el PC en datos de formato serie para su envío.
A continuación se enumeran los diferentes tipos de UARTs existentes:
UARTs sin buffer
Los UARTs sin buffer fueron diseñados cuando los módem más rápidos transmitían a 1200
bps. No tienen buffer de carácter extra en el UART, por lo que dependen del procesador
para borrar cada carácter enviado por el módem antes de que el siguiente carácter sea
enviado.
47
CAPITULO II
Los UARTs sin buffer comprenden las series 8250, el 16450 y el original 16550.
El 8250 y 8250B
El 8250 fue el original UART usado en el IBM PC/XT, y el 8250B es una versión un poco
más lenta, aunque lo suficiente para un PC/XT. Este UART no debería ser usado en un
IBM AT o una máquina más rápida, ya que muchos programas de chequeo muestran un
informe erróneo, y existen riesgos ocasionales de error, e incluso pueden producirse fallos
si se utilizan en estas máquinas.
El 8250A
El 8250A UART es una versión mejorada del 8250 / 8250B UART que trabaja un poco
más rápido sobre el bus del PC, no sobre el módem, y con menos problemas. Este chip es lo
suficientemente rápido para trabajar con máquinas basadas en el procesador 8086 diseñado
entre 1.983 y 1.985, pero no es lo suficientemente rápido para ser aplicado en los tipos AT.
El 16450
El 16450 es una versión más rápida, también sobre el bus del 8250A que fue diseñado para
su uso en máquinas del tipo AT. Un 16450 es lo suficientemente rápido para soportar las
velocidades de transmisión de los ordenadores actuales.
48
CAPITULO II
El 16550
El 16550 es un UART que fue montado durante un corto período de tiempo. Este UART
tiene un buffer interno de 16 bytes que no trabajan. Muchos de los IBM PS/2 incluyen este
chip.
TJARTs con buffer
Los UARTs con buffer han sido diseñados como apoyo a los módem rápidos de ia
actualidad. El UART original con buffer es el 16550A, que puede acumular 16 caracteres
en un buffer antes de que el procesador lea el dato. Esto hace que el software del PC tenga
una mayor facilidad para comunicarse con el módem, creándose menos errores y una mayor
velocidad de transmisión.
El 16550A
Esta es una versión mejorada del 16550, donde ei buffer trabaja, y es el standard UART de
los 90, que requieren las transmisiones rápidas con los actuales módem. El buffer colabora
en los sistemas operativos Windows y OS/2. Asimismo, evita los overrun y los errores
CRC que se puedan producir en aplicaciones DOS u ordenadores más rápidos.
Existen diferentes versiones del 16550A creadas por diferentes fabricantes. Así, hay
quienes han optado por poner dos UARTs en un mismo chip. Otros han hecho el "super-
I/O", que incluye dos puertos serie, y ¡os controles del disco duro y la disquetera. Estas
modificaciones lo han mejorado con el paso del tiempo.
CAPITULO TI
ElStarTech 16650 UART
Este chip es una versión mejorada del 16550A UART, que posee un buffer FIFO de 32
bytes, control de flujo automático y un gran potencial en comunicaciones.
Desgraciadamente, su diseño no lo hace completamente compatible con el 16550A, lo que
supone que en algunas ocasiones puede no trabajar con algunas aplicaciones y dnvers.
Particularmente, muchas aplicaciones DOS no funcionan adecuadamente con este chip
cuando corren en una ventana DOS bajo otro sistema operativo. Además no existen drivers
para Windows 95, Windows NT u OS/2.
Texas Instruments 16750 UART
Texas Instruments hizo un UART totalmente compatible con el 16550A. El 16750 posee un
buffer de 64 bytes y capacidad de control de flujo automático.
Pequeños puertos serie
Existen algunas tarjetas diseñadas específicamente para dotar de un puerto serie de alta
velocidad para comunicaciones. Estas tarjetas tienen un mícroprocesador en su interior que
asiste al PC en las comunicaciones. Además, disponen de un modo de transferencia de
datos de alta velocidad que es mucho más eficiente que el interfaz de puerto serie normal.
Estas tarjetas necesitan unos drivers especiales para su uso, pero también disponen de un
interface standard de puerto serie por motivos de compatibilidades.
CAPÍTULO II
HayesESP-IyESP-H
Hayes ha introducido tres diferentes tipos de "Enhanced Serial Ports", o tarjeta ESP. La
original tarjeta ESP (ESP-I) es una tarjeta "full-length 8-bit" con dos 16550A puertos serie
y un procesador que tiene en cuenta las transmisiones entre el puerto original y el
procesador. Esta tarjeta no es soportada por Windows ni OS/2, por lo que se hace necesario
el uso del puerto standard.
La tarjeta ESP-II está disponible con un o dos puertos serie. Este producto reemplazó al
modelo original y dispone de drivers para diferentes entornos al mismo tiempo,, e incluso
reciente Hayes ha introducido un driver para Windows 95.
Practical Peripherals High Speed Serial Port HSSP
Un Practical Peripheral High Speed Serial Port (HSSP) es una versión mejorada de la
tarjeta Hayes ESP-II, y es idéntica en su construcción a la ESP-II. Tiene los drivers que la
ESP-II.
El T/Port
El T/Port de Telcor Systems, Inc. Es una tarjeta especial que incluye un microprocesador y
es utilizada para la comunicación con un host durante un tiempo elevado. El T/Port mejora
el funcionamiento del ordenador, especialmente cuando opera bajo Windows u OS/2.
Presenta una emulación del interfaz 16450.
CAPITULO TI
2.2.6 El puerto de juegos
El puerto de juegos esta diseñado como una interfaz con dos joysticks analógicos. Cada
joystick dispone de dos botones.
El puerto de juegos no suele estar integrado como un componente de la placa base. Este
puerto suele estar implementado en tarjetas del tipo multi-I/0 o en tarjetas de sonido. El
conector del puerto permite la conexión de dos joystick a la vez. Es muy simple saber si el
puerto de juegos esta disponible en nuestro PC. Es el único conecíor de 15 pines que
podemos encontrar en la parte posterior de nuestra computadora.
2.2.6.1 Direccionamiento del puerto.
El puerto de Juegos esta situado en la dirección 201H del mapa de direcciones. El
significado de cada bit del puerto se muestra en ia Tabla 2.24.
Escribiendo en la dirección del puerto cualquier valor los cuatro timers comienzan a
generar pulsos. Leyendo este puerto, obtenemos un byte. El nible bajo nos da el estado de
los cuatro pulsos digitales. El estado de los botones viene dado por el nible alto.
Para leer la posición de los joystick se puede utilizar la función 84H de la interrupción 15H
de la BIOS.
JOYSTICK Bbotón 2BIT?
botón 1BIT 6
JOYSTICK ABotón 2BITS
botón ]BIT 4
JOYSTICK Bcoord yBIT 3
coord xBIT 2
JOYSTICK Acoord yBIT 1
coord xBITO
Tabla 2.24 Bits del puerto Jov.stíck
52
CAPITULO II
2.3LOS BUSES DE LAS PCs
Los buses o ranuras de expansión sirven para conectar tarjetas de expansión a un sistema
básico de la computadora, ha través de este conector se logran llevar todas las señales
necesarias para realizar las diferentes interfaces del sistema (impresora, unidades de disco,
pantallas, modems, escaners, etc.).
El conjunto de estas señales recibe el nombre de BUS y tiene, en sus diferentes
configuraciones un determinado número de líneas con funciones especificas y una forma
física estándar con el fin de poder instalar (conectar o desconectar) en él diferentes modelos
de tarjetas o diferentes aplicaciones.
En la historia de las computadoras IBM y compatibles existen diferentes buses que han ido
evolucionando, principalmente con el desarrollo de los nuevos microprocesadores, pero
para nuestro estudio vamos a partir de aquellos que aún siguen vigentes.
El bus ISA de 8 bits, luego el bus ISA de 16 bits, después el bus MCA, el bus EISA y
ahora se habla principalmente de los buses VL y PCI.
2.3.1 El bus ISA
El bus ISA ( Industry Standard Architecture ), fue el primer bus utilizado en los equipos
PC y XT de IBM como sistema de arquitectura abierta. Esto permitió en gran parte la
proliferación de clones y la gran variedad de tarjetas de expansión e interfaz de bajo costo
que aún se encuentra en el mercado. De los buses ISA hay dos versiones: el de 8 bits y el de
16 bits.
53
CAPITULO II
2.3.1.1 El bus ISA de 8 bits
El bus ISA de 8 bits salió al mercado en el año 1982 con el PC y luego se conservó en los
XTs. Este bus se encuentra en forma de conector en línea de doble lado y tiene 62
contactos, 31 por cada lado. Sus pines o contactos están numerados por un lado como Al
hasta A31 y por el otro lado Bl hasta B 31. En la Figura 2.3, se muestra la estructura
física, la numeración y el nombre de cada una de las señales.
Como se puede observar en la figura, en una ranura o siots se encuentran el bus de datos, el
bus de direcciones, las señales de control y de reloj y los voltajes de alimentación. Casi
todas estas señales van conectadas a microprocesador a través de circuitos acopladores
(drivers o buífers) con el fin de protegerlo de posibles cortos circuitos o conexiones
equivocadas. Como podemos ver en el bus ISA de 8 bits hay un bus de datos de 8 bits y un
bus de direcciones de 20 líneas lo que permite un direccionamiento hasta de 1 MB.
El bus contiene 6 señales de interrupción (JÜRQ2 a IRQ7), 3 canales de DMA y una señal
de reloj 4.77 MHz. Aunque cada conector en el bus se supone que trabaja de la misma
forma, los primeros PCs fabricados con 8 ranuras requerían tener por lo menos una tarjeta
conectada en la ranura 8 (el más cercano a la fuente de poder), con el fin de obtener una
señal llamada " Card selected (tarjeta seleccionada) " en el pin B8. Esta señal era una
línea diseñada para recibir un adaptador especial de IBM llamado el 3270 PC, por la
mayoría fabricantes de clones y compatibles no siguió esta configuración.
54
CAPITULO II
El pin del Oscilador (B30), entrega una señal de 14.3 MHz. Cuando se debe hacer reset en
el PC, el pin RESET DRV (B2) reinicia todo ei sistema. Cuando se recibe una dirección
válida, el pin AEN (All), le indica al sistema que se puede decodificar esta dirección. El
pin -I/O CHCK o I/O Channel Check (Al), avisa a los circuitos de la tarjeta principal
(motherboard), que ha ocurrido un error en la tarjeta de expansión; el signo negativo
indica que la señal se activa en nivel lógico bajo. El pin -I/O CHRDY o I/O Channel
Ready (A10) se activa cuando una tarjeta de expansión está lista. Si este pin está en nivel
bajo (0), el microprocesador extiende el ciclo del bus, generando estados de espera (wait
states).
Las seis señales de interrupción por hardware (IRQ2 a FRQ7), se utilizaban por las tarjetas
de expansión para demandar atención por parte del microprocesador. Las interrupciones
IRQO e IRQ1 no-están disponibles en el bus ya que ellas tienen las prioridades más altas
del temporizador principal y el teclado. Las señales I/O Read y I/O Write indican que el
microprocesador o el controlador de DMA quieren transferir datos hacia o desde el bus de
datos. Las señales de lectura y escritura de memoria (-MEMR y -MEMW) le indican al la
tarjeta de expansión que la CPU o el DMA van a leer o escribir datos a la memoria
principal. El bus XT tiene 3 señales de requisición de DMA (DRQ1 a DRQ3), que le
permiten a la tarjeta de expansión transferir datos hacia o desde la memoria.
CAPITULO TI
Gfound.
IHO2-5 VDC-DRQ2
-12 VDO-CtfFd sdected
*12 VDCGrmmd
-SMFMW
64-B5
BlOBU
-M)W B13i^OR BU
-CACK3 SI 5ORO 3 B16
•DAOKí 81?ORO1 B18
Qj<St(477ívfH2l BEOÍPtOf B;
TttóS 8"51HO-4- 9243RQ S B,i5
•DAOK2 B£3T;C G27
fóALH S2S+5VPC B19
B3063 í
•r»
ÍJ
*jAeA.TA8A9
DaíáBfí?'Dam Éfit €Data BU 5Deia fííí 4
Data en a'OsraBtíQ
Achires^ B¡1A14AIS
A17A*fl Addte% Si! 13A19 Addre-aeín2
O Arfdress Bit it 'ASI ArftfrawBHIÜ
A53 Acuosa Bit fi
Aetdress BÍE A27 Adróse EjN
,sB3t3
SOA31
Figura 2.3 Bus ISA de 8 bits
56
CAPITULO TI
2.3.1.2 El bus ISA de 16 bits
Con el avance de la tecnología, las limitaciones del bus ISA de 8 bits se evidenciaron
rápidamente. Las 6 interrupciones disponibles se coparon con la unidad de disco, el disco
duro, los puertos seriales y el puerto paralelo dejando pocas posibilidades de expansión. Así
mismo, de los tres canales de DMA, la unidad de disco y el disco duro, se ocupaban dos
quedando uno solo libre.
Con la aparición del microprocesador 80286 de 16 bits y las computadoras AT en 1984, se
diseñó un nuevo bus, el ISA de 16 bits, que utilizaba en gran parte el anterior ISA de 8 bits
agregándole un segundo conector de 36 pines alineado con el primero con nuevas señales,
Figura 2.4. De esta forma se podían utilizar la gran cantidad de tarjetas periféricas y de
expansión que existían en el mercado. En esencia se agregaron otros 8 bits de datos, más
direcciones, con cinco interrupciones y cuatro canales de DMA y algunas señales de
control. Así mismo, se incrementó la velocidad a 8,33 mhz.
57
CAPITULO II
'fr~3^5% ffí
S82
B<
aíB7
+12 VDC B9
ORO?-12 VDC
ORQ3 BIS-DACK1 g
PRCH B18
ifiQSERO 4
920B2Í
-QACK2 S[,'C S27
626BUSB30
Ground B31
-MHMCS1& Di02
10 03
3BQ1S D6ÍRO14 D7
0ACKO 06DBOO DB
ORO 6 0Í8DHCK7 Dt4DRQ7 DtS
,45 VDC D1P-MASTER 017
Di 8
•*¿y "«í
A17
OaUEítlS
A1A2 Data BIÍ 7
ASA6A?A6Afi
A52Ala>l*í
Dñía Bft 3liata Bit 2Data Bit 1t>af a Su O4'QCBROr
I/Í6
Acicf resé 6tt 1*5
*ít1T
litaAcídreas B*t 6
ASO
A22
AS4A?S
A2&'
A3a Aereas &ÍÉ íA3f Affóress Brf O
:r3
¡1 SBH£? Bit 23
Aolfíre^ Bit 20ss BÍÍ í&
Atídress BU Í7-7
38.&• 10 -MEMW¡tt Oata BilS12 Oata Del 9
! PafaSitlS-17 Date Bit 1418
Fijruní 2,4 Bus ISA de 16 bits
58
CAPITULO II
2.3.2 El bus MCA
Con la introducción de los microprocesadores de 32 bits como el 80386 y 80486, el bus
ISA de 16 bits se quedó nuevamente atrás y creo la necesidad de un nuevo bus. En 1987,
IBM considero archivar el bus tipo ISA y diseñó el bus MCA (Micro Channel Architecture)
o micro canal en su línea de computadoras PS/2.
Su diseño buscaba, además del objetivo de mejorar el rendimiento de los equipos, frenar el
avance de la industria de los clones y los compatibles, ya que IBM no entregó sus
características tratando de fabricar sus propias tarjetas de expansión y periféricos.
La principal diferencia entre los buses ISA y MCA consiste en la configuración física, ya
que el último tiene una separación entre los pines de 0.050" con el fin de acomodar más
conexiones en el mismo espacio. Esto genera una incompatibilidad total entre los dos
sistemas lo que fue un error de IBM al no considerar las inversiones en tecnología por parte
de los usuarios.
2.3.3 El bus EISA
En 1988 y 1989 fue desarrollado el bus EISA (Extended Industry Standard Architecture) de
32 bits para satisfacer las necesidades de mayor velocidad y desempeño que
proporcionaban los microprocesadores 80386 y 80486 y para no dejar solo a IBM, y su bus
MCA, con este mercado.
59
CAPITULO II
Este bus, cuyo éxito es la compatibilidad con los buses anteriores, el ISA de 8 y 16 bits, es
un producto de un consorcio (más conocido como la banda de los nueve), formado por
Compaq, Hewlett Packard, NEC, Zenith, AST, Epson, Wyse, Olivetti, Tandy.
Para lograr la compatibilidad entre los dos sistemas ISA y EISA, se diseño una solución
muy ingeniosa que tardo alrededor de dos años para ser perfeccionada. El conector que
recibe las tarjetas tiene dos filas de pínes, con diferente altura o nivel y la transferencia
entre los dos buses se realiza automáticamente dependiendo de la forma del conector de la
tarjeta,
Los pines superiores o las tarjetas tipo ISA y en el conector inferior hay cinco topes de
plástico que no permiten que estas hagan contacto con los pines inferiores, que
corresponden al bus EISA. Las tarjetas EISA tienen una serie de ranuras que coinciden con
los topes y éstas se pueden deslizar hasta el fondo obteniendo el contacto con sus
respectivos pines.
El bus EISA tiene 99 pines por cada lado en los cuales se ha reducido su espaciamiento de
0.100" ha 0.50". En la Figura 2.5, se tiene la distribución de las señales de este tipo de bus.
Como se puede observar en la figura, el bus EISA tiene 30 líneas de direccionamiento, 32
bits de datos, 15 niveles de interrupción y 7 canales de DMA.
Una de las características principales del bus de EISA es su capacidad de manejo autónomo
del bus (bus-mastering), que en pocas palabras podría explicarse como la capacidad para
permitir el intercambio de información entre dos periféricos sin la intervención de la CPU.
Aunque la velocidad del bus EISA se conservó en 8,33 MHz, para permitir la
60
CAPITULO II
compatibilidad con ISA su velocidad para transferencia de los datos es mucho mayor
debido al aumento en la anchura del bus; esta llega ser de unos 33 Mbps.
-J «<
Grotincí
Ksy
4-iavoc" M-SÜ
-LOCKResarvctí
Q-roUnd
-BE3K&ysea
-&&>Ground4SVDO
-Addrass 24
tuKey
45VOCss Kayalo
Dala 1fi
Data £3Data 24
Data £7
Data 284-5 VCG
IftQ*5VDC
VDG
-6MEMWSMEMft
tíow-1/D Ft
"-OACK 3
-REFBESH
ÍRO7!RO6masÍRQ43HQ3
TYG&AÍE
4-5 VOC
é
1BQ10ÍRQltÍRO12IRQ 15IRCH4
-DACK OOñQO
-D^CK t,&KÜ5
-DACK7DRQ7
-t-'j VDC
03
asse
B-íO
en&14B15&16B17
B1982082t822823
626BS7
&2S
Koy01D2DSD4D506D7OS
otoOlíDt2
014
D1G01;ote
I*? """"ES£
R
a
a
35
Mg WPP^^ ¡R
S
A1AS
A4A&
A?AS
Aíí)Atl
Oaía?Gatas
Oataü-T/&GHRDYAEN
A1SAddtoss í?
A17A18A19
Acarees 1S14
Adtíffiss 11
AP3
AZ7
fl.30A31KeyCi
C3C4C5caC7esC9
Addf &ÍA 1AdíK-SA
1 Address 501918
Aádtess í7MEMR
CUC12cíaC14ClbCJ6C17C18Oí 9
Oaí&BData 9Dátalo
Data 12DofolSData 1-íDala 1S
-EX32
Key
-SLSUHST*E4S8URST
W n
Kay-BÉÍ
30-Addre^ 2.8
Addrass 2S
Í5Atfdrass 13
1-2
Aetáress /Oround
iíf 4
O-sw
Key
2.5 Bus EISA üe 32 bits
61
CAPITULO II
2.3.4 Los buses locales
Los buses locales surgieron por la constante demanda de una mayor velocidad en las
operaciones que involucran gráficas, vídeo y sonido presentes en la gran cantidad de
aplicaciones con multimedia y otras similares. La baja velocidad de los buses ISA, MCA y
EISA sólo se podía superar conectándose directamente a la línea de datos y
direccionamiento del microprocesador y de la memoria. De esta forma se puede lograr
velocidades de hasta de 66MHz en comparación a los 8 O 10 MHz de los otros buses. Los
dos tipos principales de buses son el Vídeo Local y el PCI.
2.3.4.1 El bus Local de Video o Video Local (VL)
Este tipo de bus fue propuesto en 1992 por la Video Electronics Standards Association y
por ello se llama VESA Video Local Bus. Este bus utiliza el mismo conector de 62 pines
del bus MCA. Sus pines se muestra en la Figura 2.6. Las tarjetas que utilizan este bus
tienen dos conectores, uno en cada extremo y para cada bus. Los conectores o ranuras del
motherboard, se colocan alineados con los conectores o ranuras ISA. El bus VL es
expandible de 32 a 64 bits permitiendo su utilización en sistemas con el microprocesador
Pentium, por medio de otro conector MCA alineado con el primero.
62
CAPITULO II
flrj
AGfAQ2
Giownd A06
+VCG AOOOtttscU
BatíU& Á12A13AÍ4
. A16Data 24 A16
AiT
O-sta ÉÍ3
ÍJ?ta 39•íVCG A20
Atídi 31 A¿fCrauneí AJÍ2:
Daíasr
0ata 53
Data 4SDais 43
Ke,
Dataos
5 A25Adtír ¿3 A?gAdefr ¿1 Ai,?
«í A>8
Arj ín 17Adcir }í> A31
AíííJr. rA34
= A35A36
Atídt S A^?
/V30M45A42AJ3
W
HDYRTN
A AS
A49
-ÜftDf A^1Et ST AV
IDt
A5S
LE&16
fi<f x.-'S Í.SÍ5
mi Data 01
#04Gftíüntí
ÍJOSSO?
SOSS10BU
Oaío 11Data 13Oata 15
©atan*vcc
B14B-1SB16
BIS820sal£322 Atidr 2B
V26
AtWf
B35
20Atfdr 1Add' 1«Addr Í4Atídr 12Aíídf !<JAcídt í*Crouns
Atídr 4'VVBAK
B39
^4T-ÍVGO•aciBE2
-G round
B45<oy
Wfi
IÍ5KTt-VCCÍO?ÍDóÍD4
£*
Oatí fOOata^ft
D&fa d&
O d* 42
SHB
-B£?
#*
Fiííura 2.6 Bus VESA VL
63
CAPITULO JI
2.3.4.2 El bus local PCI
Uno de los últimos buses que ha salido al mercado es el llamado bus local PCI (Peripheral
Component Interconnect) puesto por Intel en 1992 y apoyado por la mayoría de los
fabricantes de PCs, incluyendo a Apple Computer, quien lo ha adoptado para su línea de
equipos más recientes que utilizan el ni i crop roces ador PowerPC 604.*
La tendencia actual es la utilización de! bus VESA VL para equipos de bajo perfil y del bus
PCI para equipos de alta velocidad y configuraciones de buen tamaño. Con el bus PCI se
espera mejorar considerablemente el desempeño de los equipos en operaciones de alta
intensidad en intercambio de datos como son el manejo de gráficas de alta resolución en 2 y
3 dimensiones, video con el tamaño de la pantalla y sonido con calidad de CD, así como el
manejo de redes y discos duros de alta velocidad.
El bus PCI, de 188 pines, también utilizan conectores de 62 pines tipo MCA que se instalan
algunas veces alineados con las ranuras ISA o EISA. A diferencia del bus VL, el bus PCI
utiliza una técnica de multiplexación de direcciones y datos que permiten una considerable
reducción en el número de pines. Esto crea la necesidad de circuitos de acoplamiento
(buffes) que reduce un poco la velocidad de transferencia.
El bus PCI, de 32 bits, es expandible a 64 bits y soporta la lógica de 3.3 voltios junto a la
normal de 5 voltios. De esta forma hay 4 versiones, la de 5 voltios y 32 bits, la de 3.3
voltios y 32 bits, la de 5 voltios y 64 bits y la de 3.3 voltios y 64 bits. En la Figura 2.7, se
tiene la disposición de los pines y el nombre de las diferentes señales.
64
CAPÍTULO II
F¡»ura 2.7 Bus Local PCI de 64 bits
65
CAPITULO III
HERRAMIENTAS DE PROGRAMACIÓN
En este capítulo se da una breve descripción de los diferentes lenguajes de programación
utilizados para ei desarrollo del presente tema. También se mencionan los entornos en los
cuales fue desarrollado el programa de software "Analizador de Puertos para PCs". Este
capítulo finaliza con un breve análisis sobre las DLLs.
3.1 ENTORNO VISUAL BASIC
Por ser el entorno donde se desarrolló casi su totalidad el programa de software, a
continuación se muestra los elementos de este entorno y e! lenguaje de programación que
éste utiliza.
3.1.1 Descripción del entorno de Visual Basic
Para entender el entorno y la metodología del Visual Basic antes se analizará los siguientes
conceptos básicos:
Proyecto.- Es el conjunto de archivos relacionados (formularios, módulos, menúes) que
constituyen los elementos básicos para desarrollar un paquete de software. Los archivos se
pueden agrupar dentro de un proyecto para crear proyectos secundarios.
67
CAPÍTULO TTJ
3.1.1.1 Ventana Proyecto
La ventana Proyecto presenta una lista de todos los módulos de formulario, módulos de
clase, y módulos estándar del proyecto.
3.1.1.2 Módulo de formularios
Constituyen el o los archivos de un proyecto de Visual Basic con extensión .FRM los
mismos que contienen los controles y los valores de sus propiedades, declaraciones de
constantes, variables y procedimientos externos de nivel de formulario y generales.
3.1.1.3 Módulo de clase
Un módulo que contiene la definición de una clase (definiciones de sus propiedades y
métodos).
3.1.1.4 Módulo estándar
Un módulo que sólo contiene declaraciones y definiciones de procedimientos, tipos, y
datos. Las declaraciones de nivel de módulo y las definiciones de un módulo estándar son
públicas (Public) de manera predeterminada. Un módulo estándar se conoce como módulo
de código en versiones anteriores de Visual Basic.
3.1.2 Terminologías de Visual Basic
Control. Un control es una herramienta que puede utilizar para crear objetos dentro de un
formulario de Visual Basic. Podrá seleccionar los controles contenidos en la caja de
herramientas y utilizarlos para dibujar objetos en un formulario usando, simplemente, el
68
CAPITULO ÍTI
ratón. Podrá emplear la mayoría de los controles para crear elementos de la interfaz del
usuario, tales como botones de órdenes, cuadros de imágenes y cuadros de listas.
Objeto. Un objeto es el nombre que reciben los elementos de la interfaz de usuario que
puede crear utilizando los controles contenidos en la caja de herramientas. Podrá mover,
modificar el tamaño y adaptar a sus gustos personales los objetos sin más que utilizar sus
propiedades asociadas. Los objetos cuentan también con una característica conocida con el
nombre funcionalidad inherente: ellos saben cómo tienen que funcionar y pueden
responder a ciertas situaciones de forma «natura!» (por ejemplo, un cuadro de lista «Sabe»
cómo tiene que desplazar los elementos contenidos en ella). Podrá programar los objetos
de un programa visual Basic utilizando procedimientos de suceso que estarán adaptados a
las diferentes situaciones a las que se puede enfrentar el programa. En Visual Basic, el
propio formulario es otro objeto,
Propiedad. Una propiedad es un valor o característica que pertenece a un objeto de Visual
Basic, tal como el rótulo asociado o el color del primer plano. Durante el proceso de
programación podrá asignar valores a estas propiedades utilizando la ventana Propiedades,
o bien, durante la ejecución del programa, utilizando las sentencias contenidas en el código
del programa. Cuando se definen desde el código, la asignación de un valor a una
propiedad tiene el siguiente formato:
Objeto. Propiedad'— Valor
69
CAPITULO 01
Donde Objeto es el nombre del objeto que desea particularizar, Propiedad es la
característica que desea modificar y Valor es el nuevo valor asignado a la propiedad. Por
ejemplo, la sentencia
Commadl.Caption ~ "Hola"
Podrá ser utilizada en el código del programa para definir como «Hola» la propiedad
Caption del objeto Commandl.
Procedimiento de suceso. Un procedimiento de suceso es un bloque de código que se
ejecutará cuando desde el programa se haga referencia o se active un determinado objeto.
Por ejemplo, cuando el usuario pulsa con el ratón el primer botón de orden de un programa,
se pondrá en marcha el procedimiento de suceso denominado Commandl_Click, Los
procedimientos de suceso evalúan las condiciones y, según éstas, definen las propiedades y
utilizan otras sentencias del programa para llevar a cabo la tarea asignada al programa.
Sentencia de programa. Una sentencia o instrucción de un programa es una palabra clave
de código que lleva a cabo una determinada tarea. Las sentencias de Visual Basic, entre
otras importantes tareas, pueden: crear espacio de almacenamiento para los datos, abrir
archivos, realizar cálculos, etc.
Variable. Una variable es un «contenedor» utilizado para almacenar datos de forma
temporal durante la ejecución de un programa. El programador crea variables para
70
CAPITULO III .
almacenar los resultados del cálculo, crear nombres de archivos, procesar la entrada de
datos, etc. En general, una variable puede almacenar cualquier tipo de números, nombres y
valores de propiedades.
Método. Un método es una sentencia especial que lleva a cabo una acción o un servicio
para un objeto particular dentro de un programa. La sintaxis que deberá utilizar para definir
un método dentro de un programa es la siguiente:
Objeto, método = Valor
Donde Objeto es el nombre del objeto que desea cambiar, Método es el comando que va a
utilizar para modificar el objeto y Valor es un argumento opcional que puede utilizarse para
definir el método. Por ejemplo, la sentencia:
JListl.Addltem
Utiliza el método Addltem para introducir la palabra Cheque en el cuadro de lista
denominado Listl.
71
CAPITULO TTT
3.1.3 Fundamentos de programación
Una aplicación puede contener varios tipos diferentes de archivos:
Los módulos de formularios (.frm) que contienen los elementos visuales de un formulario,
incluyendo todos sus controles y el código basic asociados a él.
Los módulos estándar (.bas) y de clase (.cls ) que contienen código basic.
Los controles personalizados (.vbx u .ocx )incluyen controles especializados así como
versiones mejoradas de controles estándar.
3.1.3.1 Funcionamiento de una aplicación controlada por eventos.
Un evento es una acción reconocida por un formulario o control. Las aplicaciones
controladas por eventos ejecutan código Basic en respuesta a un evento. Cada formulario y
control de Visual Basic tiene un juego de eventos predefinidos, si ocurre uno de estos
eventos, Visual Basic invoca el código del procedimiento de evento asociado.
Aunque los objetos de Visual Basic reconocen automáticamente un juego predefinido de
eventos, usted determina si responden a un evento concreto y cómo. Cuando se desea que
un control responda a un evento, se escribe el código llamado procedimiento de evento
para ese evento.
3.1.3.2 Código que se ejecuta inicialmente.
El primer formulario de una aplicación se denomina formulario inicial. Cuando se inicia
una aplicación, se presenta dicho formulario, de modo que el primer código que se ejecuta
es el del evento Form initialize de ese formulario.
72
CAPITULO III
3.1.3.3 Terminación de una aplicación.
Una aplicación controlada por eventos termina su ejecución cuando todos sus formularios
están cerrados y no se ejecuta ningún código.
3.1.4 Elementos del lenguaje
3.1.4.1 Constantes
Un elemento que retiene un valor constante a lo largo de la ejecución de un programa, al
contrario que una variable, cuyo valor puede cambiar durante la ejecución. Cada aplicación
host puede definir su propio conjunto de constantes. El usuario puede definir otras constantes
con la instrucción Const. Las constantes se pueden usar en cualquier lugar del código en vez
de valores reales. Una constante puede ser un literal de cadena o numérico, otra constante, o
cualquier combinación que incluya operadores aritméticos o lógicos excepto exponenciación.
Por ejemplo:
Const A = "MiCadena"
3.1.4.2 Variables
Una posición de almacenamiento con nombre que puede contener datos que se puedan
modificar durante la ejecución del programa. Cada variable tiene un nombre que la
identifica de manera única dentro de su nivel de alcance. Un tipo de datos puede o no ser
especificado.
73
CAPÍTULO III
Nombres de variable:
> Deben comenzar con un carácter alfabético.
> No pueden contener un tipo o un carácter de definición de tipo intercalado.
> Deben ser únicos dentro del mismo alcance.
> No deben tener más de 255 caracteres de longitud.
3.1.4.3 Tipos de datos.
Establece la clase de valores que guarda la variable.
TIPO
IntegerLong(Integer)Single(Precision)Double(Presición)CurrencyStringVariant
Tamaño enBytes
24488
1 Caract/byíe
Caracteres dedeclaración
%&|
#
®j>
Rango
-32768 a 32767-2147483648 a 2 147483647-3.37 E +38 a 3.37 E+38-1.67D+308al.67D+308-9.22E+14a9.22E4-14
Tabla 3.1 Tipos de datos en VB
Tipos definidos por el usuario: Para definir variables que deben ser agrupadas juntas. Se utiliza
la palabra clave Type....End Type
74
CAPITULO III
3.1.4.4 Contexto de la variable
Establece en que parte de la aplicación la variable es conocida.
Variables locales: Una variable local se reconoce solamente en el procedimiento en el que
está definida. Fuera de ese procedimiento la variable no es conocida.
Variables a nivel de formulario: Puede ser compartida por todos los procedimientos de
ese formulario. Se declara en la sección declaraciones del formulario.
Variables a nivel de módulo: Una variable declarada a nivel de módulo es compartida en
todo el módulo. Para declararla se abre un nuevo módulo.
Variables globales: Pueden ser accedidas desde cualquier parte de la aplicación. Para
declararlas se usa la palabra clave global.
3.1.4.5 Operadores:
Los operadores que soporta Visual Basic se muestran en la siguiente Tabla en orden de
prioridad.
75
CAPÍTULO III
Tipo | Operación | Operador
Aritmético
Relaciona!
Lógicos
ExponenciaciónCambio de signoMultiplicación y DivisiónEnteraResto de una división enteraSuma y Resta
IgualDistintoMayor queMayor e igual queMenor queMenor e igual que
NegaciónAndOrOr exclusivoEquivalenciaImplicación
V\d
+'~
o
>=
NotAndOr
XorEqvImp
Tabla 3.2 Operadores
3.2ENTORNO VISUAL C++
Este entorno fue utilizado para desarrollar la DLL que sirvió como nexo para transferir
datos desde los puertos hasta el entorno de VB, por tanto es apropiado enunciar una breve
descripción de este entorno.
3.2.1 Descripción del entorno de Visual C++
Este entorno tiene sus bases en las Clases de la Fundación de Microsoft o MFC (Microsoft
Foundation Class), por lo tanto este ambiente genera código en C que es utilizado por el
76
CAPITULO m
MFC para llamar a las Funciones del API (Application Programming Interface) o Interfaz
de Programación de Aplicaciones.
Las funciones API son las llamadas sin procesar proporcionadas por el sistema operativo.
Desde VC++ se puede invocar un AppWizard para seleccionar algunas de las funciones
básicas.
Un entorno VC++tiene las siguientes partes:
Proyect Workspace: Provee la descripción de un proyecto, ofrece cuatro diferentes vistas,
recursos, apoyo de información de las clases.
Posee ventanas de redacción, extiende los resultados en las diferentes ventanas cuando se
edita y se corre la aplicación. En VOH- se pueden presentar los siguientes tipos de
proyectos:
MFC AppWizard (.EXE): Una aplicación autosuficiente con su GUI propio,
desarrollado con el MFC. VC++ automáticamente crea la estructura y los archiva con las
clases apropiadas y agrega los archivos al proyecto.
MFC AppWizard (.EXE): Un enlace dinámico de librerías desarrollado con el MFC. Al
igual que el punto anterior VC++también los agrega al proyecto.
Custom AppWizard: Una modificación Custom al MFC estándar del AppWizard.
OLE ControlWizíird: Un Control OLE (OCX) desarrollado con el MFC. VC++ crea
automáticamente los archivos de estructura con las clases apropiadas y los agrega al
archivo del proyecto.
Visual C-H- usa el MFC para desempeñar todas las tareas estándar de Windows, dejando el
desarrollo para partes especificas y únicas del programa.
77
CAPITULO III
Dentro del VC++, el AppWizard desarrolla las siguientes partes:
El proceso empieza estableciendo si un documento único (SDI) o el documento de interfaz
múltiple (MDI) es deseado. En esta etapa el AppWizard también impulsa el idioma
preferido natural.
Cualquier apoyo de la base de datos es especificado, esta fuente de datos puede ser ODBC
o los datos de acceso de objetos (DAO),
Visual C-H- utiliza un compilador C/C-H- para traducir el código de alto nivel a código
objeto.
3.2.2 Fundamentos de programación
Visual C-H- utiliza como leguaje de programación al C o C++, este ambiente al igual que
Visual Basic posee una iníerfaz amigable al usuario, pero la compilación es diferente, pues
cada vez que se ejecuta un programa, este entorno genera al mismo tiempo los códigos
objeto, los del C o C-H- y por su puesto los ejecutables.
En C-H- a diferencia del Visual Basic se utiliza la Programación Orientada a objetos (OOP),
que es superior a la programación estructurada en muchos aspectos y como la OOP es la
base de programación del Visual C-H-, a continuación se describe algunos conceptos
fundamentales de la misma.
El concepto de programación orientada a objetos (OOP) no es nuevo, lenguajes clásicos
como SmallTalk se basan en ella. Dado que la OOP. se basa en la idea natural de la
existencia de un mundo Heno de objetos y que la resolución del problema se realiza en
términos de objetos, un lenguaje se dice que está basado en objetos si soporta objetos como
una característica fundamental del mismo.
78
CAPÍTULO ITI
El elemento fundamental de la OOP es, como su nombre lo indica, el objeto. Podemos
definir un objeto como un conjunto complejo de datos y programas que poseen estructura y
forman parte de una organización.
Esta definición especifica varias propiedades importantes de los objetos. En primer lugar,
un objeto no es un dato simple, sino que contiene en su interior cierto número de
componentes bien estructurados. En segundo lugar, cada objeto no es un ente aislado, sino
que forma parte de una organización jerárquica o de otro tipo,
ESTRUCTURA DE UN OBJETO
Un objeto puede considerarse como una especie de cápsula dividida en tres partes:
1 - RELACIONES
2 - PROPIEDADES
3 - MÉTODOS
Cada uno de estos componentes desempeña un papel totalmente independiente:
Las relaciones permiten que el objeto se inserte en la organización y están formadas
esencialmente por punteros a otros objetos.
Las propiedades distinguen un objeto determinado de los restantes que forman parte de la
misma organización y tiene valores que dependen de la propiedad de que se trate. Las
propiedades de un objeto pueden ser heredadas a sus descendientes en la organización.
79
CAPÍTULO III
Los métodos son las operaciones que pueden realizarse sobre el objeto, que normalmente
estarán incorporados en forma de programas (código) que el objeto es capaz de ejecutar y
que también pone a disposición de sus descendientes a través de la herencia.
POLIMORFÍSIMO
Una de las características fundamentales de la OOP es el polimorfismo, que no es otra cosa
que 3a posibilidad de construir varios métodos con el mismo nombre, pero con relación a la
clase a la que pertenece cada uno, con comportamientos diferentes. Esto conlleva la
habilidad de enviar un mismo mensaje a objetos de clases diferentes. Estos objetos
recibirían el mismo mensaje global pero responderían a él de formas diferentes; por
ejemplo, un mensaje "+" a un objeto ENTERO significaría suma, mientras que para un
objeto STRING significaría concatenación ("pegar" strings uno seguido al otro)
CLASES
El concepto de clase está unido al de objeto; las clases son para los objetos lo que los tipos
para las variables en PASCAL. De hecho, la declaración de una clase es en muchos
lenguajes una declaración de tipo, y los objetos de esa clase se obtienen igual que el resto
de variables de sus tipos.
En general, una clase es un conjunto o grupo que tienen atributos comunes. En términos de
programación, una clase es un conjunto de objetos que comparten estructura y
comportamiento comunes.
80
CAPITULO TTI
3.2.3 Elementos del lenguaje
3.2.3.1 Constantes
Se caracterizan porque no cambian su valor durante la ejecución del programa. Estas
constantes son del tipo: Integer, floating-point y character. Una constante es declarada
usando "const" y asignando un valor a ella.
Ej. const invalorl=22;
3.2.3.2 Variables
Es el lugar donde se almacenan determinados valores cuando el programa es ejecutado. En
C estas variables son declaradas al inicio, sin embargo, en C-H- no importa donde las
declare.
Estas variables son del tipo: Integer (int), floating point (float), doble-precision (double and
long double) y character (char) y otros derivados.
Ej, float totaí_sum;
intx, y;
double a,b,r;
char A;
CAPITULO ITI
3.2.3.3 Tipos de datos y rangos
TIPO
IntFloatDoublelong doubleCharUnsigned charshort intLongUnsigned intUnsigned long
TAMAÑO(Bytes)
24810112424
RANGO
-32,768 a32,7673.4 10'JS a 3.4 IQ™
1.7 1 0'308 a 1.7 1030K
S^lO^aS^lO4 9 3 2
-128 a 127O a 255
-32,768 a 32,767-2,147,483,648 a -2,147,483,648
0 a 65,5350 a 4,294,967,295
Tabla 3.3 Tipos de datos en C/C-H-
Operadores.- Los operadores de C y C++ son los siguientes:
TIPO | OPERACIÓN
Asignación
Aritmético
Relación
Lógicos
IgualdadSumaRestaMultiplicacióndivisióndivisión parteenteraSumaRestaMultiplicaciónDivisiónParte enteraMenor queMayor queIgual aNo es igual aMenor o igual aMayor o igual aANDORNOT
OPERADOR
*
% =
*
>
&&i ti i
iTabla 3.4 Operadores
CAPITULO III
3.3DLLs (DYNAMIC LINK LIBRARY)
Las DLLs (Dynamic Link Library) ó ";LÍBRETEOS$£ EÜJACE&'wáMco_" son un tipo especial
de archivos que contienen funciones y recursos que están disponibles para todas las
aplicaciones de Windows.
3.3.1 Descripción de las DLLs
Las referencias a funciones o recursos contenidos en una DLL se desarrollan en tiempo de
ejecución (dinámicamente) mucho mejor que en tiempo de encadenamiento (estáticamente)
El uso de las DLLs le permite a sus aplicaciones:
> Compartir una sola copia de código y recursos entre algunas aplicaciones.
^- Configurar fácilmente su aplicación para diferentes productos.
V Recuperar fácilmente su aplicación
>- Administrar proyectos complejos
5* Mejorar funciones independientemente del lenguaje de programación
3.3.2 Cargando una dll
Windows provee dos de métodos para cargar una DLL en la memoria:
3.3.2.1 Carga implícita
Windows carga la DLL conjuntamente con el primer programa Cliente y lo enlaza antes
que el Cliente comience la ejecución.
El método implícito de cargar una DLL ofrece la ventaja de simplicidad. El Cliente no
requiere ningún esfuerzo extra de programación y puede llamar la biblioteca de funciones
83
CAPITULO in
como si ellas funcionaran en tiempo normal de ejecución. Sin embargo, la carga implícita
acarrea dos limitaciones:
1. El nombre del archivo de biblioteca debe tener una extensión .DLL
2. Debe enumerar toda una lista de funciones DLL que el Cliente llama a la sección
IMPORTS del Cliente en el archivo Módulo de definición, o vincula al Cliente con
una librería de importación.
La carga implícita es mejor cuando un Cliente siempre requiere por lo menos un de
procedimiento en la librería, desde Windows automáticamente carga la librería con el
Cliente. Si el Cliente no requiere siempre el servicio de la librería, entonces el Cliente debe
escoger un tiempo de ejecución entre varias librerías.
3.3.2.2 Carga explícita
Windows no carga las DLLs hasta que el primer Cliente explícitamente lo pida durante la
ejecución.
Para cargar explícitamente una DLL, el Cliente no requiere enlazarse con una librería de
importación, ni debe el archivo DLL tener una extensión de .DLL. La carga explícita
involucra tres los pasos en que el Cliente llama a las funciones API de Windows;
1. El Cliente llama a LoadLibrary para cargar la DLL
2. El Cliente llama a GetProcAddress para obtener la dirección de cada función DLL
que lo requiera.
84
CAPITULO ni
3. Cuando termina con la DLL, el cliente llama a FreeLibrary para descargar la DLL
desde la memoria.
3.3.3 Búsqueda de un archivo DLL
Para cargar una DLL, implícitamente o explícitamente, Windows busca el archivo DLL en
los siguientes directorios en el orden mostrado:
1. El directorio actual
2. El directorio de Windows, que contiene WIN.COM
3. Eí directorio de sistema de Windows, que contiene los archivos sistema tal como
GDI.EXE
4. El directorio donde el programa de Cliente radica
5. Los directorios listados en la ruta de entorno de trayectoria
6. Los directorios mapeados en una red
Si Windows no ubican la DLL en ninguno de estos directorios, entonces el usuario es
indicado con un mensaje indicando que la mencionada DLL no se encuentra.
3.3.4 Construcción de una DLL
Una DLL puede ser construida o desarrollada en lenguajes de programación tales como:
C/C++ MASM, o FORTRAN.
3.3.4.1 Construcción en MASM
Una DLL tiene requerimientos adicionales de programación para que se ejecute
normalmente las librerías.
CAPITULO III
3.3.4.1.1 CÓDIGO DE UNA DLL
El código en una DLL depende de la exportación o no-exportación de funciones.
Las funciones Exportadas, se definen en la sección EXPORTS del archivo MODULO DE
DEFINICIÓN, y son públicas las rutinas que sirven a programas Clientes.
Las funciones no-exportadas proveen- apoyo interno privado para los procedimientos
exportados. Ellos no son visibles al Cliente.
Bajo Windows, una rutina que va a ser exportada debe ser llamada como un procedimiento
lejano (Far). Las rutinas DLL pueden usar cualquier convención de llamado, el que usted
desee, pero debe advertir al visitante que asuma la misma convención.
Los siguientes procedimientos son los necesarios para realizar una DLL:
> Un procedimiento de entrada
^ Un procedimiento de terminación
> Un código especial de prologue y epílogo
3.3.4.1.2 EL PROCEDIMIENTO DE ENTRADA
Una DLL, como cualquier programa basado en Windows, debe tener un procedimiento de
entrada. Windows llama el procedimiento de entrada únicamente cuando se carga por
primera vez la DLL, pasando la siguiente información a los registros:
>- DS contiene las librerías de la dirección del segmento de datos
>• DI retiene la manija de ejemplo de la librería
V CX retiene la pila de la librería clasificada en bytes
86
CAPITULO ITT
Sin embargo, Las funciones API de Windows destruyen todos los registros excepto DI, SI,
BP, DS, y el indicador de pila. Para conservar los contenidos de otros registros, su
programa debe gravar los registros antes de un llamado API y los restaura después.
Esta información corresponde a los datos proveídos a una aplicación. Una DLL se cargará
solo una vez en la memoria.
El procedimiento de entrada no necesita registrar la dirección del segmento de datos.
Windows automáticamente asegura que cada rutina exportada en el DLL tenga acceso al
segmento de datos de la librería.
3.3.4.1.3 EL PROCEDIMIENTO DETERMINACIÓN
Windows mantiene una DLL en la memoria hasta que el último programa Cliente termine
o se descargue explícitamente la librería. Cuando se descarga una DLL, Windows primero
llama al procedimiento de terminación de la biblioteca. Esto permite a la DLL volver los
recursos y hacer cualquiera de las operaciones necesarias de limpieza antes que Windows
descargue la librería desde la memoria.
El procedimiento de terminación acepta un parámetro único, que puede tener uno de dos
valores. Estos valores se asignan a las siguientes constantes simbólicas en el archivo
WINDOWS.INC. ubicadas en el subdirectorio LIB:
> WEP_SYSTEM_EXIT (el valor 1) indica que Windows lo cierra
> WEP_FREE_DLL (el valor 0) indica a la librería que el último Cliente ha
terminado o ha llamado a FreeLibrary, y Windows descarga la DLL.
CAPÍTULO TTT
3.3.4.1.4 Código de Prólogo y Epílogo
En esta sección de códigos, es donde se realiza la rutina a ser exportada. Esta rutina debe
estar situada entre un prólogo y un epílogo que son sentencias propias del MASM.
3.3.4.2 Construcción en Lenguaje C/C++
Para realizar una DLL en C/C++, ésta consta de tres requerimientos:
V Archivo de cabecera windows.h
>- Función LibMain
V- Procedimiento de salida a Windows VVEP (Windows Exit Procedure)
E! archivo de cabecera windows.h es requerido por cualquier aplicación de Windows, para
lo cual en el código de la DLL debe editar la siguiente sentencia.
# include <H>indow$.h>
El segundo requerimiento LibMain, es similar a la función main de un programa de C/C++
o a la función Win Main de un programa Windows.
Cuando Windows carga una DLL, se ejecuta el código de la función LibMain, realizando
así cualquier inicialización requerida por la DLL.
La función LibMain es el punto de entrada de la DLL. Su función es simplemente liberar el
segmento de datos de la librería que por defecto es fijo.
La función LibMain, retorna un 1 indicando que la DLL se ha inicializado con éxito. En el
caso de haber cualquier inicialización adicional, si alguna de ellas no fuera satisfecha,
LibMain retornará un O, para notificar al programa principal que la DLL no ha podido
cargarse con éxito.
CAPITULO III
El tercer requerimiento, WEP, es llamado por Windows en el momento en que finaliza el
último programa Cliente que esté utilizando la DLL, o bien cuando Windows finaliza. En
este momento Windows libera la memoria ocupada por la DLL.
En C la función WEP tiene un solo parámetro que no se utiliza y siempre retorna un valor
1, lo que indica que suceda lo que suceda, siempre podremos salir de la DLL.
Para desarrollar una DLL en C, se debe seguir procedimientos similares para realizar un
programa en C. Es decir, se escriben los archivos de cabecera (archivos.h), archivos con la
definición de las funciones (archivos.c ó .cpp), archivo de definición de módulos
(archivo.def).
El paquete que pueden utilizar para realizar las DLLs en C, es el Visual C-H- porque ofrece
muchas facilidades para su realización,
Construcción de una DLL en C-H- para Lectura y Escritura de Puertos/
Extern HANDLE hlnstDLL;
// Funciones prototipo
# ifdefj3plusplus
extern"C" {
# endif
int FAR PASCAL^export Medir(unsigned PUERTOE, int medida);
int FAR PASCALjíxport Enviar(unsigned PUERTOS, int vcontrol);
# ifdef_cplusplus
89
CAPITULO in
# endif
# include <windows.h>
# include <conio.h>
HANDLE hlnstDLL;
int FAK PASCAL LibMain(HANDhInstance, WORD wHeapSize, LPSTR pszCmdLine);
{
hlnstDLL — hlnstance;
if (wtieapSize 1= 0)
UnlockData(O);
return (1);
}
int FAR PASCAL__export Medir(unsigned PUERTOE, int medida);
{
medida - Jnp (PUERTOE);
return (medida);
íint FAR PASCAL_export Enviar (unsigned PUERTOS, int vcontrol);
{
int salida;
salida = _outp (PUERTOS, vconírol);
return (vcontrol)
90
CAPITULO TTT
Declaraciones para generar el archivo "Módulo de definición"
LIBRARY loport //Esta sentencia declara a un archivo como extensión .dll
DESCRIPTION "Descripción breve "
EXETYPE WINDOWS
SEGMENTS
WEPSEG PRELOAD FIXED
CODEPRELOAD MOVEABLE DISCARDABLE
DATA PRELOAD MOVEABLE DISCARDABLE
HEAPSIZE 4096
' Aquí se indican las variables en las cuales se transfieren los datos
EXPORTS
WEP @1 RESIDENTNAME; nombre residente en memoria
Medir @2
Enviar @3
91
CAPITULO III
Construcción de una DLL en C para Lectura y Escritura de Puertos
# include <windows.h>
# include <dos.h>
# define EXPORTAPI_far_pascal_export_loads
/
FUNCIÓN:
LibMain (HANDLE, WORD, WORD, LPSTR)
PROPOSITO: Llamada por LIBENTRY, la cual es llamada por Windows
cuando la DLL es cargada
int EXPORTAPI LibMain(HANDLE hModule, WORD wDataSeg, WORD cbHeapsize,
LPSTR IpszCmdLine);
hModule;
wDataSeg;
cbHeapSize;
1 pszCmdLine:
return 1;
}
92
CAPITULO III
/**** SECCIÓN DE PROCEDIMIENTOS DE SALIDA DE LA DLL ****/
VOTO EXPORTAPI WEP (int bSysíemExit);
bSystemExit;
/*** SECCIÓN DE CODIFICACIÓN DE LAS FUNCIONES PROTOTIPO ***/
VOID EXPORTAPI WritePort(int x, int y);
{
outportb(x, y);
}int EXPORTAPI ReadPort(int x);
{
unsigned char valor;
int rs;
valor = inportb(x);
rs — valor;
return(rs);
93
PIT
DEL
CAPITULO IV
DESARROLLO DEL SOFTWARE
En este Capítulo se expondrá como se definió el problema del tema a desarrollarse, que
tipos de lenguajes de programación se utilizaron para ¡a realización de la misma. Se explica
como se realizó el software, es decir, su estructuración, diagramas de bloque, etc.
Finalmente este Capítulo termina con las posibles aplicaciones que tendría este software.
4.1 DEFINICIÓN DEL PROBLEMA
Una vez planteado el tema "Analizador de Puertos para PCs" que surgió del análisis de
las necesidades vistas en el Capítulo I, se procedió a la definición del problema, para lo cual
se hecho mano de los objetivos presentados por una parte, y por otra parte, por contar con
las herramientas de programación necesarias para la realización del presente tema.
A primera vista el desarrollo del software resultaba sencillo, pues se podía realizar
trabajando a bajo nivel, es decir, utilizando lenguaje de máquina cuyo lenguaje de
programación es el "Assembler", con el mismo que tenía acceso directo a los Puertos de
E/S que poseen las PCs, pero para que un programa desarrollado en lenguaje de máquina
corra o se ejecute eficientemente depende del tipo de arquitectura de los microprocesadores
presentes en la PCs, y además este tipo de lenguaje de programación utiliza muchas
instrucciones (una por línea) para realizar un pequeño evento.
CAPITULO IV
Este fue uno de los problemas por el cual no se optó por utilizar este tipo de lenguaje de
programación, y otro íue porque se estaba olvidando de uno de los objetivos planteados, el
mismo que decía, que este programa debía desarrollarse en un entorno de Windows 95 y
por tanto debía presentar una interfaz amigable al usuario y por esta razón se optó por
desarrollar este programa de software en Visual Basic 4.0 cuya abreviación es VB, la cual
será utilizado de aquí en adelante, y el por que se prefirió este entorno se verá
posteriormente en este mismo Capítulo.
Una vez definido el entorno el que se iba a realizar el software, se presentó un problema,
VB no tiene acceso a bajo nivel a menos que utilice controladores personalizados externos
a VB cuya extensión son los archivos (.vbx). Este problema se solucionó utilizando una
DLL (cuya descripción se indica en el Capítulo III), misma que servirá como nexo o
interfaz entre el VB y el acceso a los Puertos a bajo nivel.
Entonces apareció otro problema, el investigar como se crean las DLLs, en que lenguajes se
pueden implementar, como se encadenan y en que entornos funcionan. Una vez empapado
del tema sobre las DLLs se intentó realizar la DLL en lenguaje Assembler, el cual no tuvo
éxito debido a que VB no lo reconoció como tal. Afortunadamente se encontró una DLL ya
realizada, que había sido utilizada como parte de un tema de Tesis de Postgrado realizado
por el Ing. Miguel Hinojosa. En esta tesis, ésta DLL era utilizada para la adquisición y el
envió de datos de un determinado Puerto.
Gentilmente el mencionado ingeniero me proporcionó dicha DLL y junto con ella la
documentación respectiva, es decir como fue realizada. Esta DLL fije realizada en un
entorno de Visual C-H-, y por este motivo es que se da una breve descripción sobre este
entorno en el Capítulo III de la presente tesis.
CAPÍTULO IV
El nombre de la DLL proporcionada es "Ioport.dll", y como ésta DLL fue realizada en
Visual C-H- de 16 bits, entonces para que tuviera total compatibilidad con el VB, se hizo
las pruebas respectivas en el Visual Basic 4.0 de 16 bits obteniéndose los resultados
esperados. En vista que se obtuvieron los resultados esperados en las pruebas de
transferencia, entonces se procedió ai desarrollo de este software que se describirá
detalladamente más adelante.
El archivo ejecutable de este programa se le denominó "Puertos.exe", el mismo que
procede de la compilación del archivo proyecto "Puertos.vbp" y a su vez este archivo de
proyecto está constituido de varios módulos denominados formularios y cuya extensión es
(.frm), también los módulos con extensión (.bas) son parte del archivo proyecto. De esta
manera se ha dado la definición del problema propuesto en el Capítulo I.
4.2SELECCION DE LOS LENGUAJES DE PROGRAMACIÓN
Luego de haber definido el problema, y además de revisar las descripciones de los
lenguajes de programación y las DLLs propuestas en el Capítulo III, se procede a describir
en este punto por que se eligió a VB como herramienta para el desarrolló del presente
trabajo y también el por que no se optó por los otros entornos similares, los mismos que
daban los mismos resultados.
97
CAPITULO fV
Se seleccionó a VB por las razones expuestas a continuación:
> Utiliza como lenguaje de programación el Basic, el mismo que he utilizado en
muchas aplicaciones durante mi carrera y por tanto he aprendido su modo de
programación.
V Por su disponibilidad en el lugar de trabajo "Laboratorio de Computación del
ICB" donde se desarrolló el presente software.
> VB presenta interfaces gráficas amigables conocidas al usuario, que funcionan en el
entorno de Windows 95.
> VB ocupa menos espacio en disco duro (40 MB Versión de 16 bits) como mínimo,
en comparación con el Visual C++ que requiere en disco duro de 200 MB como
mínimo y 500 MB para que funcione óptimamente.
V VB es un lenguaje Orientado a Eventos, (una orden desencadena en algún evento o
eventos). Además por ser un lenguaje de alto nivel es compatible a cualquier
arquitectura de microprocesadores existentes.
V VB trabaja con un interprete y un compilador, donde él interprete da una respuesta
rápida y ayuda a detectar errores, mientras que el compilador transforma a
ejecutable el proyecto que una vez haya sido terminado y una sola vez a diferencia
del C o C-H-.
Ahora, no se eligió realizar el programa en lenguaje Assembler por lo expuesto en la
definición del problema.
Asi mismo, no se optó por el Visual C++ por lo expuesto anteriormente y porque este
entorno utiliza para su programación el lenguaje C o C++, lenguajes sobre los cuales poseo
CAPITULO rv
poco dominio. No obstante para el desarrollo de las DLLs se recomienda realizarlo en
Visual C++ pues presenta facilidades como por ejemplo el WEP (Windows Exit
Programm) incorporado, además las rutinas que realizan las DLLs no son complicadas
como para que los programadores tengan un dominio del C/C-H-.
En resumen para el desarrollo de este programa se utilizó al VB para las interfaces gráficas
y Visual C++ donde se desarrolló la DLL (Ioport.dll).
4.3 DESARROLLO DEL PROGRAMA "ANALIZADOR DE PUERTOS"
El desarrollo consta de las siguientes partes:
> Estructura del programa
>• Programación por formularios
> Diagrama de bloques del funcionamiento del programa
> Descripción del digrama de bloques
4.3.1 Estructura del programa
Luego de diversas pruebas con la DLL (Ioport.dll), el mismo que constó de la transferencia
de datos desde los Puertos hasta el VB y viceversa, se procedió a desarrollar el programa.
Como se expuso anteriormente, los programas realizados en VB se denominan proyectos y
sus archivos tienen extensión (.vbp), a su vez, estos proyectos están constituidos por
módulos denominados formularios cuya extensión de sus archivos es (.frm) y dentro de
99
CAPÍTULO IV
cada formulario los programas son divididos en procedimientos Sub o Function donde se
editan los programas.
Un formulario es una ventana donde se colocan los diferentes controles, los cuales
obedecerán a algún mando para desencadenarse en un evento en particular.
Los módulos cuya extensión es (.bas) también son parte de los proyectos, en estos módulos
se realiza las declaraciones, es decir, se declaran las variables globales, de tipo y por su
puesto las funciones que contienen a la DLLs. Es así como en la sección
DECLARACIONES GENERALES, se procedieron a declarar a la DLL (Ioport.dll) como
sigue:
Declare Function Medir Lib "Ioport.dll" (ByVal PUERTOE As Integer, ByVal
medida As Integer) As Integer
Con esta declaración, cuando el programa sea ejecutado permitirá leer un dato desde un
puerto direccionado por la variable PUERTOE y cuyo contenido regresa en la variable
medida, este contenido también podemos obtener en la variable Med¡r(x,y) previamente
declarada como Integer. A continuación se ilustra un ejemplo de su funcionamiento:
Sea la variable Leer = Medir(S88,medida)
Nótese que la dirección de la cual deseamos leer el contenido del puerto esta en formato
decimal, esto se debe a que en Basic todos los datos se manejan en este formato.
U)0
S«F.
CAPITULO TV
Si queremos ver el dato almacenado en la variable Leer, basta con utilizar la sentencia
Print Leer, para observar esta información en el formulario, luego de la ejecución. La
sentencia anterior accesa al puerto paralelo de salida, cuya dirección es 378H, del cual
obtiene su contenido.
La declaración para escribir un dato en algún puerto es la siguiente:
Declare Function Enviar Lib "Toport.dH" (ByVal PUERTOS As Integer, ByVal
vcontrol As Integer) As Integer
Esta declaración luego de su ejecución permite escribir un dato en un puerto, cuya
dirección esta dada por la variable PUERTOS y cuyo contenido lo lleva la variable
vcontrol. Finalmente todo lo mencionado antes puede interpretarse de mejor manera en la
Figura 4.1:
Entornode VB
-p-DLL
-4 1 -J_±
Aolicaciones
Figura 4.1 Funcionamiento de la DLL
101
CAPITULO IV
Nótese que hasta el momento solo hemos leído o escrito el dato en un solo puerto, pero
como necesitamos leer un bloque de puertos, entonces se realizó un bucle, el cual activa a
la DLL cada vez que lo requiera, a su vez esta DLL responde de forma inmediata.
4.3.2 Programación por Formularios
4.3.2.1 Formulario "LECTURA DE PUERTOS"
A continuación en el formulario llamado LECTURA DE PUERTOS se coloca un control
o caja de texto "TextBox", y en uno de sus eventos "Load" se programa el bucle mediante
un lazo For...Next, al ejecutarlo, esta caja de texto muestra un rango de contenidos
determinados por la dirección inicial y final en el lazo. Esta caja de texto solo muestra los
contenidos en forma vertical, no permitiendo insertar en la misma línea otras indicaciones o
rótulos adicionales como por ejemplo.
Dirección en
Hexadecimal
Contenido en
hexadecimal
Contenido en
Binario
Contenido en
ASCII
La presentación anterior es el objetivo de cómo debe mostrarse los datos en la lectura de
puertos.
Dado que el control TextBox no cumple con el objetivo señalado se busca otro tipo de
control, encontrándose que el Control Grid o Grilla cumple con estos requerimientos. Este
102
CAJPTTULO FV
control posee métodos como el Addítem, el cual satisface el objetivo planteado, también
presenta celdas donde se puede manipular independientemente los datos.
Realizando un pequeño programa en el evento Load de la grilla se obtiene la siguiente
presentación como muestra la Figura 4.2.
Figura 4.2
A continuación se da opción al usuario para que ingrese un rango de puertos que desee
observar, para lo cual se utiliza dos controles o cajas de texto con sus respectivas etiquetas,
en las cuales se ingresa las direcciones inicial y final de un determinado bloque de puertos a
observarse. En la Figura 4.3 se muestra estos controles.
Inicie! ' J378
Final J37A|
Figura 4.3
103
CAPITULO TV
Hasta este instante, el programa aún no puede ejecutarse, pues no existe un botón de
comando que desencadene el evento de lecturas de los puertos, por ¡o tanto se coloca en el
formulario un botón de comando llamado "Mostrar", en cuya sección de código asociado
al evento Click se edita el programa de prueba dentro del procedimiento
Prívate Sub cmdmostrar_Click(), el mismo que realiza las siguientes acciones:
s* Toma los datos ingresados en formato hexadecimal en las respectivas cajas de texto.
> Transforma los datos tipo texto a valor, y estos a su vez los cambia a valores decimales.
> Verifica que los valores ingresados tengan formato hexadecimal.
> Restringe el límite superior de la dirección ingresada, para evitar el desborde de la
capacidad de la grilla.
>- El bucle recoge los valores inicial y final.
> Dentro del bucle lee un dato a la vez enviado por la DLL y lo presenta en las respectiva
celdas de la grilla.
> Como el dato retornado está en formato decimal, realiza la conversión de décima! a
hexadecimal, de decimal a binario, de decimal a Ascii y los ubica en sus respectivas
celdas como se muestra en la Figura 4.4.
104
CAPITULO TV
ASCU
oo : 00111101
Figura 4.4
s* Ubica estos datos fila tras fila en la grilla.
V* El bucle repite este suceso de acuerdo al bloque ingresado, si el bloque es demasiado
grande, inmediatamente se activa una barra deslizadera vertical o Scroollbars como se
muestra en la Figura 4.5.
-
*te*&5001300140015
00160017
0018
0019
001 A001 B
Coftterída ert
9020
"'Vi-FF66$200FFFFFF \ü £¥t
BsiSfto10010000"00100000íííiíin
TíiÍQaiíoidii'ooToooooooboniTTTnni 111 ninmn
Üoníemck) sn •*•ASPÍ
1
Vf ~12
yy
y ^
Figura 4.5
105
CAPITULO IV
El algoritmo descrito antes, se puede resumir en el siguiente diagrama de bloques,
Figura 4.6.
ini <r inicialfin 4- final
Dir <r Hex(i)Lecdec <- Medir(ini, medida)Lectu <- Hex(lecdec)Bitr <- conversion(lecdec)Ascii <- Asc(lecdec)
Dir, lecdec, lectu, bits, Asccii
Figura 4.6
106
CAPITULO IV
Ahora si el usuario desea ver otro bloque, se implementa en el formulario un botón de
opción que se le denominó "Otro Bloque", que al activarlo, habilitará nuevamente las cajas
de texto, las mismas que ílieron deshabitadas cuando se mostró el primer bioque, entonces
el usuario podrá ingresar nuevamente las direcciones para un nuevo bloque.
Una vez ¡mplementada la grilla para que muestre las lecturas, se procede a poner accesorios
en la grilla como por ejemplo que muestre a cada instante la actividad del puerto, es decir,
que de un refresco y al mismo tiempo que muestre información de aquel puerto con solo
realizar el evento Click sobre el contenido o la dirección del puerto mostrado en las-celdas.
Para obtener el refresco o actualización de ios datos se utiliza el Control Timer, poniendo
en una de sus propiedades (Interval) parámetro de tiempo, es decir cada que tiempo
muestra el contenido del puerto. Este Timer está asociado con una etiqueta "Label", por
tanto mostrará cada cierto tiempo el valor actual del contenido en la etiqueta.
Para fines didácticos el parámetro de tiempo de refresco es de 0.25 de segundo, intervalo
con el cual se puede observar de mejor manera el cambio de los contenidos si es que
existen. Pero en realidad en algunos puertos el dato cambia en el orden de una milésima y
hasta millonésima fracción de segundo que son imposibles observar con la vista humana.
Para observar la información se utiliza otra etiqueta, y ambas etiquetas están contenidas en
un recuadro o "Frame".
Estos dos eventos están asociados con el evento Click de la grilla en cuyo procedimiento se
realiza la programación, cuyo procedimiento es Prívate Sub gr¡lla_Click().
Adicionalmente a estos eventos, también se muestran instrucciones al usuario.
107
CAPITULO TV
En la Figura 4.7 se muestra esta irnplementación.
tf ft
ouoo F6
Jffii"oooT
.¿5L"eT
J3QQ5_
tooo£'QGQT
imenio !
F9
íle
¡as. Éíeehd* áv n^ega^tun pataBLOQUE,
Figma 4 7
Finalmente para salir de esta aplicación, se implementa en el formulario un botón de
comando llamado "Cerrar", y en la sección de código asociado con el evento Click se edita
las siguientes sentencias: End para salir o Unload me para descargar el formulario.
El juego de los botones utilizados en este formulario, se muestra en la Figura 4.8.
CERRAfi
Figura 4.8
IOS
CAPITULO IV
Este formulario llamado LECTURA "DE PUERTOS está listo para anexarse a un
formulario padre MDl (Interfaz de Documentos Múltiples), el mismo que contendrá al
resto de formularios mediante un juego de menúes que será descrito más adelante.
Finalmente en la Figura 4.9, se muestra el formulario completo.
FíttoJ
7 Ott& Bloque
;
'
*
_,
ISÍM03F703F8
03F9
03FA
03FB
03FC
03FD
03FE
03FF
*
H^SSS17F00QÓ
™"03*""™
03
00
00
,
toHÉeodo 5n Coi tenido en.. 3,
onnm ioooooooo'OOOOOOQÓ
00000001 I
IffisssilIZZjIIOQOOOOOO
00000000
IfSíJffflStílón "" """ -""" • • - - • ^T - "*t • ""** " riOITfi'S'CkO"
, jPimfe sartal CORÍ1 ClWRx3} í 3 88
CEBRAT1
BÍOOUE,
Figura 4.9
109
CAPITULO IV
4.3.2.2 Formulario "ESCRITURA EN PUERTOS"
Este formulario tiene las mismas características que el formulario anterior, pero con ligeras
diferencias como son; en vez del botón de opción "Otro Bloque" se tiene un botón de
comando "Cambiar" cuyo evento es el de cambiar el contenido actual de un puerto. En
este formulario no se muestra refresco, en vez de esto se implementa una caja de texto que
sirve para que el usuario cambie el dato actual, esta caja de texto está asociado con el botón
de comando "Cambiar". La caja de texto para cambiar, se encuentra al lado derecho de la
etiqueta que muestra la información del puerto y están contenidos dentro de un recuadro o
Frame como se muestra en la Figura 4.10.
1
*£ri
0378
0379
037A
037B
037C
u: 70037E
037F
toftteftído ert
"7 41~FECFFFFFFFFFF
Cütíítridkj 6rt LísrjfentdcjíJtt -^
^w**-í
01000001 A
OÍÍ11111 I "-
jnqiioq ^^ ^ iiij_fmi" "*^
"TiTínn _™ 'y11111111 u
1Í111111 y
11111111 v " ^
-tflfuíKiawttri rea**!-*™
leerte paralelo ÍJPT1 de Salida j 4l|_ _ 3 Í _
fas ffechat de nsvegaos-rt pajaf íiífííE\iaefflr>5t
afi bizt un dsto
Figura 4.10
110
CAPITULO IV
Como se observa en la figura 4.10, en este formulario también se implementas
instrucciones para el usuario.
En este formulario la grilla utiliza dos eventos que son el Click y e! Doble Click. Con un
Click en cualquier celda se muestra la información del puerto y con doble Click en las
mismas celdas se cambia el dato actual en la caja de texto y luego de un "Enter" o
haciendo Click en el botón "Cambiar" se actualizan los datos en las celdas. Un evento
asociado con el Click, es el movimiento con las flechas de navegación para mostrar
información, es decir, para ver información, basta con hacer Click sobre las celdas o mover
las flechas de navegación. El formulario completo ESCRITURA EN PUERTOS se
muestra en la Figura 4.11.
teícíal
CAMB1AB
H^SS
0378
0379
037A
H37B
037C
037D
037E
037F
iSlí
" ^7F™~
EC^FFFF
'FF^rr
pp
Uñí?*"* iia-T***-^
01000001 _ A „ ' '
oíiífin " "_ i"v_J1101JOO 2" 'T*"imíi"i " y11111111 * y " ,
*TiiiniT "™^,11111111 "i)% r
^««ón Cantó*-
¡Piíeiio páratelei
t tPT) de Satina ' J41i '
r Instrucción**
Figura 4.Í1
111
CAPITULO TV
4.3.2.3 Formulario "LECTURA DE UN PUERTO"
Además de los dos formularios anteriores, se implementaron dos más; Un formulario
denominado "Lectura de un Puerto", el mismo que permite leer un solo puerto con
refresco o actualización del dato, luego de ingresar la dirección en la caja de texto, además
tiene una grilla con barra deslizadera vertical donde se puede observar las N muestras de
los contenidos de un puerto, y el número de muestras se ingresa en otra caja de texto. Este
formulario que también se anexara al MDI se muestra en la Figura 4.12.
Lecluía de un Puerto
IXson de
Dilección D"í " * í ,, íte lecíuta 1 '
Figura 4.12
4.3.2.4 Formulario "ESCRITURA EN UN PUERTO"
Este formulario está constituido de dos cajas de texto y una etiqueta. En la primera caja de
texto se ingresa la dirección del puerto donde se escribirá el nuevo dato. En la segunda caja
de texto se ingresa el dato a cambiarse y finalmente en la etiqueta se observa el dato
cambiado, además todos los datos se manipulan en formato hexadecimal.
112
CAPITULO TV
Este formulario se implemento para que el usuario manipule directamente a un determinado
puerto. El formulario completo se muestra en la Figura 4.13.
fl Esciitufa en un Puerto
HEXOireecíon (370
Nuevo '
+
cambiado
Figura 4.13
Los dos formularios están provistos de etiquetas con instrucciones para el usuario y un
botón de comando para cerrar la aplicación.
4.3.2.5 Formulario "CONTRASEÑA"
Existen dos formularios denominados Contraseña, los mismos que aparecerán antes de
que el usuario ingrese a cambiar el dato de algún puerto, sea este por bloques o en un solo
puerto. Se implementaron estos formularios por seguridad del sistema, es decir, solo
personas autorizadas que tengan el suficiente conocimiento acerca de los puertos tendrán
acceso al cambio de datos.
En vista de que estos formularios son similares, a continuación se muestra uno de ellos en
la Figura 4.14.
113
CAPITULO TV
-* CONTRASERA
Sí desea cambiar d cof>ten«ÍQ,tíep<t«&o- »ngte*e contmeítev Pefo'que sí eatnbía su contenido pitede dañar
*, Acepta* ¿arteelar j
Figura 4.14
Como se observa en la figura 4.14, este formulario está provisto de dos botones de
comando "Aceptar" y "Cancelar". También posee una caja de texto donde el usuario
ingresará la clave y una etiqueta la cual contiene un texto de advertencia.
4.3.2.6 Formulario "SISTEMA OPERATIVO"
Este formulario se anexará al proyecto final, el mismo que dará la información del sistema
en el cual está trabajando. Cabe mencionar que este formulario es anexado de los ejemplos
sobre llamadas a DLLs, presente en la sección ejemplos de VB y que por ser compatible al
tema también se lo anexó al MDI y por esta razón este formulario está inhabilitado, éste
formulario tiene su propio módulo de declaraciones para llamar a las diferentes DLLs. En
la Figura 4.15, se muestra dicho formulario.
114
CAPITULO IV
memoria y recurso*
CPtí, 48B íeon Eioprocesaác»Memorki libre; 16,265,216
Figura 4.15
4.3.2.7 Formulario "ACERCA DE"
Finalmente se implemento este formulario, en el cual se da la información sobre el autor del
software, año de realización, etc. En Figura 4.16, se muestra dicho formulario.
í por
\$m Reáael M, Joyo,res*?rv«ti<ís,
posible, aíft rfel
81 ^53 F<-«(aís paí.edu ¿c
Figura 4.1ÍÍ
115
CAPITULO IV
4.3.2.8 Formulario "PADRE (MDI)"
Este formulario está diseñado para contener a los formularios descritos anteriormente. Este
formulario se implemento mediante menúes desde donde dependiendo de la selección del
usuario, mostrará la pantalla, es decir, en su escritorio, las diferentes aplicaciones realizadas
y descritas antes.
Estos menúes se realizaron fácilmente en VB utilizando una herramienta llamada Editor de
Menús, donde simplemente se editan los diferentes nombres que irán en la barra de menúes
y así mismo, las diferentes opciones que irán dentro de las mismas. Para este formulario
principal denominado "ANALIZADOR DE PUERTOS", el mismo que servirá como
escritorio de trabajo, se requirió el siguiente diseño.
Analizar Puertos
116
CAPITULO rv
Información del Sistema
Ventana
Windows
Ayuda Contenido
El diseño de estas barras de menúes en el Editor de menús se observa a continuación en la
Figura 4.17.
117
CAPITULO IV
Editor de menús
nalizar-&Puerto$
mnu analizar
íhdeít
< A c e a r
Shsrteut: (Ninguno
Megofiai ositiorr j Q Nona
naliaar-ScPuertósEn fccBloques—ScLectura
••••^EscrituraUn&Puerto••••kLeclura
—KcEscritura
Qrl+L
Ctrl+E
Figura 4.17
Observe que "Ventana" no tiene opciones, es debido a que estos se carguen en tiempo de
ejecución, es decir, si se escoge la opción Lectura y luego Escritura de la opción "En
Bloque" en tiempo de ejecución al realizar un Click en "Ventana" se observará las dos
opciones con una de ellas activa. Como se muestra en las siguientes figuras.
118
CAPITULO IV
Figura 4.18
* 2 ESCRITURA EN PUERTOS;
Figura 4.19 ;•"'
A cada evento del menú se asocia un formulario, es decir, cuando el usuario realice un
Click en alguna de las opciones, se cargará un formulario que responda a esa acción.
Finalmente a este formulario Padre (MDI) se llamó "ANALIZADOR DE PUERTOS", el
mismo que servirá de escritorio a usuario para las diferentes actividades que realice éste. En
la Figura 4.20, se muestra dicho formulario.
119
CAPÍTULO rv
Figura 4.20
4.3.2.9 Formulario de "PRESENTACIÓN"
Existe un formulario llamado de Presentación, el mismo que se carga antes del formulario
principal o MDI, éste formulario está provisto de dos botones de comando "Continuar" y
"Salir", además tiene una etiqueta con texto de Bienvenida. Si el usuario elige continuar,
entonces ingresa al formulario principal desapareciendo este formulario. En la Figura 4.21,
se muestra dicho formulario.
120
CAPITULO IV
E Presentación
TFlWlflIMÍ.&.&2-X 3t i~ti-í 3.-&Í;*,
Figura 4.21
121
CAPITULO IV
4.3.3 Diagrama de bloques del funcionamiento del programa
En este punto se describe como funciona el programa cuando el usuario empieza a
manipularlo. Es así como en los siguientes diagramas de bloques (Figura 4.22) se detalla el
funcionamiento del programa ¡íAnalizador de Puertos".
Presentación
1y
Analizar_Puertos
irInformacióndel Sistema
PantallaPrincipal
Menúes
Ventana Ayuda
Figura 4.22n
122
CAPITULO IV
Figura 4.22b
123
CAPITULO IV
Informacióndel Sistema
Figura 4.22c
Contenido
Ayuda
Buscar Acerca Acerca de.
Figura 4.22d
124
CAPÍTULO IV
4.3.4 Descripción del diagrama de bloques
En la (Figura 4.22a) se tiene la primera parte del diagrama de bloques completo, dentro del
mismo se tienen las siguientes opciones:
Cuando el usuario ingresa al programa "Analizador de Puertos", se encuentra con una
Pantalla de Presentación, entonces el usuario debe tomar una decisión: Salir o
Continuar, si el usuario elige la opción Salir, entonces finaliza el programa, caso
contrarío, si el usuario elige la opción Continuar, entonces ingresa a la Pantalla Principal o
escritorio del Analizador.
Esta Pantalla Principal a su vez contiene cuatro categorías de menúes como son:
> Analizar_Puertos
V- Información del Sistema
> \entana
> Ayuda
En el menú Analizar Puertos, (Figura 4.22b) el usuario tiene la posibilidad de elegir la
opción Salir u optar por cualquiera de las tres alternativas siguientes:
V En Bloques
> Un Puerto
V Memoria.com
Si el usuario a elegido la opción Salir, inmediatamente finalizará el programa.
125
CAPÍTULO TV
En la opción En Bloques. El usuario podrá optar por dos opciones más, como son:
>- Lectura
s- Escritura
Si el usuario elige la opción Lectura, inmediatamente se mostrará sobre la pantalla
principal una ventana donde el usuario podrá observar los contenidos de los puertos por
bloques. Pero si el usuario elige la opción Escritura, inmediatamente se mostrará sobre la
pantalla principal una ventana donde el usuario podrá observar los contenidos de los
puertos por bloques y dentro de este bloque, el usuario elegirá cualquier puerto si desea
cambiar su contenido actual por uno nuevo.
En la opción Un Puerto, El usuario podrá optar por dos opciones más, como son:
>" Lectura
V Escritura
Si el usuario elige la opción Lectura, inmediatamente se mostrará sobre la pantalla
principal una ventana donde el usuario luego de ingresar datos que le piden en esta ventana,
observará el contenido de un solo puerto con actualización inmediata de los datos. Pero si
el usuario elige la opción Escritura, inmediatamente se mostrará sobre la pantalla principal
una ventana donde el usuario podrá específicamente cambiar el contenido de un solo puerto
a la vez.
126
CAPITULO IV
En el menú Información del Sistema. (Figura 4.22c) el usuario tiene la posibil idad de
elegir cualquiera de las cuatro alternativas siguientes:
> Windows
> CPU
> Vídeo
> General
Si el usuario elige la opción Windows, entonces observará en una ventana la versión del
Windows utilizado por e! sistema o del sistema operativo.
Si el usuario elige la opción CPU, entonces observará en una ventana el t ipo de procesador
que esta instalado en la PC, el GDI (Tnterfaces de Dispositivos Gráficos) y la utilización del
usuario.
Si el usuario elige la opción Vídeo, entonces observará en una ventana la configuración
actual del vídeo, los colores y el controlador utilizado.
Si el usuario elige la opción General, entonces observará en una ventana el tipo de mouse
instalado en la PC, el teclado, el lenguaje, etc.
En el menú Ayuda, (Figura 4.22d) el usuario tiene la posibil idad de elegir cualquiera de
las cuatro alternativas siguientes:
)" Contenido
V- Buscar Acerca de...
\- Acerca de...
127
CApnruLO rv
Si el usuario elige la opción Contenido, entonces ingresará a la pantalla principal de las
Ayudas del Analizador.
Si el usuario elige la opción Buscar Acerca de..., entonces ingresará a una pantalla de
búsqueda de algún tópico en particular sobre temas referentes al programa Analizador de
Puertos.
Si el usuario elige la opción Acerca de.... entonces ingresará a la pantalla donde está
impreso información acerca del autor del programa, el año de realización, donde fue
realizado, etc.
Finalmente el menú Ventnna se activa solamente cuando está cargado una o más ventanas
en la pantalla principal, esto es similar a cualquiera de las aplicaciones de Windows.
4.4 APLICACIONES DEL SOFTWARE
El presente software se aplicará en las siguientes áreas:
s- Como herramienta didáctica para asignaturas relacionadas con el tema, como por
ejemplo las Microcomputadoras, Interfaces paraMicrocomputadoras, y otras.
> Para estudiar el comportamiento de su PC durante su funcionamiento.
V Para Lectura/Escritura de tarjetas prototipo
)- Búsqueda y determinación de conflictos en el sistema.
V Mediante el puerto paralelo u otros, se puede controlar eventos externos a la PC (Ej.
Encendido y apagado de dispositivos, control de alarmas, etc.).
CAPITULO V
PUEBAS Y RESULTADOS
5.1 PRUEBAS CON EL PUERTO PARALELO LPT1
En el puerto paralelo LPTl a donde está configurada la impresora se realizaron varias
pruebas, obteniéndose los siguientes resultados:
En el puerto 37SH (Puerto de Salida), llamado también Registro de Datos, se observó en la
ventana denominada Lectura de Puertos del Analizador el contenido de dicho puerto como
OOH tanto cuando la impresora estaba apagada como cuando estaba encendida, y a su vez
esta no haya impreso nada, mas luego de que la impresora ha realizado alguna actividad
(impresión), el contenido del puerto 378H cambia a 04H tanto apagada como encendida.
En el puerto 379H (Puerto de Entrada), llamado también registro de Estado, (este puerto
utiliza los cinco bits más significativos como entradas), se observó en la ventana
denominada Lectura de Puertos del Analizador el contenido de dicho puerto como 7FH
(01111111) cuando la impresora estaba apagada y DF (11011111) cuando la impresora
estaba encendida i/o con papel. Esto quiere decir que el bit 7 (BUSY) cambia de estado de
O a 1 y el bit 5 (PE) cambia de 1 a O lo que indica que no existe papel en la impresora.
Es por esto que la impresora pedía papel, y el contenido se cambiaba a 77H (Ol í 10111), es
decir, el bit 3 (ERR) y el bit 5 (PE) cambiaron su nivel lógico.
130
CAPITULO V
En el puerto 37AH (Puerto de Entrada/Salida), llamado también registro de Control, (este
puerto utiliza los cuatro bits menos significativos como controles), se observó en la ventana
denominada Lectura de Puertos del Analizador el contenido de dicho puerto como ECH
(11101100) tanto apagada como encendida. El bit 4 que sirve como control para que e!
puerto 37AH funcione como Entrada o Salida. Todos estos resultados se obtuvieron en una
Impresora EPSON LQ - 2070.
También se realizó el mismo análisis para una impresora LÁSER JET 6P, los cuales
arrojaron resultados similares, pues funcionan bajo el mismo principio, claro esta que
existió pequeñas diferencias debido a que la impresora Láser tiene mas funciones que una
impresora matricial como la descrita anteriormente.
Finalmente en ambos tipos de impresoras se pudo observarse un cambio de contenidos en
el puerto 379H al apagarse la impresora, como sigue: DFH (11011111) -> BFH
(10111111)->7FH (01110111).
5.2PRUEBAS CON LOS PUERTOS SERIALES COM1/COM2
Se realizó el análisis respectivo en el puerto 3F8H llamado también puerto Serial. Para ser
más especifico se observó los contenidos en el bloque 3FSH a 3FFH, pues el puerto Serial
utiliza siete registros para su funcionamiento comenzando por el 3F8H que es el registro de
Tx/Rx de datos, y es que precisamente en este registro se observó el cambio de datos a
medida que se desplazaba el Mouse, es decir, desde el mouse se estaban enviando datos
131
CAPITULO V
hacia este registro, también se pudo observar en el Analizador que la velocidad del
desplazamiento del mouse era proporcional al cambio de datos en el mencionado registro.
5.3 PRUEBAS CON UNA TARJETA PROTOTIPO DE ADQUISICIÓN DE
DATOS
Estas pruebas se realizaron con una tarjeta de adquisición de datos denominada ADA10,
esta tarjeta es configurable para ocho registros o puertos, cada uno de ocho bits, donde
cuatro registros son ocupados para entradas o salidas Analógicas y los cuatro restantes son
ocupados para entradas o salidas Digitales. Es de notarse que de los cuatro registros sólo se
ocupan tres para usarlos como entradas o salidas, quedando el cuarto registro para ser usado
como control, es decir, las diferentes combinaciones de los tres registros anteriores que
funcionaran como entradas o salidas.
Las direcciones a las que se configura esta tarjeta son: 300H, 308H, 31 OH, 31SH que son
dependientes de la posición de los Jurnpers en la tarjeta.
Para esta prueba se utilizó la dirección 300H como dirección BASE (A partir de esta
dirección los puertos son utilizados para tarjetas prototipo). Por lo tanto la dirección para e!
control de los tres puertos analógicos es: BASE + 3 y para los tres puertos digitales es:
BASE+ 7.
A su vez a esta tarjeta se conecta un tablero de conexiones o pruebas, la cual tiene Leds
como indicadores y Switchs para la simulación de entradas o salidas de datos. Tanío la
132
CAPITULO V
tarjeta que se introducía en ¡a ranura tipo ISA como el tablero de conexiones se polariza
con la alimentación de la propia PC.
Estas pruebas constaron de las siguientes partes:
a) Prueba en el Analizador de Puertos con la tarjeta desconectada
Al observar los contenidos de los puertos en el rango 300H - 307H, se observó que estos
estaban vacíos, pues sus contenidos eran FFH.
b) Prueba en el Anal izador de Puertos con la tarjeta conectada (sin configurar)
De la misma manera se observó los ocho registros o puertos en la ventana de Lectura por
bloques del Analizador, claro está luego de reiniciar la maquina para que el BIOS
reconozca esta nueva tarjeta. A diferencia de la prueba anterior ahora estos registros ya
tenían contenidos flotantes diferentes de FFH, es así como se obtuvieron los siguientes
resultados:
PUERTO(BEX)
300301302303304305306307
CONTENIDO(HEX)
FF0000007F00FE7E
133
CAPITULO V
c) Prueba en el Analizador de Puertos con la tarjeta conectada (configurada)
A continuación se procedió a configurar la tarjeta para que los tres registros (304H, 305H y
306H) sirvieran como entradas o salidas digitales, para lo cual se escribió mediante
software (Ventana Escritura en Puertos) en la dirección Base + 7, es decir, 307H el
contenido de 82H. Este número configuraba como Puertos de Salida a las direcciones
304H y 306H y como Puerto de Ent rada la dirección 305H. En otras palabras si escribía
en cualquiera de ¡os puertos de salida, inmediatamente se reflejaba esta escritura en los
Leds indicadores del tablero de conexiones y por el contrario, si accionaba los Switchs que
iban hacia el puerto de entrada, inmediatamente observaba el dato en la ventana Lectura de
Puertos del Analizador. Cada combinación de los Switchs era un dato que leía el
Analizador mediante la DLL.
Si se escribe en la dirección BASE + 7 en número 92H se tiene a los tres puertos como
Entradas hacia la PC. De esta manera se termina satisfactoriamente las pruebas del
Analizador de Puertos con esta tarjeta prototipo arrojando resultados esperados y
conclusiones propias de este tema.
134
CONCLUSIONES Y RECOMENDACIONES
CONCLUSIONES Y RECOMENDACIONES
CONCLUSIONES
Una vez analizado todo el bloque de puertos, es decir, desde OOOOH hasta FFFFH se
encontró que en la actualidad los fabricantes de PCs utilizan un sin número de puertos a
partir del bloque 03FFH (el bloque más utilizado) para los nuevos servicios que dan a
los usuarios, ocupando así todo el bloque completo de puertos. En otras palabras, los
fabricantes están habilitando las direcciones más significativas del bloque superior de
los puertos, que hasta años atrás no eran frecuentemente utilizados.
Existen algunos puertos en los que el sistema no deja actualizar los nuevos datos, y por
más que se intente ingresar un nuevo dato a través de una de las funciones del
Analizador de Puertos, estos se mantienen con el mismo valor original. No obstante, en
algunos puertos si pueden cambiarse los datos para realizar alguna determinada
actividad al sistema.
Cuando se escribe en un puerto, en otras palabras, cuando se envía un dato a algún
determinado puerto, éste se escribe siempre y cuando dicho puerto esté configurado a
una tarjeta para que el dato sea retenido mediante los Latchs propios de ¡a tarjeta.
Entonces si se escribe un dato en un puerto no configurado, en el Analizador de Puertos
se observa que este dato se pierde debido a que no tiene donde mantenerse.
136
CONCLUSIONES Y RECOMENDACIONES
> En el analizador se pudo detectar el funcionamiento interno de la PC, el mismo que fue
evaluado al leer el estado de los temporizadores, es decir, si estos están realizando
determinadas actividades o no. De esta forma se podrá concluir a grosso modo sobre si
falla una determinada aplicación o es cuestión del funcionamiento interno de la PC.
Pues cuando el temporizador deja de funcionar unas milésimas de segundo, esto se
refleja en una paralización temporal de una actividad en particular que estuviese
realizando la PC.
>- Para ingresar a bajo nivel desde VB, se puede realizar de dos formas: utilizando una
DLL (que es el caso de esta herramienta) o utilizando los (VBX) que son controladores
externos a VB como por ejemplo el "loport.vbx". Luego de haber realizado los
respectivos análisis, se encontró que la DLL es más óptima para transferir los datos
desde los puertos al entorno de VB y viceversa, pues el procedimiento externo es una
pequeña rutina que se desencadena rápida y eficientemente.
> Pese a que VB tiene que usar un controlador externo (VBX) para accesar a bajo nivel
(que puede ser lectura o escritura de puertos), no obstante su interfaz gráfica es
excelente y amigable al usuario y su programación también es fácil y entendible en
comparación al Visual C++ que tiene un lenguaje de programación un poco confuso, y
cuya aplicación ocupa un espacio grande de memoria cuando ésta es instalada.
> A esta herramienta se lo podría utilizar como Driver o Controlador manual de
dispositivos externos como por ejemplo tarjetas prototipo u otras.
137
CONCLUSIONES V RECOMENDACIONES
RECOMENDACIONES
> Para un óptimo funcionamiento del programa al leer o escribir datos, y como esta
función se la realiza a través de la DLL, se recomienda tener como residente dicha DLL
en el directorio System de Windows.
^ Se recomienda que se utilice esta herramienta en Windows 95 con una configuración de
pantalla de 600 por 800 pixels para su mejor desenvolvimiento.
^ Para cargar esta aplicación a esta PC se recomienda utilizar los disquetes respectivos de
instalación, caso contrario se corre el riesgo de que esta aplicación no funcione
eficientemente debido a que no se instalan las DLLs en sus respectivos sitios.
> Para realizar las DLLs se recomiendo construirlos en Visual OH-, pues esta aplicación
es poderosa en este campo y además las rutinas externas de las DLLs son sencillas y
cortas, es decir, son semejantes a las funciones.
> Pese a que esta herramienta muestra un rango de puertos bastante amplia, se
recomienda observarlos por bloques pequeños para de esta forma optimizar el tiempo
de ejecución especialmente en máquinas que se encuentran en red.
138
BIBLIOGRAFÍA
BIBLIOGRAFÍA
1. Abel Peter, LENGUAJE ENSAMBLADOR Y PROGRAMACIÓN PARA PC IBM Y
COMPATIBLES, Tercera edición, Ed. Prentice Hall, México, 1996
2. Andrews Mark, APRENDA VISUAL C++, Ed. Me Graw Hill, España, 1996
3. Brey Barry, LOS MICROPROCESADORES DE INTEL 8086/8088, 80186, 80286,
80386, 80486, Ed. PrentceHall, México, 1994
4. Deitel H. M/ Deitel P. J COMO PROGRAMAR EN C/C++, Ed. Prentice Hall, segunda
edición, México 1995.
5. Gonzales Felipe, LOS BUSES DE LOS PCs, Revista Electrónica & Computadores,
Publicaciones CEKJT, No 13, 1994.
6. Halvorson Michael, APRENDA VISUAL BASIC YA, Ed. Me Graw Hill , España,
1996
7. Heyman Mark Steven, LA ESENCIA DE VISUAL BASIC 4, Ed. Prentice Hall,
México, 1996
8. Hinojosa Raza Miguel Ángel, CONTROL COMPUTARIZADO DE TEMPERATURA
DE UN CALDERO ASOCIADO A UN INTERCAMBIADOR DE CALOR,
Quito-Ecuador, 1995.
9. Kruglinski David, VISUAL C++, Segunda edición, ] 994
10. Microsoft Windows para trabajo en grupo, MANUAL DEL USUARIO, 1991
11. Microsoft Masm 6.1, ENVIRONMENT AND TOOLS, Ed. Microsoft, USA, 1993
12. Microsoft Masm 6.1, PROGRAMMERS GUIDE, Ed. Microsoft, USA, J992
¡40
BIBLIOGRAFÍA
13. Norton Peter, INTRODUCCIÓN A LA COMPUTACIÓN, Ed. Me Graw Hil l , España,
1994
14. Norton Peter, GUIA DEL PROGRAMADOR PARA EL IBM PC, Ed. Anaya
Multimedia, 1987
15. Pi l la je Carlos, TESIS: "TARJETA DE ADQUISICIÓN DE DATOS ANALÓGICOS
UTILIZANDO UN INTERFAZ PERIFÉRICO PROGRAMAS LE (PPT) CON
PROGRAMA EN ENTORNO VISUAL", E. P. N, 1997, Quito - Ecuador
16. Zelenovsky Ricardo, IBM PC PARA INGENIEROS, Ed. Espe, Quito, 1996
141
GLOSARIO
GLOSARIO
A
API acronimo de Applications Programming Interface, Interfaz de Programación de
Aplicaciones: consiste en las funciones, mensajes, estructuras y tipos de datos, así como las
instrucciones para la creación de aplicaciones que se ejecutan bajo Windows de Microsoft,
esto es, los tipos de aplicaciones que se crean por ejemplo en VB.
ASCII acronimo de American Standard Code for Information Interchange, Código
Estándar Americano para Intercambio de Información: código de siete bits(con un octavo
bit conocido como bit de paridad) usado para representar 128 símbolos, incluyendo todos
los alfanuméricos básicos, con bits de datos; formalizado por el Instituto Nacional de
Estándares Americano y posteriormente expandido por IBM; ahora es un sistema de ocho
bits que describe 256 símbolos.
C
Celeron: El procesador Intel Celeron™ está diseñado para equipos de sobremesa de bajo
costo, o "PC Básico", y es compatible con los procesadores anteriores de la arquitectura
Intel.
143
GLOSARIO
El procesador Intel Celeron™ da un buen rendimiento en aplicaciones que corren en
sistemas operativos tales como Windows * 95, Windows NT * y UNIX *. Esto se ha
logrado integrando los mejores atributos de los procesadores Intel - el rendimiento de la
ejecución dinámica del procesador Pentium II más las características de la tecnología
MMX™ - dando como resultado un nivel base de rendimiento para el comprador de PC
Básico.
Compilación: e! primer paso en el proceso de conversión de código fuente de programa a
programas ejecutables.
Compilador: programa que traduce un archivo de código fuente de programa a código
objeto.
Controlador de teclado: pequeño chip de computadora, dentro de una computadora o de
un teclado, que detecta si una tecla ha sido presionada y coloca un código de barrido en el
registro temporal de datos del teclado.
Coprocesador matemático: chip o parte de un chip que acelera los procesos matemáticos
intensivos usando aritmética de punto flotante para realizar cálculos para la CPU.
CPU: acrónimo de Central Processing Unit, Unidad de Procesamiento Central, es llamado
también el cerebro de la computadora.
144
GLOSARIO
D
DLL: Dinamic Link Library, Enlace Dinámico de Librerías: son un tipo especial de
archivos que contienen funciones y recursos que están disponibles para todas las
aplicaciones de Windows.
Dispositivos de entrada y salida (E/S) (I/O): denominados también Puertos de E/S, estos
permiten a una computadora comunicarse con un usuario o con otras máquinas o
dispositivos.
G
GDI: acrónimo de Graphics Dispositive Interface, Es el Interfaz de Dispositivos Gráficos
en una PC, es decir las múltiples ventanas que el usuario las despliega al correr una
determinada aplicación.
M
Módem: dispositivo que permite a las computadoras comunicarse entre si a través de líneas
telefónicas; modem viene de (mo) modulación y (dem) demodulación.
MDI: acrónimo de Múltiples Documents Interface, Interfaz de Documentos Múltiples: son
formularios padres o ventanas que contienen al resto de aplicaciones llamadas también
hijas. Michas aplicaciones de Windows son programas MDI.
145
GLOSARIO
MFC: Acrónimo de Microsft Foundation Class, Microsoft Fundación de Clases, es la base
para las diferentes aplicaciones del Visual C++.
O
OOP: acrónimo de Object- Oriented Programming, Programación Orientada a Objetos.
Ensamblado de programas usando piezas u objetos que encapsulan información con
instrucciones y combinan pasos complejos en un solo procedimiento.
Palanca de juegos (joystick): dispositivo de entrada que controla el movimiento del cursor
para juegos de computadora y para algunas aplicaciones profesionales.
PC acrónimo de Personal Computer, Computadora Personal: computadora personal de
IBM o cualquiera compatible.
Pentium: uno de los miembros más rápido y potentes de la familia de microprocesadores
de Intel; introducida en 1993.
Pentium MMX: El procesador Pentium® con tecnología MMX™ es la más reciente
incorporación a la familia de procesadores Pentium® , ofrece mejoras de micro-
arquitectura sobre los miembros anteriores de esta familia.
146
GLOSARIO
Pentium Pro: Pentium® Pro es la siguiente generación de Intel para equipos de sobremesa
de altas prestaciones, estaciones de trabajo y servidores.. El procesador Pentium® Pro
consigue un nivel de rendimiento superior a los procesadores de la generación anterior
gracias a una innovación llamada Ejecución Dinámica que constituye el paso siguiente
después de la arquitectura super escalar implementada en el procesador Pentium.
Puerto: conector de una computadora, donde se conectan dispositivos externos, como los
de entrada y salida; también llamado interfaz.
Puerto de interfaz para sistemas de computadoras pequeñas (SCSI): dispositivo que
prolonga el bus afuera de una computadora por medio de un cable, permite que discos
duros o unidades de CD-ROM puedan conectarse unos con otros en cadena. .
Puerto paralelo: puerto de comunicación a través del cual bits de datos pueden fluir en
forma simultánea a altas velocidades; también llamada interfaz paralela.
Puerto Serial: conector o puerto de propósito general, a través del cual algunos
dispositivos externos, pueden conectarse a una computadora; la transmisión de datos ocurre
un bit a la vez.
147
GLOSARIO
sSCSI acrónimo de Small Computer System Interface, interfaz para sistemas de
computadoras pequeñas.
Tarjetas de entrada y salida (E/S): adaptador que provee puertos de propósito general
para conectar varios dispositivos periféricos en la parte posterior de la computadora.
Tarjeta Principal (Main board): Principal tarjeta del sistema de una computadora, donde
se encuentra la CPU y la memoria; la mayoría también tienen conectores para tarjetas que
se pueden agregar por medio de ranuras de expansión.
U
TJART (Universal Asynchronous Receiver / Transmitter, Receptor/Transmisor Asincrono
Universal): chip en la tarjeta de E/S de la tarjeta principal de la computadora que convierte
datos paralelos del bus de datos en serie que pueden fluir a través de un cable serial o
telefónico.
J48
MANUAL DEL USUARIO
Bienvenido al "ANALIZADOR DE PUERTOS PARA PCs" V 1.0.
En esta sección Ud. aprenderá la forma de utilización más eficiente de este software.
Venla
OLECTURADEPtlEflrQS •:.
Inttrucclonet: '—
tnpeM lar itrecdonet'riúfi y (nal en (amaloHEXÁDEdMAL
r DúcccíonGí -
Inicial
Fina!
yus i HAIS
|-*COHTRASEHA HEJOI
>4B>, Sí detea cambial eJ conlenído do algún^ )| puerto, tngieie conhatoíía. Pero recuerde
Que i¡ cambia su contenido puede dafíarel tiitcna.
¿ceptaf £ancelaf
| | JJJi 0¿ IUI ILHJ1U
(Controla do res de DMA j f
'. _ ..... - JL
0e
y1
y,K
ünlrcico-;
~~B7
•"Inttiucoóocí: -Haga Cfck eri cuasia celda ó uBce'a* Hechas de naveoaci¿n paca ' ' ¡obtenei Información y fl efiesco de lo) ;ifeinnleí poertot.
MLT1MO BLOQUE:
0-21
MANUAL DEL USUARIO
Este software está listo para ser instalado en cualquier tipo de PC compatible con IBM y
que posea un entorno Windows 95.
Así mismo, este software ocupa'"4^disquetes de alta densidad para su instalación, en los
cuales se encuentra todos los archivos utilizados en el proyecto. Basta con ejecutar el
Setup.exe que se encuentra en el primer disquete y luego seguir las instrucciones de
instalación para que se instale automáticamente eí ejecutable "Puertos.exe" en su PC.
REQUERIMIENTOS
Este software, al igual que eí resto de programas actuales funcionan en,, un entorno de
Windows 95 o sistemas operativos superiores. Este programa tendrá un funcionamiento
óptimo con los siguientes requerimientos:
)- Utiliza ¿ MB en disco duro para su instalación.
V Memoria RAM de 16 MB mínimo.
>- Procesador superior al 50 MHz.
V Configuración de pantalla de 800 * 600 pixels.
FUNCIONAMIENTO
Una vez instalado el software Ud. puede proceder a la utilización del mismo.
Cuando ejecute el archivo "Puertos.exe", Ud. ingresará a una ventana de Bienvenida en el
mismo que le indican dos-opciones al usuario: "Continuar" o "Salir". Si elige Salir, Ud.
retornará al escritorio del Windows, en cambio si elige Continuar, ingresará al escritorio del
Analizador de Puertos, donde Ud. podrá elegir en la barra de menúes las siguientes
opciones:
151
MANUAL DEL USUARIO
£- Anaíizar-Puerto
S^ Información del Sistema
> Ventana
> Ayuda
Ud. podrá ingresar a estos menúes haciendo Click con el ratón u oprimiendo la
combinación de teclas ALT+TECLA subrayada que corresponda. Así mismo, si desea
tomar un atajo hacia las ventanas, pulse al mismo tiempo las diferentes combinaciones de
teclas, por ejemplo, CTRL + L. Mientras que a las opciones contenidas en la barra de
menúes Ud. podrá ingresar haciendo Click con el ratón u oprimiendo solamente la tecla
Subrayada.
MENÚES
Menú Analizar-puertos
Este menú a su vez tiene las siguientes opciones:
>- En Bloques
> Un Puerto
V Memoria.com
> Salir
Opción En Bloques
Esta opción a su vez tiene las siguientes opciones:
152
MANUAL DEL USUARIO
** Lectura
^ Escritura
Sub opción Lectura
A esta ventana Ud. puede ingresar haciendo Click sobre la opción con el ratón u
oprimiendo la combinación de teclas CTRL+L para acceso directo.
Esta ventana le mostrará el contenido en Hexadecimal, Binario y Ascii de un bloque de
puertos que Ud. elija mediante el ingreso de las direcciones inicial y final en los cuadros de
texto en formato hexadecimal (Ej. 378, 3AB, OF3), observe que solo ingresa el número y no
la letra H que comúnmente acompaña a todo número hexadecimal como por ejemplo 378H.
Una vez ingresado los valores inicial y final en hexadecimal, haga Click en el botón
"Mostrar", luego de esta acción Ud. observará una columna con las direcciones del bloque
de puertos que Ud. eligió, otras tres columnas con contenidos en hexadecimal, binario, ascii
del mismo bloque, paralelo a este suceso, Ud. Observará que se activó una etiqueta de
instrucciones que deberá leerlos detenidamente. No obstante nuevamente se explica estas
instrucciones:
Si Ud. Desea ver que tipo de puerto es, haga Click o mueva las flechas de navegación hacia
cualquier celda de alguna determinada fila e inmediatamente observará en la parte inferior
dicha información, al mismo tiempo Ud. Observará el refresco del puerto seleccionado.
Si desea ver otro bloque, haga Click en el botón de opción "Otro Bloque" e ingrese las
nuevas direcciones y luego haga Click en "Mostrar". Nótese que cuando hace click en la
153
MANUAL DEL USUARIO
opción Otro Bloque todos los contenidos mostrados en bloque anterior se borran de forma
inmediata, quedando la grilla lista para mostrar un nuevo bloque con sus respectivos
contenidos.
Finalmente, si desea salir de esta ventana, haga Click en "Cerrar", con lo cual regresará al
escritorio del Analizador de Puertos.
Sub opción Escritura
A esta ventana Ud. puede ingresar haciendo Click sobre la opción con el ratón u
oprimiendo la combinación de teclas CTRL+E para acceso directo.
Esta ventana también le mostrará el contenido en Hexadecimal, Binario y Ascii de un
bloque de puertos que Ud. elija mediante el ingreso de las direcciones inicial y final en los
cuadros de texto. Una vez ingresado los valores inicial y final en hexadecimal, haga Click
en el botón "Mostrar", luego de esta acción, Ud. Observará una columna con las
direcciones del bloque de puertos que Ud. eligió, otras tres columnas con contenidos en
hexadecimal, binario, ascii del mismo bloque, paralelo a este suceso, Ud. Observará que se
activó una etiqueta de instrucciones que deberá leerlas detenidamente. No obstante
nuevamente se explica estas instrucciones:
Si Ud. Desea ver que tipo de puerto es, haga Click o mueva las flechas de navegación hacia
cualquier celda de alguna determinada fila e inmediatamente observará en la parte inferior
dicha información.
En este evento (Click) no se muestra refresco, en cambio existe una caja de texto, donde se
ingresa el dato a cambiarse, el mismo que debe ser ingresado en formato hexadecimal. Para
154
MANUAL DEL USUARIO
que se habilite esta caja de texto, Ud. debe hacer Doble Ciick en cualquiera de las celdas
que desee cambiar el contenido, luego ingrese el nuevo contenido, seguidamente presione
Enter o haga Click en el botón "Cambiar" ubicado a su izquierda, al realizar estas acciones
Ud. observará que se actualizan los nuevos valores en las celdas respectivas y en la etiqueta
de la parte inferior.
Finalmente, si desea salir de esta ventana, haga Click en "Cerrar", con lo cual regresará al
escritorio del Analizador de Puertos.
Opción Un Puerto
Esta opción a su vez tiene las siguientes opciones:
>• Lectura
> Escritura
Sub opción Lectura
A esta ventana Ud. puede ingresar haciendo Click sobre la opción con el ratón u
oprimiendo la combinación de teclas CTRL-fR para acceso directo.
En esta ventana, Ud. puede observar el contenido de un solo puerto con actualización
inmediata de los datos, para lo cual siga las siguientes instrucciones:
Ingrese e! número de muestras en decimal y presione la tecla Enter, luego ingrese la
dirección del puerto en hexadecimal y presione la tecla Enter o pulse el botón Mostrar.
Pero como el refresco o actualización no es lo suficientemente rápido, esta ventana está
provista de una grilla con barra destiladora vertical donde le mostrará instantáneamente el
155
M A N U A L DEL USUARIO
número de muestras y su respectivo contenido que Ud. previamente ha ingresado en el
casillero correspondiente al número de muestras.
Finalmente, si desea salir de esta ventana, haga Click en "Cerrar", con lo cual regresará al
escritorio del Analizador de Puertos.
Sub opción Escritura
A esta ventana Ud. puede ingresar haciendo Click sobre la opción con el ratón u
oprimiendo la combinación de teclas CTRL+W para acceso directo.
En esta ventana, Ud. puede cambiar el contenido de un solo puerto, para lo cual siga las
siguientes instrucciones:
Ingrese la dirección del puerto y presione la tecla Enter, luego ingrese el nuevo contenido a
cambiarse en hexadecimal y presione la tecla Enter o pulse la tecla Enviar. Enseguida
observará en la parte inferior el dato cambiado.
Finalmente, si desea salir de esta ventana, haga Click en "Cerrar", con lo cual regresará al
escritorio del Analizador de Puertos.
Opción Memoria.com
Esta opción muestra en una ventana los contenidos de memoria de su PC. Observe que esta
ventana no es parte del formulario padre, esto se debe a que es una ventana anexad;», tiene
sus propias instrucciones de operación (Lea detenidamente estas instrucciones). Esta
ventana aparecerá en el escritorio cuando se ejecuta automáticamente el archivo
156
memoria.com con la sentencia Shel! de VB incorporada en el programa. Para salir de esta
ventana presione la tecla ESC.
Opción Salir
Con esta opción Ud. sale del programa al escritorio de Windows. Nótese que todas las
opciones de los menúes tienen una letra subrayada, esto implica que si pulsa la letra
subrayada, ingresará automáticamente a la aplicación. Obteniéndose así un efecto similar al
Click con e! ratón.
Menú Información del Sistema
Este menú tiene las siguientes opciones;
V Windows
V CPU
> Vídeo
V General
Opción Windows
Esta ventana muestra el tipo de sistema operativo utilizado por su PC. Por ser un ejemplo
anexado, esta ventana se encuentra Inactiva para la manipulación del usuario. Si esta
ventana queda cargada en el escritorio del Analizador de Puertos, no se preocupe, puede
permanecer ahí, hasta que decida salir del programa.
Opción CPU
157
MANUAL DEL USUARIO
Esta ventana muestra el tipo de procesador, memoria y recursos del sistema que está
utilizando su PC.
Por ser un ejemplo anexado, esta ventana se encuentra inactiva para la manipulación del
usuario. Si esta ventana queda cargada en el escritorio del Analizador de Puertos, no se
preocupe, puede permanecer ahí, hasta que decida salir del programa.
Opción Vídeo
Esta ventana muestra el controlador de vídeo, La Resolución y colores utilizados en su
sistema.
Por ser un ejemplo anexado, esta ventana se encuentra inactiva para la manipulación del
usuario. Si esta ventana queda cargada en el escritorio del Analizador de Puertos, no se
preocupe, puede permanecer ahí, hasta que decida salir del programa.
Opción General
Esta ventana muestra la información general del sistema, como es la Red, Mouse, Lenguaje
y teclado.
Por ser un ejemplo anexado, esta ventana se encuentra inactiva para la manipulación del
usuario. Si esta ventana queda cargada en el escritorio del Analizador de Puertos, no se
preocupe, puede permanecer ahí, hasta que decida salir del programa.
Menú Ventana
158
MANUAL DEL USUARfO
Este menú se carga de opciones solamente cuando se están utilizando varias ventanas a la
vez, y muestra con un visto la ventana activa,
Menú Ayuda
Este menú tiene dos opciones:
V Contenido
V Acerca de...
Opción Contenido
Esta opción despliega una ventana que muestra los diferentes contenidos de los tópicos
i, tratados en este programa. También puede ingresar a esta ventana pulsando la Tecla Fl.
Opción Acerca de...
Esta ventana muestra el autor del software, año de realización, donde fue desarrollado, etc.
Para salir de esta ventana haga Click en "Aceptar".
NOTA:
Este manual también se encuentra en la Ayuda del Analizador de Puertos
159
CODÍGO FUENTE
LISTADO DEL CÓDIGO FUENTE DEL PROGRAMAANALIZADOR DE PUERTOS
FORMULARIO PRINCIPAL (MDI)
Begin VB.MDIForm Mdilnicio
BackColor = &HOO8080005Caption s= "ANALIZADOR DE PUERTOS"ClientHeight = 3885ClientLeft = 2475ClientTop - 2820ClientWidth = 7065Height a 4530Icón = "FINAL.frx":0000Left = 2415LinkTopic = "MDIForml"Top - 2235Visible = O 'FalsaWidth = 7185Windowstate = 2 'MaximizedBegin Threed.SSPanel SSPanell
Align = . 1 'Align TopHeight = 615Left = OTablndex = OTop = OWidth = 7065_version - 65536_extentx = 12462_extenty ~ 1085stockprops = 15
backcolor = 12632256EndBegin MSComDlg.CommonDialog CommonDialogl
Left = 6600Top = 120_version = 65536_extentx = 847_extenty = 847stockprops = O
EndBegin VB.Menu mnuanalizar
Caption = "Analizar-¿PuertosBegin VB.Menu mnubloques
Caption = "En ¿Bloques"Begin VB.Menu mnulectura
Caption = "¿LecturaShortcut = AL
161
CÓDIGO FUENTE
EndBegin VB.Menu ray
Caption = "-"EndBegin VB.Menu nmuescritura
Caption = "&Escritura"Shortcut = AE
EndEndBegin VB.Menu mnupuerto
Caption = "Un SPuerto"Begin VB.Menu mnulecport
Caption = "¿Lectura "Shortcut = AR
EndBegin VB.Menu rayx
Caption = "~"EndBegin VB.Menu mnuescport
Caption = "¿¿Escritura"Shortcut = AW
EndEndBegin VB.Menu raye
Caption = "-"EndBegin VB.Menu vacio
CaptionEndBegin VB.Menu rayd
Caption = "-"EndBegin VB.Menu mnuvacio
Caption = "SMemoria.com"EndBegin VB.Menu raye
CaptionEndBegin VB.Menu mnusalir
Caption = "¿Salir"End
EndBegin VB.Menu mnuBar
Caption = "¿Información del sistemaBegin VB.Menú mnuSysInfo
Caption = "SWindows "Index = O
EndBegin VB.Menu mnuSysInfo
Caption = "5CPU"índex = 1
EndBegin VB.Menu mnuSysInfo
Caption = "£Video"
162
CODTGO FUENTE
Index = 2EndBegin VB.Menu mnuSysInfo
Caption = "¿¿General"Index = 3
EndEndBegin VB.Menu mnuventana
Caption = "¿VentanaWindowList = -1 "True
EndBegin VB.Menu mnuayuda
Caption = "SAyuda "Begin VB.Menu mnucontenido
Caption = "¿ContenidoHelpContextID = 1Shortcut = {FIJ
EndBegin VB.Menu mnubuscar
Caption ~ "SBuscar acerca de..."EndBegin VB.Menu rayl
CaptionEndBegin VB.Menu mnuacerca
Caption = "AScerca de..."End
EndEndAttribute VB_Name = "Mdilnicio"Attribute VB_Creatable = FalseAttribute VB_Exposed = FalsePrivate Sub MDIForm_Load()
frmPresent.ShowEnd Sub
Private Sub mnuacerca^Click(}frmacercade.Show
End Sub
Private Sub mnuaplicacion_Clickf rinAplicacion. Show
End Sub
Private Sub mnubuscar_Click()CommonDialogl.HelpFile = "c: \tesisrafael\vh\proyects\analizar.hlp"CommonDialogl. HelpCoinraand = cdlHelpPartialKeyCommonDialogl.ShowHelp
End Sub
Private Sub mnucontenido_Click()CommonDialogl.HelpFile = "c: \tesisrafael\vh\proyects\analizar.hlp"
163
CÓDIGO FUENTE
CommonDialogl.HelpCommand = cdlHelpIndexCommonDialogl.ShowHelp
End Sub
Prívate Sub mnuescport_Click()frmpasswordp.Show
End Sub
Prívate Sub mnulecport_Click()frmLecturaP.Show
End Sub
Prívate Sub mnulectura_Click()frmlectura.Show
End Sub
Prívate Sub mnusalir_Click()End
End Sub
Prívate Sub mnuver_Click()frmMenus.Show
End Sub
'Comienza la compilación condicional#If Win32 Then 'Versión de 32 bitPrívate Sub mnuSysInfo^Click(Index As Integer)Prívate Sub mnuSysInfo_Click(índex As Integer)
If Index O 5 ThenIf VisibleFrame Is Nothing Then
frmCallDlls.frainfo(O).Visible « FalseElse
VisibleFrame.Visible = FalseEnd IffrmCallDlls.frainfo{Index -f 1).Visible = TrueSet VisibleFrame - frmCallDlls.frainfo{Index + 1}
ElsemnuSysInfo(Index).Checked = Not mnuSysInfo(Index).Checked
If mnuSysInfo[Index).Checked ThenSetWindowEos frmCallDlls.hWnd, HWNDJTOPMOST,
frmCallDlls.Left / 15,frmCallDlls.Top / 15, frmCallDlls.Width / 15,
frmCallDlls.Height / 15, SWPJTOACTIVATE OrSWP_SHOWWINDOW
ElseSetWindowPos frmCallDlls.hWnd, HWND_NOTOPMOST,
frmCallDlls.Left / 15,frmCallDlls.Top / 15, frmCallDlls.Width / 15,
~ frmCallDlls.Height / 15, SWP_NOACTIVATE OrSWP SHOWWINDOW
164
CÓDIGO FUENTE
End IfEnd IfIf Index - 3 Then
frmCallDlls.frainfo(4).Visible = FalseEnd If
End Sub
#Else 'Versión de 16 bitsPrívate Sub mnuSys!nfo_Click(Index As Integer)
If Index O 5 ThenIf VisibleFrame Is Nothing Then
frmCallDlls.frainfo(0).Visible = FalseElse
VisibleFrame.Visible = FalseEnd IffrmCallDlls.frainfo(Index + 1).Visible ~ TrueSet VisibleFrame = frmCallDlls.frainfo(Index + 1)
Elsemnusyslnfo(Index).Checked = Not mnuSysInfo(Index).Checked
If mnuSysInfo(Index).Checked ThenSetWindowPos frmCallDlls.hWnd, HWND_TOPMOST,
frmCallDlls.Left / 15,frmCallDlls.Top / 15, frmCallDlls.Width / 15,
~ frmCallDlls.Height / 15, SWP_NOACTIVATE OrSWP_SHOWWINDOW
ElseSetWindowPos frmCallDlls.hWnd, HWND_NOTOPMOST,
frmCallDlls.Left / 15, _frmCallDlls.Top / 15, frmCallDlls.Width / 15,
~ frmCallDlls.Height / 15, SWP_NOACTIVATE OrSWP_SHOWWINDOW
End IfEnd If
End SubÍÍEnd If1 Fin de la compilación condicional
Prívate Sub mnuvacio_Click()memoria = Shell("memoria.com" , 1)
End Sub
Prívate Sub nmuescritura__Click ()frmpassword.Show
End Sub
165
CÓDIGO FUENTE
FORMULARIO LECTURA DE PUERTOS
frmlectura&HOOCOCOCQ&
- 3 'Fixed Dialog"LECTURA DE PUERTOS"54751125198090605835"LECTURA.frx":00001065"Forml"
FalseTrueFalse
Begin VB.FormBackColor -BorderStyle -Caption -ClientHeight =ClientLeft =ClientTop =ClientWidthHeightIcón =LeftLinkTopic =MaxButton = OMDIChild = -1MinButton = OScaleHeight = 5475ScaleWidth = 9060ShowInTaskbar = OTop = 1680Width - 9180Begin VB.Frame frainsing
Caption =BeginProperty Font
ñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyForeColor = SHQOFFOQOQ&Height = 1095Left = 120Tablndex = 18Top - 120Width = 2175
False
"Instrucciones:"
"M5 Sans Serif"17008.25O 'FalseO 'FalseO 'False
Begin VB.Label IblinstingCaption =Height ~Left
$"LECTURA.frx":OOOC735240
TablndexTopVJidth
192401815
EndEndBegin VB.OptionButton optotralectura
Caption = "Otro Bloque"BeginProperty Fonr
ñame = "MS Sans Serif"charset = 1
166
CÓDIGO FUENTE
weightsizeunderlineitalicstrikethrough
EndPropertyHeightLeftTablndexTop =Width
7008.25000
3754801339601335
' False'False1 False
EndBegin VB.Frame fraotralectura
Height = 735Left = 360Tablndex = 17Top = 3720Width =' 1575
EndBegin VB.TextBox txtfinal
BeginProperty Fontñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyHeightLeftMaxLength =TablndexTop -
"MS Sans Serif"17008.25O 'FalseO 'FalseO 'False
Width
2851440442160615
EndBegin VB.TextBox txtinicial
BeginProperty Fontñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyHeightLeftMaxLength =TablndexTop =Width
"MS17008.25000
2851440431680615
Sans S'
1 False1 False1 False
Serif"
EndBegin VB.Frame fraDirecciones
167
CÓDIGO FUENTE
Caption = "Direcciones"BeginProperty Font
ñame = "MS Sans Serif"charset = 1weight = 700size = 8,25underline = O 'Falseitalic = O 'Falsestrikethrough = O 'False
EndPropertyForeColor ~ &HOQFFQOOO&Height - 1455Left - 120Tablndex = 14Top = 1320Width =* 2175Begin VB.Label Iblfinal
Caption = "Final"BeginProperty Font
ñame = "MS Sans Serif"charset = 1weight = 700size = 9.75underline = O 'Falseitalic ~ O 'Falsestrikethrough = O 'False
EndPropertyHeight = 255Left = 240Tablndex - 16Top = 840Width = 855
EndBegin VB.Label Iblinicial
Caption = "Inicial"BeginProperty Font
ñame = "MS Sans Serif"charset = 1weight = 700size = 9.75underline = O 'Falseitalic = O 'Falsestrikethrough = O 'False
EndPropertyHeight = 255Left = 240Tablndex - 15Top = 360V7idth = 855
EndEndBegin VB.Frame frainformacion
Caption = "Información"BeginProperty Font
168
CÓDIGO FUENTE
ñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyForeColorHeightLeftTablndexTopWidthBegin VB.Labal
BorderStyle =BeginProperty Font
ñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyForeColor =HeightLeftTablndex =TopWidth
EndEndBegin VB.Frame frarefresco
Caption = "Refresco"BeginProperty Font
ñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyForeColorHeightLeftTablndexTopWidthBegin VB.Label
AlignmentBorderStyle
"MS Sans Serif"17008.25O 'FalseO 'FalseO 'False
SHOOCOOOOOfi73526401133604095
Iblinformacion1 'Fixed Single
"Arial"17009.75O 'FalseO 'FalseO 'False
&HOOOQOOOO&375120122403855
"MS Sans Serif"17008.25O 'FalseO '• FalseO 'False
SHOOCOOOOOS7356840
= 933601095
Iblrefresco2 'Center
- 1 'Fixed SingleBeginProperty Font
169
CÓDIGO FUENTE
"Arial"17009.75O 'FalseO 'FalseO 'False
ñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyForeColor = &HOOOOOOOOSHeight = 375Left = 120Tablndex = 10Top « 240Width = 855
EndEndBegin VB.Frame frainstruciones
Caption = "Instrucciones:"BeginProperty Font
ñame = "MS Sans Serif"charset = 1weight = 700size = 8.25underline = O 'Falseitalic = O 'Falsestrikethrough = O 'False
EndPropertyForeColorHeightLeftTablndexTopVisibleWidthBegin VB.Label
BorderStyleBeginProperty Pont
ñame =charset =weight =size -underline = O 'Falseitalic = O 'Falsestrikethrough = O 'False
EndPropertyHeight = 855Left = 3120Tablndex = 8Top = 240Width = 2535
EndBegin VB.Label Iblinstinformacion
BorderStyle = 1 'Fixed SingleHeight = 855
SHOOFFOOOO&12152400
= 64200O 'False5775
Iblinstrefresco1 'Fixed Single
= "Arial"17009.75
170
CÓDIGO FUENTE
LeftTablndexTopWidth
24072402775
False
EndEndBegin VB.Timer tmrRefresco
Enabled = OInterval = 300Left = 7320Top = 2640
EndBegin VB . CornmandButton cmdcerrar
Caption = "SCERRAR"BeginProperty Font
ñame =charset =weight =size =underline =italic =strikethrough =
EndPropertyHeight = 495Left = 360Tablndex - 2Top = 4680Width = 1575
EndBegin VB.CommandButton cmdmostrar
Caption = "&MOSTRAR"BeginProperty Font
ñame =charset =weight =size =underline =italic ~strikethrough =
EndPropertyHeight = 495Left = 360Tablndex = 1Top = 3120Width = 1575
EndBegin MSGrid.Grid Grilla
Height = 2775Left = 2640Tablndex = OTop = 480Width = 5295versión = 65536extentx = 9340
"MS Sans Serif17008.25
FalseFalseFalse
"MS Sans Serif17008.25O 'FalseO 'FalseO 'False
171
CÓDIGO FUENTE
_extenty = 4895stockprops = 77forecolor = Obackcolor - 16777215cois = 5scrollbars = 2gridlinewidth = 2mouseicon = "LECTURA.frx":0054
KndBegin VB.Label Iblmarcodegrilla
BorderStyle = 1 'Fixed SingleHeight = 3975Left = 2400Tablndex = 5Top ~ 240Width = 5775
EndEndAttribute VB___Name = "frmlectura"Attribute VB_Creatable = FalseAttribute VB Exposed = False
Private Sub cmdmostrar_Click()Dim dir, lee, medida As IntegerDim ini, fin As Integer
If txtinicial.Text = "" Or txtfinal = "" ThenExit Sub
Elsehexl = txtinicial.Texthexasc - Asc(hexl)
If hexasc >= 48 And hexasc <= 57 ThenGoTo ingreso
Elself hexasc >= 65 And hexasc <= 70 ThenGoTo ingreso
Elself hexasc >= 97 And hexasc <= 102 ThenGoTo ingreso
ElseMsgBox "Solo formato HEXADECIMAL", 48, "Formato"Exit Sub
End Ifingreso:
hexll = "&H" £ hexlini - Val(hexll)hex2 = txtfinal.Texthexasc = Asc(hex2)
If hexasc >= 48 And hexasc <= 57 ThenGoTo ingresol
Elself hexasc >= 65 And hexasc <= 70 ThenGoTo ingresol
Elself hexasc >= 97 And hexasc <= 102 ThenGoTo ingresol
ElseMsgBox "Solo formato HEXADECIMAL", 48, "Formato"
172
CÓDIGO FUENTE
Exit SubEnd If
ingresol:hex21 = "£H" £ hex2fin = Val(hex21)If fin > 9999 Or ini < O Then
MsgBox "Rango permitido OOOOH < dir < 270FH, Intente de nuevo[Pulse Aceptar]", 16, "PRECAUCIÓN"
Exit SubElse
GoTo saltoEnd If
salto:MousePointer = 11For i = ini To fin
lee = Medir{i, medida)lectu = Hex(lec)j = Hex(i)bits = conversión(lee)ascii = Chr(lee)
If i <= 15 ThenIf lee <= 15 Then
grilla.Addltem Chr(9) & "000" & j 5 Chr(9) 5 "O" fi lectu£ Chr(9) & bits £ Chr(9) fi ascii
Elsegrilla.Addltem Chr(9) S "000" £ j £ Chr(9) & lectu 6
Chr(9} & bits £ Chr{9) 6 asciiEnd If
Elself i <- 255 ThenIf lee <- 15 Then
grilla.Addltem Chr(9} fi "00" fi j & Chr(9) £ "O" fi lectu &Chr(9) & bits fi Chr(9) £ ascii
Elsegrilla.Addltem Chr(9) £ "00" £ j £ Chr{9) £ lectu fi
Chr(9} fi bits S Chr(9) & asciiEnd If
Elself i <= 4095 ThenIf lee <- 15 Then
grilla.Addltem Chr(9) £ "O" £ j £ Chr(9) £ "O" £ lectu £Chr{9) £ bits £ Chr(9) £ ascii
Elsegrilla.Addltem Chr(9) fi "O" fi j fi Chr(9) £ lectu £ Chr(9)
fi bits & Chr{9) £ asciiEnd If
Elself i >= 4096 ThenIf lee <= 15 Then
grilla.Addltem Chr(9) fi j £ Chr(9) 6 "O" S lectu fi Chr(9)£ bits £ Chr{9) fi ascii
Elsegrilla.Addltem Chr(9) £ j £ Chr(9) fi lectu £ Chr(9) £
bits fi Chr{9} fi asciiEnd If
End If
173
CÓDIGO FUENTE
Next iMousePointer = Ofrainstruciones.visible = TrueIblinstinformacion.Caption = "Haga Click en cualquier celda ó utilice
las flechas de navegación para obtener Información y Refresco de losdiferentes puertos."
Iblinstrefresco.Caption = "ULTIMO BLOQUE:11 & Hex(ini) fi " - " fi Hex(fin)
cmdmostrar.Enabled = Falsecmdcerrar.Enabled = TrueoptOtralectura.Enabled - True
txtinicial.Enabled = Falsetxtfinal.Enabled = False
txtinicial.Visible = Falsetxtfinal-Visible — False
grilla.SetFocus
If grilla.Rows >= 9999 + 2 ThenMsgBox "Ud llego al limite máximo de filas", 16, "Limite"Exit Sub
End IfEnd IfEnd Sub
Prívate Sub cmdcerrar^Click(}Unload Me
End Sub
Private Sub grilla_SelChange()grilla_Click
End Sub
Private Sub txtfinal_Click()cmdmostrar.Enabled = TrueoptOtralectura.Enabled - True
End Sub
Private Sub txtfinal_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Thencmdmostrar.Enabled = Truecmdmostrar.SetFocus
End If
End Sub
Private Sub Form_Activate()Width = Screen.Width * 0.7 ''Establece la anchura
174
CÓDIGO FUENTE
Height = Screen.Height * 0.65Left - (Screen.Width - Width) / 2Top = (Screen.Height - Height) / 4txtinicial.Enabled = Truetxtinicial.Visible = Truetxtinicial.Text = ""txtinicial.SetFocus
End Sub
Private Sub Form_Load()For i = 1 To 4
grilla.ColAlignment(i) = 2Next iFor i = 1 To 4
grilla.ColWidth(i) = 1100Next igrilla.RowHeight(O) = 400grilla.Col = 1grilla.Row = Ogrilla.Text = "Dirección en Hexadecimal"
grilla.Col = 2grilla.Row - Ogrilla.Text = "Contenido en Hexadecimal"
grilla.Col = 3grilla.Row ~ Ogrilla.Text = "Contenido en Binario"
grilla.Col = 4grilla.Row - Ogrilla.Text = "Contenido en ASCII"
cmdmostrar.Enabled = False1 txtinicial.Visible = Falsetxtfinal.Visible = False'Iblfinal. Visible = FalseoptOtralectura.Enabled = False
End Sub
Private Sub grilla_Click(}If grilla.Row = 1 Then
Iblinformacion.Visible = FalseIblrefresco.Visible = FalseExit Sub
ElseIblrefresco.Visible = TrueIblinformacion.Visible = TrueIf grilla.Col = 1 Then
GoTo informaElself grilla.Col - 2 Then
grilla.Col = grilla.Col - 1GoTo informa
Elself grilla.Col = 3 Then
''Establece la altura1'Centrado horizontal1'Centrado vertical.
'Centrado de texto en celda
'Ancho de las columnas
'Ancho de la fila O
175
CÓDIGO FUENTE
grilla.Col = grilla.ColGoTo informa
Elself grilla.Col = 4 Thengrilla.Col = grilla.ColGoTo informa
ElseExit Sub
End Ifinforma:
direnvl = "&H" fi grilla.Textdirenv = Val(direnvl)tmrRefresco.Enabled - Truedireccionl = "&H" 6 grilla.Textdirecport = Val(direccionl)
— 2
- 3
If direcport >= O And direcport <= 31 ThenIblinformacion.Caption = "Controladores de DMA"
Elself direcport >= 32 And direcport <= 33 ThenIblinformacion.Caption = "Controlador de interrup"
Elself direcport >= 64 And direcport <= 67 ThenIblinformacion.Caption = "Timer/Contador"
Elself direcport = 96 ThenIblinformacion.Caption = "Teclado"
Elself direcport - 97 ThenIblinformacion.Caption = "Bocina (bits O y 1)"
Elself direcport >= 128 And direcport <= 131 ThenIblinformacion.Caption = "Registros de página DMA"
Elself direcport = 160 ThenIblinformacion.Caption. = "Bit mascara de DMA"
Elself direcport >= 192 And direcport <- 511 ThenIblinformacion.Caption = "No usado en la placa del sistema"
Elself direcport = 512 ThenIblinformacion.Caption — "No usado"
Elself direcport ~ 513 ThenIblinformacion.Caption = "Puerto de juegos"
Elself direcport = 632 ThenIblinformacion.Caption =
Elself direcport = 633 ThenIblinformacion.Caption =
Elself direcport ~ 634 ThenIblinformacion.Caption =
Elself direcport ~ 744 ThenIblinformacion.Caption =
Puerto paralelo LPT2 de Salida"
Puerto paralelo LPT2 de Entrada"
Puerto paralelo LPT2 de E/S"
COM4 (TxB/RxB)"'Puerto serialElself direcport = 745 Then
Iblinformacion.Caption = "Puerto serial COM4 (IER)Elself direcport = 746 Then
Iblinformacion.Caption =Elself direcport - 747 Then
Iblinformacion.Caption =Elself direcport - 748 Then
Iblinformacion.Caption =Elself direcport = 749 Then
Iblinformacion.Caption =
'Puerto serial COM4 (IIR)
'Puerto serial COM4 (LCR)
'Puerto serial COM4 (MCR)
'Puerto serial COM4 (LSR)
176
CÓDIGO FUENTE
Elself direcport =Iblinformacion
Elself direcport =Iblinformacion
Elself direcport =Iblinformacion
Elself direcport =Iblinformacion
Elself direcport =Iblinformacion
Elself direcport =Iblinformacion
Elself direcport =Iblinformacion
Elself direcport =Iblinformacion
Elself direcport >Iblinformacion
Elself direcport >-Iblinformacion.
Elself direcport >=Iblinformacion.
Elself direcport =Iblinformacion,
Elself direcport =Iblinformacion.
Elself direcport =Iblinformacion.
Elself direcport >=Iblinformacion.
Elself direcport >=Iblinformacion.
Elself direcport >=Iblinformacion.
Elself direcport >=Iblinformacion.
Elself direcport =Iblinformacion.
Elself direcport =Iblinformacion.
Elself direcport -Iblinformacion.
Elself direcport =Iblinformacion.
Elself direcport =Iblinformacion.
Elself direcport =Iblinformacion.
Elself direcport =Iblinformacion.
Elself direcport >=Iblinformacion.
Elself direcport =Iblinformacion.
750 Then.Caption = "Puerto serial COM4 (MSR)"760 Then.Caption - "Puerto serial COM2 (TxB/RxB)"761 Then.Caption = "Puerto serial COM2 (IER)"762 Then.Caption = "Puerto serial COM2 {IIR)"763 Then.Caption = "Puerto serial COM2 (LCR)"764 Then.Caption = "Puerto serial COM2 (MCR)"765 Then.Caption = "Puerto serial COM2 £LSR)"766 Then.Caption = "Puerto serial COM2 (MSR)"= 768 And direcport <= 799 Then.Caption = "Usado para tarjetas prototipo"= 800 And direcport <= 815 Then.Caption = "Controladores de HD (PS/2 30)"= 816 And direcport <= 831 Then.Caption = "Controladores SCSI"888 Then.Caption - "Puerto paralelo LPT1 de Salida"889 Then.Caption = "Puerto paralelo LpTl de Entrada"890 Then.Caption = "Puerto paralelo LPTl de E/5"= 896 And direcport <= 943 Then.Caption = "No usado"= 956 And direcport <= 958 Then.Caption = "LPTl {sólo en tipo MCA)monocro"= 960 And direcport <= 975 Then.Caption = "Controlador EGA/VGA"= 976 And direcport <= 991 Then.Caption = "Adaptador gráfico de color CGA"1000 Then.Caption = "Puerto serial COM3 (TxB/RxB)"1001 Then.Caption = "Puerto serial COM3 (IER)111002 ThenCaption = "Puerto serial COM3 (IIR)"1003 ThenCaption = "Puerto serial COM3 (LCR)"1004 ThenCaption = "Puerto serial COM3 (MCR)"1005 ThenCaption = "Puerto serial COM3 (LSR)"1006 ThenCaption = "Puerto serial COM3 (MSR)"1008 And direcport <= 1015 Then
Caption = "Controlador de unidad de disco"1016 ThenCaption = "Puerto serial COMÍ (TxB/RxB)"
177
CÓDIGO FUENTE
Elself direcport = 1017 ThenIblinformacion.Caption =
Elself direcport = 1018 ThenIblinformacion.Caption =
Elself direcport = 1019 ThenIblinformacion.Caption =
Elself direcport = 1020 ThenIblinformacion.Caption =
Elself direcport = 1021 ThenIblinformacion.Caption =
Elself direcport = 1022 ThenIblinformacion.Caption =
Elself direcport >- 1024 AndIblinformacion.Caption =
desconocidos"
"Puerto serial COMÍ (IER)"
"Puerto serial COMÍ (IIR)"
"Puerto serial COMÍ (LCR)"
"Puerto serial COMÍ (MCR)"
"Puerto serial COMÍ (LSR)"
"Puerto serial COMÍ (MSR)"direcport <= 65535 Then"Usado por dispositivos
ElseIblinformacion.CaptionExit Sub
End IfEnd If
End Sub
= "No existe información1
Prívate Sub mostrar_Click()
End Sub
Prívate Sub txtinicial_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then
cmdmostrar.Enabled = Truetxtfinal.Enabled - Truetxtfinal.Visible = Truetxtfinal.Text =txtfinal.SetFocusIblfinal.Visible =* True
End IfEnd Sub
Private Sub optotralectura_Clickcmdmostrar.Enabled = Truetxtinicial.Enabled = Truetxtfinal.Enabled = True
txtinicial.Visible = Truetxtfinal.Visible = True
txtinicial.Text = ""txtfinal.Text = ""
txtinicial.SetFocusoptotralectura.Valué = False
End Sub
178
CÓDIGO FUENTE
Private Sub tmrRef resco__Timer ()Refrescodec = Medir(direnv, medida)Refrescohex = Hex(Refrescodec)If Refrescodec >= O And Refrescodec <= 15 Then
Iblrefresco.Caption = "O" & RefrescohexElse
Iblrefresco.Caption = RefrescohexEnd If
End Sub
FORMULARIO ESCRITURA EN PUERTOS
Begin VB.Form frmescritura
BackColor =BorderStyleCaption =ClientHeightClientLeftClientTopClientWidthForeColor =HeightIcónLeftLinkTopic =MaxButton -MDIChildMinButton =ScaleHeight =ScaleWidthShowInTaskbar =TopWidthBegin VB.Frarae frainsing
Caption = "InstruccionesBeginProperty Font
&HQOCQCOCOS3 'Fixed Dialog"ESCRITURA EN PUERTOS"5520112523409030SHOOOOOOOOfi5880"ESCRITUR.frx":00001065"Forml"0— 1
055209030020409150
1 False'True'False
'False
ñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyForeColor :
Height =LeftTablndexTopWidth
"MS Sans Serif"17008.25O 'FalseO 'FalseO 'False
6HOOFF000051095120171202175
179
CÓDIGO FUENTE
Begin VB.Label Iblinsting$ " E S C R I T U R . f r x " : Q O O C735120
2401815
"MS Sans Serif"17008.25O 'FalseO 'False
'False
Caption =HeightLeftTablndex =TopVJidth
EndEndBegin VB.TextBox txtfinal
BeginProperty Fontñame =charset =weight =size =underline =italic =strikethrough = O
EndPropertyHeight - 285Left • = 1440MaxLength = 4Tablndex = 4Top - 2160Width « 615
EndBegin VB.TextBox txtinicial
Alignment - 2BeginProperty Font
ñame =charset =weight =size =underline =italic =strikethrough =
EndPropertyHeight - 285Left = 1440MaxLength ~ 4Tablndex = 3Top = 1680Width = 615
EndBegin VB.Frame fraingresos
Caption = "Direcciones"BeginProperty Font
ñame = "MS Sans Serifcharset = 1weight = 700size -. 8.25underline = O 'Falseitalic = O 'Falsestrikethrough = O 'False
1Center
"MS Sans Serif"17008.25OOO
FalseFalseFalse
180
CÓDIGO FUENTE
EndPrapertyForeColor - 6HOOFFOOOOSHeight = 1455Left = 120Tablndex = 14Top = 1320Width - 2175Begin VB.Label Iblfinal
Caption = "Final"BeginProperty Font
ñame = "MS Sans Serifcharset ~ 1weight - 700size = 9.75underline ~ O 'Falseitalic - O 'Falsestrikethrough ~ O 'False
EndPropertyHeight - 255Left = 240Tablndex = 16Top = 840Width - 855
EndBegin VB.Label Iblinicial
Caption - "Inicial"BeginProperty Font
ñame = "MS Sans Serifcharset - 1weight = 700size = 9.75underline = O 'Falseitalic - O 'Falsestrikethrough = O 'False
EndPropertyHeight = 255Left = 240Tablndex - 15Top • = 240Width - 855
EndEndBegin VB.Frame fracambiar
Caption = "Cambiar"BeginProperty Font
ñame = "MS Sans Serif"charset = 1weight = 700size = 8.25underline = O 'Falseitalic = O 'Falsestrikethrough = O' 'False
EndPropertyForeColor - SHOOCOOOOO&
181
CÓDIGO FUENTE
Height = 735Left = 6840Tablndex = 11Top = 3360Width = 1095Begin VB.TextBox txtcambiar
BackColor = SHOOCOCOCOSBeginProperty Font
ñame = "MS Sans Serif"charset = 1weight = 700size = 9.75Underline = O 'Falseitalic = O 'Falsestrikethrough = O 'False
EndPropertyForeColor = &HOQOQOOQO&Height = 360Left = 120MaxLength = 2Tablndex = 13Top = 240Width = 855
EndEndBegin VB.Frame frainformacion
Caption = "Información"BeginProperty Font
ñame = "MS Sans Serif"charset = 1weight = 700size = 8.25underline = O 'Falseitalic = O 'Falsestrikethrough = O 'False
EndPropertyForeColor - &HOOCOOQOQ&Height = 735Left = 2640Tablndex = 10Top = 3360Width = 4095Begin VB.Label Iblinformacion
BorderStyle = 1 'Fixed SingleBeginProperty Font
ñame = "MS Sans Serif"charset = 1weight = 700size = 9.75underline = O 'Falseitalic = O 'Falsestrikethrough = O 'False
EndPropertyHeight = 375
182
CÓDIGO FUENTE
LeftTablndexTopwidth
120122403855
EnciEndBegin VB.Frame frainstrucciones
Caption = "Instrucciones:BeginProperty Font
ñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyForeColor =Height =LeftTablndexTopVisible =Width
"MS Sans S= .1
7008.250 'False0 'Falsa0 'False
6HOOFFQOOO&12152400742000 'False5775
Serif'
Begin VB.Label IblinstcambiarBorderStyle =BeginProperty Font
ñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyHeightLeftTablndex =Top =Width
1 'Fixed Single
"Arial"17009.75OOO
855312092402535
FalseFalseFalse
EndBegin VB.Label Iblinstinformacion
BorderStyle = 1 'Fixed SingleHeight = 855Left = 240Tablndex = 8Top = 240Width = 2775
EndEndBegin VB.CommandButton cmdcambiar
Caption = "6CAMBIAR"BeginProperty Font
ñame = "MS Sans Serif"
183
CÓDIGO FUENTE
charset = 1weight = 700size = 8.25underline = O 'Falseitalic = O 'Falsestrikethrough = O 'False
EndPropertyHeight = 495Left = 360Tablndex = 6Top « 3840Width = 1575
EndBegin VB. CoinmandButton cmdcerrar
Caption = "6CERRAR"BeginProperty Font
ñame = "MS Sans Serif"charset - 1weight = 700size = 8.25underline = O 'Falseitalic - O 'Falsestrikethrough = O 'False
EndPropertyHeight = 495Left = 360Tablndex = 2Top = 4560Width = 1575
EndBegin VB . CornmandButton cmdmostrar
Caption = "¿MOSTRAR"BeginProperty Font
ñame = "MS Sans Serif"charset = 1weight = 700size = 8.25underline — O 'Falseitalic = O 'Falsestrikethrough = O 'False
EndPropertyHeight = 495Left = 360Tablndex = 1Top = 3120Width = 1575
EndBegin MSGrid.Grid Grilla
Height = 2775Left = 2640Tablndex = OTop = 480Width = 5295versión = 65536
1S4
CÓDIGO FUENTE
_extentx_extenty_stockpropsforecolorbackcolorcoisscrollbarsgridlinewidthhighlightmouseicon
9340489577-214748363016777215522O 'False"ESCRITUR.frx":0054
EndBegin VB.Label Iblmarcodegrilla
1 'Fixed Single3975240052405775
BorderStyleHeightLeftTablndexTopWidth
EndEndAttribute VB_Name = "frmescritura"Attribute VB_Creatable = FalseAttribute VB_JExposed = FalsePrivate Sub cmdmostrar_Click()
Dim dir, lee, medida As IntegerDim ini, fin As Integer
If txtinicial = "" Or txtfinal = "" ThenExit Sub
Else1 Ingreso de dirección final en HEXhexl = txtinicial.Texthexasc = Asc(hexl)If hexasc >= 48 And hexasc <= 57 Then
GoTo ingresoElself hexasc >= 65 And hexasc <= 70 Then
GoTo ingreso• Elself hexasc >= 97 And hexasc <= 102 Then
GoTo ingresoElse
MsgBox "Solo formato HEXADECIMAL", 48, "Formato1Exit Sub
End Ifingreso:
hexll = "£H" S hexlini = Val(hexll)
'Ingreso de dirección final en HEXhex2 = txtfinal.Texthexasc = Asc(hex2)If hexasc >= 48 And hexasc <= 57 Then
GoTo ingresolElself hexasc >= 65 And hexasc <= 70 Then
GoTo ingresol
185
CÓDIGO FUENTE
Elself hexasc >= 97 And hexasc <= 102 ThenGoTo ingresol
ElseMsgBox "Solo formato HEXADECIMAL", 48, "Formato"Exit Sub
End Ifingresol:
hex21 = "SH" £ hex2fin = Val(hex21)If ini < O Or fin > 9999 Then
MsgBox "Rango permitido OOOOH ini O < dir < 270FH, Intente denuevo [Pulse Aceptar]", 16, "PRECAUCIÓN"
Exit SubElse
GoTo saltoEnd If
salto:MousePointer = 11For i = ini To fin
lee = Medir(i, medida) 'Llamada a la DLL loport paralectura de datos
lectu = Hex(lec)j = Hex(i)bits = conversión(lee)ascii = Chr(lec)'Despligue en la GrillaIf i <= 15 Then
If lee <= 15 Thengrilla.Addltem Chr{9) £ "000" & j £ Chr(9) & "O" £
lectu £ Chr(9) £ bits £ Chr(9) £ asciiElse
grilla.Addltem Chr(9) £ "000" & j & Chr(9) £ lectu £Chr(9) £ bits fi Chr(9) fi ascii
End IfElself i <= 255 Then
If lee <« 15 Thengrilla.Addltem Chr(9) £ "00" 6 j £ Chr(9) £ "O" £
lectu £ Chr{9) £ bits £ Chr(9) 5 asciiElse
grilla.Addltem Chr(9) £ "00" £ j £ Chr(9) £ lectu 5Chr(9) & bits 5 Chr(9) £ ascii
End IfElself i <= 4095 Then
If lee <« 15 Thengrilla.Addltem Chr(9) & "O" 5 j £ Chr{9) 5 "O" £
lectu £ Chr(9) £ bits £ Chr(9) £ asciiElse
grilla.Addltem Chr{9) £ "O" & j £ Chr(9) £ lectu &Chr(9) £ bits £ Chr(9) £ ascii
End IfElself i >= 4096 Then
If lee <= 15 Thengrilla.Addltem Chr(9) £ j £ Chr(9) £ "O" £ lectu £
Chr{9) £ bits 5 Chr(9) £ ascii
186
CÓDIGO FUENTE
Elsegrilla.Addltem Chr(9) £ j & Chr(9) & lectu & Chr(9) &
bits & Chr(9) 5 asciiEnd If
End IfHext iMousePointer = Ofrainstrucciones.Visible — TrueIblinstinformacion.Caption = "Haga Click en cualquier celda ó
utilice las flechas de navegación para obtener Información y DblClick sidesea cambiar un dato."
Iblinstcambiar.Caption = "ULTIMO BLOQUE:" £ Hex(ini) 6 " - " £ Hex(fin)
cmdmostrar.Enabled = Falsecmdcerrar.Enabled = True'cmdcambiar.Enabled = True'cmdcambiar.SetFocus
txtinicial.Visible = Falsetxtfinal.Visible = False
grilla.SetFocus
txtcambiar.BackColor = 6HFFFFFFtxtcambiar.Enabled = False
End IfEnd Sub
Private Sub cmdcambiar^Click()If txtcambiar.Text = "" Then
Exit SubElse
dirl = txtcambiar.Textdirasc = Ase(dirl)If dirasc >= 48 And dirasc <= 57 Then
GoTo ingreBiself dirasc >- 65 And dirasc <= 70 Then
GoTo ingreElself dirasc >= 97 And dirasc <= 102 Then
GoTo ingreElse
MsgBox "Solo formato HEXADECIMAL", 48, "Formato"Exit Sub
End Ifingre:
vcontroll = "6H" & dirlvcontrol = Val(vcontroll)grilla.Col = grilla.Col - 1grilla.Row = grilla.Rowdirenvl = "6H" £ grilla.Textdirenv = Val(direnvl)send = Enviar(direnv, vcontrol)
187
CÓDIGO FUENTE
grilla.Col = grilla.Col + 1datocambiadodec = Medir(direnv, medida)datocambiadohex = Hex(datocambiadodec)If datocambiadodec >= O And datocambiadodec <= 15 Then
grilla.Text = "O" & datocambiadohexElse
grilla.Text = datocambiadohexEnd Ifgrilla.Col = grilla.Col + 1lee = datocambiadodecbits = conversión(lee)grilla.Text = bitsgrilla.Col = grilla.Col + 1grilla.Text ~ Chr(datocambiadodec)grilla.Col = grilla.Col - 2If datocambiadodec >= O And datocambiadodec <= 15 Then
Iblinstcambiar.Caption = "Nuevo Contenido"O" & datocambiadohex & " : " & bits S " : " £ Chr(datocambiadodec}
ElseIblinstcambiar.Caption = "Nuevo Contenido
datocambiadohex &.":"& bits & " : " s Chr (datocambiadodec)End Iftxtcambiar.SetFocustxtcambiar.Text = ""txtcambiar.Enabled = False
End IfEnd Sub
Prívate Sub Form_Initialize()txtinicial.Enabled = Truetxtinicial.Visible = Truetxtinicial.Text = ""txtinicial.SetFocus
End Sub
Private Sub grilla_KeyPress(KeyAscii As Integer)If KeyAscii = 67 Or 99 Then
grilla^DblClickEnd If
End Sub
Private Sub grilla_SelChange()grilla_Click
End Sub
Private Sub txtfinal_Click()cmdmostrar.Enabled = True
End Sub
Private Sub Form_Activate()Width = Screen.Width * 0.7 ''Establece la anchuraHeight = Screen.Height * 0.65 ''Establece la altura.Left = (Screen.VJidth - Width) / 2 ''Centrado horizontal.
188
CÓDIGO FUENTE
Top = (Screen.Height - Height) / 4 ''Centrado verticalEnd Sub
Private Sub grilla_DblClick{)cmdcambiar.Enabled = Truecmdcambiar.SetFocusIf grilla.Col = 1 Then
grilla. Col = grilla. Col -f 1GoTo informa
Elself grilla.Col = 2 ThenGoTo informa
Elself grilla.Col = 3 Thengrilla.Col = grilla.Col - 1GoTo informa
Elself grilla.Col = 4 Thengrilla.Col = grilla.Col - 2GoTo informa
ElseExit Sub
End Ifinforma:
txtcambiar.Enabled = Truecmdcambiar.Enabled = Truetxtcambiar.SetFocus
End Sub
Private Sub cmdcerrar_Click{)Unload MeEnd Sub
Private Sub txtfinal_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then
cmdmostrar.Enabled = Truecmdmostrar.SetFocus
End IfEnd Sub
Private Sub Form_Load()For i = 1 To 4
grilla.ColAlignment(i) = 2 'Centrado de texto en celdaNext iFor i - 1 To 4
grilla.ColWidth(i) = 1100 'Ancho de las columnasNext igrilla.RowHeight(0) = 400 'Ancho de la fila Ogrilla.Col = 1grilla.Row = Ogrilla.Text = "Dirección en Hexadecimal"
grilla.Col = 2grilla.Row = Ogrilla.Text = "Contenido en Hexadecimal"
189
CÓDIGO FUENTE
grilla.Col = 3grilla.Row = Ogrilla.Text = "Contenido en Binario"
grilla.Col = 4grilla.Row = Ogrilla.Text = "Contenido en ASCII"
cmdrnostrar . Enabled = Falsecrndcambiar . Enabled — Falsetxtfinal.Visible = False'Iblfinal.Visible = False
End Sub
Prívate Sub grilla_Click()If grilla.Row = 1 ThenIblinformacion.Visible = Falsetxtcambiar.Visible = FalseExit SubElsetxtcambiar.Visible = TrueIblinformacion.Visible = True
If grilla.Col = 1 ThenGoTo informa
Elself grilla.Col = 2 Thengrilla.Col = grilla.Col - 1GoTo informa
Elself grilla.Col = 3 Thengrilla.Col = grilla.Col - 2GoTo informa
Elself grilla.Col « 4 Thengrilla.Col = grilla.Col - 3GoTo informa
ElseExit Sub
End Ifinforma:
direccionl - "fiH" S grilla.Textdirecport = Val(direccionl}
If direcport >= O And direcport <= 31 ThenIblinformacion.Caption = "Controladores de DMA"
Elself direcport >= 32 And direcport <= 33 ThenIblinformacion.Caption = "Controlador de interrup"
Elself direcport >= 64 And direcport <= 67 ThenIblinformacion.Caption = "Tiraer/Contador"
Elself direcport = 96 ThenIblinformacion,Caption = "Teclado"
Elself direcport = 97 ThenIblinformacion.Caption = "Bocina (bits O y 1}"
Elself direcport >= 128 And direcport <= 131 ThenIblinformacion.Caption = "Registros de página DMA"
Elself direcport = 160 Then
190
CÓDIGO FUENTE
Iblinformacion.Caption -Elself direcport >= 192 And
Iblinformacion.Caption =Elself direcport = 512 Then
Iblinformacion.Caption =Elself direcport = 513 Then
Iblinformacion.Caption :Elself direcport = 632 Then
Iblinformacion.Caption =Elself direcport « 633 Then
Iblinformacion.Caption =Elself direcport = 634 Then
Iblinformacion.Caption -Elself direcport = 744 Then
Iblinformacion.Caption -Elself direcport = 745 Then
Iblinformacion.Caption ;Elself direcport = 746 Then
Iblinformacion.Caption =Elself direcport = 747 Then
Iblinformacion.Caption =Elself direcport = 748 Then
Iblinformacion.Caption =Elself direcport = 749 Then
Iblinformacion.Caption =Elself direcport = 750 Then
Iblinformacion.Caption -Elself direcport = 760 Then
Iblinformacion.Caption =Elself direcport = 761 Then
Iblinformacion.Caption =Elself direcport = 762 Then
Iblinformacion.Caption =Elself direcport = 763 Then
Iblinformacion.Caption -Elself direcport = 764 Then
Iblinformacion.Caption =Elself direcport = 765 Then
Iblinformacion.Caption =Elself direcport = 766 Then
Iblinformacion.Caption =Elself direcport >= 768 And
Iblinformacion.Caption =Elself direcport >= 800 And
Iblinformacion.Caption =Elself direcport >= 816 And
Iblinformacion.Caption =Elself direcport = 888 Then
Iblinformacion.Caption -Elself direcport = 889 Then
Iblinformacion.Caption =Elself direcport = 890 Then
Iblinformacion.Caption =Elself direcport >= 896 And
= "Bit mascara de DMA."direcport <= 511 Then
= "No usado en la placa del sistema"
= "No usado"
= "Puerto de juegos"
= "Puerto paralelo LPT2 de Salida"
= "Puerto paralelo LPT2 de Entrada"
= "Puerto paralelo LPT2 de E/S"
= "Puerto serial COM4 (TxB/RxB)"
= "Puerto serial COM4 (IER)"
= "Puerto serial COM4 (IIR)"
= "Puerto serial COM4 (LCR)"
= "Puerto serial COM4 (MCR)"
= "Puerto serial COM4 {LSR)"
• "Puerto serial COM4 (MSR)"
• "Puerto serial COM2 (TxB/RxB)"
•• "Puerto serial COM2 (IER) "
• "Puerto serial COM2 (IIR)"
• "Puerto serial COM2 (LCR)"
• "Puerto serial COM2 (MCR)"
= "Puerto serial COM2 (LSR)"
= "Puerto serial COM2 (MSR)"direcport <= 799 Then: "Usado para tarjetas prototipo"direcport <= 815 Then¡ "Controladores de HD (PS/2 30)"direcport <= 831 Then: "Controladores SCSI"
: "Puerto paralelo LPTl de Salida"
: "Puerto paralelo LPTl de Entrada"
= "Puerto paralelo LPTl de E/S"direcport <= 943 Then
191
Iblinf orina cionElself direcport >
IblinformacionElself direcport >
Iblinf orina cion.Elself direcport >=
Iblinformacion.Elself direcport =
Iblinformacion.Elself direcport =
Iblinformacion.Elself direcport =
Iblinformacion.Elself direcport =
Iblinformacion.Elself direcport =
Iblinformacion.Elself direcport -
Iblinformacion.Elself direcport =
Iblinformacion.Elself direcport >=
Iblinformacion.Elself direcport =
Iblinformacion.Elself direcport =
Iblinformacion.Elself direcport =
Iblinformacion.Elself direcport =
Iblinformacion.Elself direcport ~
Iblinformacion.Elself direcport =
Iblinformacion.Elself direcport =
Iblinformacion.Elself direcport >=
Iblinformacion.
Else
CÓDIGO FUENTE
.Caption = "No usado"= 956 And direcport <= 958 Then.Caption = "LPTl (sólo en tipo MCA)monocro"- 960 And direcport <= 975 Then.Caption = "Controlador EGA/VGA"= 976 And direcport <= 991 Then.Caption = "Adaptador gráfico de color CGA"1000 Then.Caption = "Puerto serial COM3 (TxB/RxB)"1001 Then.Caption - "Puerto serial COM3 (IER)"1002 Then.Caption = "Puerto serial COM3 (IIR)"1003 Then.Caption = "Puerto serial COM3 (LCR)"1004 Then.Caption = "Puerto serial COM3 (MCR)"1005 Then.Caption = "Puerto serial COM3 (LSRJ"1006 Then.Caption = "Puerto serial COM3 (MSR)"= 1008 And direcport <= 1015 Then.Caption = "Controlador de unidad de disco"1016 Then.Caption = "Puerto serial COMÍ (TxB/RxB)"1017 Then.Caption = "Puerto serial COMÍ (IER)"1018 Then.Caption = "Puerto serial COMÍ (IIR}"1019 ThenCaption = "Puerto serial COMÍ (LCR)"1020 ThenCaption = "Puerto serial COMÍ (MCR)"1021 ThenCaption = "Puerto serial COMÍ (LSRJ"1022 ThenCaption = "Puerto serial COMÍ (MSR)"1024 And direcport <= 65535 Then
Caption - "No usado en el proyecto de la PC1
= "No existe información1Iblinformacion.CaptionExit Sub
End IfEnd If
End Sub
Prívate Sub txtinicial^KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then
txtfinal.Visible = TrueIblfinal.Visible = Truetxtfinal.SetFocuscmdmostrar.Enabled = True
End If
192
CÓDIGO FUENTE
End Sub
Prívate Sub txtcambiar_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then
cmdcambiar_ClickEnd If
End Sub
FORMULARIO PASSWORD1
Begin VB.Form frmpassword
BorderStyleCaptionClientHeightClientLeftClientTopClientWidthHeightIcónLeftLinkTopicMaxButtonMDIChildMinButtonScaleHeightScaleWidthShowInTaskbarTopWidth
3 'Fixed Dialog"CONTRASEÑA"22053390253544102565"PASSWORD.fr:<":00003330"Forml"O 'Falsa-1 'True
'False
"MS Sans Serif17008.25
O22054410O 'False22354530
Begin VB.CommandButton cancelarCaption = "SCancelar1BeginProperty Font
ñame =charset —weight -size =underline - O 'Falseitalic ~ O 'Falsestrikethrough = O 'False
EndPropertyHeight = 375Left = 3000Tablndex = 3Top = 1680Width - 1215
EndBegin VB.CommandButton cmdAceptar
Caption = "SAceptar"BeginProperty Font
ñame = "MS Sans Serif"charset = 1
193
CÓDIGO FUENTE
weight = 700size = 8.25underline = Oitalic = Ostrikethrough = O
EndPropertyHeightLeftTablndexTopWidth
EndBegin VB.TextBox Textl
HeightLeftMaxLength —PasswordChar =Tablndex =TopWidth
EndBegin VB.Image Imagel
HeightLeftPicture =TopWidth
EndBegin VB.Label Labell
Caption =BeginProperty Font
ñamecharsetweightsizeunderline = Oitalic = Ostrikethrough = O
EndPropertyHeight = 855Left = 720Tablndex = OTop = 120Width = 3615
EndEndAttribute VB_Name = "frmpassword"Attribute VB_Creatable = FalseAttribute VB_Bxposed = False
Prívate Sub cmdAceptar_Click()clave = textl.TextIf clave = "rmjports" Then
Unload Me
FalseFalseFalse
375240216801215
375240
110803975
480120"PASSWORD.frx":OOOC120480
?"PASSWORD.frx":044E
"MS Sans Serif"17008.25O 'FalseO 'FalseO 'False
194
CÓDIGO FUENTE
frmescritura.ShowElse
MsgBox "Lo siento, Acceso Denegado. Verifique si su contraseñaestá con minúsculas e intente de nuevo", 16, "Acceso"
Exit SubEnd If
End Sub
Private Sub cancelar_Click(}Unload Me
End Sub
Private Sub Form_Activate()Width = Screen.Width * 0.38Height = Screen.Height * 0.28Left = (Screen.Width - Width) / 2Top = {Screen.Height - Height) / 4
End Sub
''Establece la anchura''Establece la altura.1'Centrado horizontal.''Centrado vertical.
Private Sub textl^KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then
cmdAceptar_ClickEnd If
End Sub
FORMULARIO PASSWORD2
Begin VB. Forra frmpasswordp
BorderStyleCaptionClientHeightClientLeftClientTopClientWidthHeightIcónLeftLinkTopicMaxButtonMDIChildMinButtonScaleHeightScaleWidthShowInTaskbarTopWidth
3 'Fixed Dialog"CONTRASEÑA"21903420511544102550"PASSWP.frx":00003360"Forml"O 'False
TrueFalse
-1O21904410O 'False48154530
Begin VB.CommandButton cancelarCaption = "¿Cancelar"BeginProperty Font
ñame = "MS Sans Serif'charset = 1
195
CÓDIGO FUENTE
weight =size =underline =italic =strikethrough =
EndPropertyHeight =LeftTablndex =Top -Width
EndBegin VB.CommandButton
Caption =BeginProperty Font
ñame =charset :
weight =size :
underline =italic =strikethrough =
EndPropertyHeightLeftTablndex =TopWidth
EndBegin VB.TextBox Textl
HeightLeftMaxLength =PasswordChar =TablndexTopWidth
EndBegin VB.Image Imagel
Height =LeftPicture =TopWidth
EndBegin VB.Label Labell
Caption =BeginProperty Font
ñame =charset =weight =size =underline =italic =
7008.25O 'FalseO 'FalseO 'False
3753000316801215
cmdAceptar"¿Aceptar"
"MS Sans Serif"17008.25O 'FalseO 'FalseO 'False
375240216801215
375240
110803975
480120"PASSWP.frx":OQOC120480
$"PASSWP.frx":044E
"MS Sans Serif"17008.25O 'FalseO 'False
¡96
CÓDIGO FUENTE
strikethrough = O 'FalseEndPropertyHeight = 855Left = 720Tablndex = OTop = 120Wldth = 3615
EndEndAttribute VB^Name = "frmpasswordp"Attribute VB_Creatable = FalseAttribute VB^Exposed = FalsePrívate Sub cancelar_Click()
Unload MeEnd Sub
Prívate Sub cmdAceptar_Click()clave = textl.TextIf clave = "rmjports" Then
Unload MefrmEscrituraP.Show
ElseMsgBox "Lo siento, Acceso Denegado. Verifique si su contraseña
está con minúsculas e intente de nuevo", 16, "Acceso"Exit Sub
End IfEnd Sub
Private Sub Form_Activate{)Width = Screen.WidtGDh * 0.38 ''Establece la
ü Height = Screen.HeightpO.28 ''Establece la altura.Left = (Screen.Width - Width) / 2 ''Centrado horizontal.Top = (Screen.Height - Height) / 4 ''Centrado vertical.
End Sub
Private Sub textl_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then
cmdAceptar_ClickEnd If
End Sub
FORMULARIO LECTURA DE UN PUERTO
Begin VB.Form frmLecturaP
BorderStyle = 3 'Fixed DialogCapnion = "Lectura de un Puerto1ClientHeight = 3315ClientLeft = 1875ClientTop = 3030ClientWidth = 6075
197
CÓDIGO FUENTE
3675"PUERTOLE.frx":00001815"Forml"O 'False-1 'TrueO 'False33156075O 'False27306195
"MS Sans Serif17008.25OOO
FalseFalseFalse
HeightIcón =LeftLinkTopic =MaxButton =MDIChildMinButtonScaleHeight =ScaleWidthShowInTaskbar =TopWidthBegin VB.CommandButton cmdmostrar
Caption = "¿MOSTRAR"BeginProperty Font
ñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyHeightLeftTablndex =TopWidth
EndBegin VB.Frame Frame4
Caption =BeginProperty Font
ñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyForeColor ~ &HOOFFQOQO&Height = 975Left - 120Tablndex = 7Top = 120Width - 1815
4952401216801575
'Instrucciones"
"MS Sans Serif17008.25O 'FalseO 'FalseO 'False
HEX1
Begin VB.LabelCaption
HeightLeftTablndexTopWidth
LabelS"Tanto dirección como lecturas son formato
61524082401455
198
CÓDIGO FUENTE
EndEndBegin VB.TextBox Textl
BackColor =BeginProperty Font
ñame =charset -weight :
size :
underline -italic :
strikethrough :EndPropertyHeight ~LeftMultiLine =ScrollBars =Tablndex =TopWidth
EndBegin VB.Frame FrameS
Caption =BeginProperty Font
ñame :
charset :
weight :
size =underline =italic :
strikethrough -EndPropertyForeColor =Height =LeftTablndexTopWidth
EndBegin VB.Timer Timerl
Enabled =Interval ~LeftTop =
EndBegin VB.CommandButton
Caption =BeginProperty Font
ñame =charset =weight =sizeunderline =italic =
¿HOOFFFFFF5
"MS Sans Serif17008.25O 'FalseO 'FalseO 'False
22954680-1 'True2 'Vertical5480735
"Muestras"
"MS Sans Serif"17008.25O 'FalseO 'FalseO 'False
SHOOFFOOOOS2895444061201215
O 'False137202040
cmdcerrar"SCERRAR"
"MS Sans Serif"1700
: 8.25
O 'FalseO 'False
199
CÓDIGO FUENTE
strikethroughEndPropertyHeightLeftTablndexTopWidth
EndBegin VB.Frame Framel
Caption =BeginProperty Font
ñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyForeColor =HeightLeftTablndexTopWidth
O 'False
495240425201575
"Lecturas"
"MS Sans Serif17008.25O 'FalseO 'FalseO 'False
6HOOFF000061215 '2160218002055
Begin VB.Label IblRefrescoAlignmentBorderStyleBeginProperty
ñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyHeightLeftTablndexTopWidth
EndEndBegin VB.TextBox
BeginPropertyñamecharsetweightsizeunderlineitalicstrikethrough
EndProperty
Font
2 'Center1 'Fixed Single
"MS Sans Serif"17009.75O False
FalseFalse
3757203480735
txtlngDiracciónFont
"MS Sans Serif"~ 1
7009.75O 'FalseO 'FalseO 'False
200
CÓDIGO FUENTE
37532404O1080735
"MS Sans Serif"17008.25O False
FalseFalse
HeightLeftMaxLength =Tablndex =TopWidth
EndBegin VB.Frame fralngreso
Caption = "Ingrese"BeginProperty Forit
ñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyForeColor = SHOOFFOOOO&Height = 1575Left = 2160Tablndex = 1Top = 120Width s 2055Begin VB.TextBox txtNmuestras
BeginProperty Fontñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyHeightLeftMaxLength =Tablndex =TopWidth
EndBegin VB.Label Label2
Caption =BeginProperty Font
ñame =charset =weight =size =underline =italic =strikethrough =
EndPropertyHeight = 375Left = 120
"MS Sans Serif17009.75O False
FalseFalse
OO
3751080410360735
"No de muestras"
"MS Sans Serif17008.25O 'FalseO 'FalseO 'False
201
CÓDIGO FUENTE
Tablnciex = 11Top = 360Width = 855
EndBegin VB.Label Labell
Caption = "Dirección de lectura"BeginProperty Font
ñame = "MS Sans Serif"charset ~ 1weight = 700size = 8.25underline = O 'Falseitalic = O 'Falsestrikethrough = O 'False
EndPropertyHeight - 375Left = 120Tablndex = 9Top = 960Width = 975
EndEnd
EndAttribute VB^Name = "frmLecturap"Attribute VB^Creatable = FalseAttribute VB__Exposed = False
Prívate Sub cmdcerrar_Click()Unload Me
End Sub
Private Sub cmdmostrar_Click()If txtlngDireccion.Text = "" Then
Exit SubElse
dirl = txtlngDireccion.Textdirasc = Asc(dirl)If dirasc >= 48 And dirasc <= 57 Then
GoTo ingreElself dirasc >~ 65 And dirasc <= 70 Then
GoTo ingreElself dirasc >= 91 And dirasc <= 102 Then
GoTo ingreElse
MsgBox "Solo formato HEXADECIMAL", 48, "Formato1Exit Sub
End Ifingre:
dirección = "&H" £ dirldirlec = Val (dirección)Timerl.Enabled = Truetextl_Click
End If
202
End Sub
CÓDIGO FUENTE
Prívate Sub Form Actívate ()Width = Screen.Width * 0.5Height = S creen. Height * O . 4Left ~ (Screen.Width - Width) / 2Top = (5 creen. Height - Height) / 4txtNmuestras . SetFocus
End Sub
''Establece la anchura.' ' Establece la altura .
'' Centrado horizontal.' ' Centrado vertical .
Private Sub textl_click ( )For i = 1 To Nmuestras
muestradec = Medir (dirlec, medida)rnuestrahex = Hex (muestradec)If muestradec >= O And muestradec <= 15 Then
c$ = c$ 5 "O" £ muestrahex s Chr(13) £ Chr(lO)Else
c$ = c$ £ muestrahex & Chr(13) & Chr(lO)End If
Next itextl.Text = c$
End Sub
Prívate Sub TimerlJTimer ( )muestra = Medir (dirlec, medida)muestral = Hex (muestra)If muestra >— O And muestra <= 15 Then
Iblrefresco .Caption = "O" & muestralElse
Iblrefresco . Caption = muestralEnd If
End Sub
Prívate Sub txt!ngDireccion__KeyPress (KeyAscii As Integer)If KeyAscii - 13 Then
If txtlngDireccion.Text = "" ThenExit Sub
Elsedirl = txtlngDireccion.Textdirasc = Asc(dirl)If dirasc >- 48 And dirasc <= 57 Then
GoTo ingreBisel f dirasc >= 65 And dirasc <= 70 Then
GoTo ingreElself dirasc >= 97 And dirasc <- 102 Then
GoTo ingreElse
MsgBox "Solo formato HEXADECIMAL" , 48, "Formato"Exit Sub
End Ifingre
dirección = "5H" & dirldirlec = Val (dirección)Timerl.Enabled = True
203
CÓDIGO FUENTE
textl_ClickEnd If
End IfEnd Sub
Prívate Sub txtNmuestras_KeyPress(KeyAscii As Integer)If txtNmuestras ~ "" Then
Exit SubElse
If KeyAscii = 13 ThenNmuestras = Val(txtNmuestras.Text)txtlngDireccion.SetFocus
End IfEnd If
End Sub
FORMULARIO ESCRITURA EN UN PUERTO
Begin VB.Form frmEscrituraP
BorderStyleCaptionClientHeightClientLeftClientTopClientWidthHeightIcónLeftLinkTopicMaxButtonMDIChildMinButtonScaleHeightScaleWidthShowInTaskbarTopWidth
3 'Fixed Dialog"Escritura en un Puerto130002595163544553405"PUERTOES.frx":00002535"Forml"O 'False-1 'True
'False
False
O30004455O12904575
Begin VB.CommandButton cmdenviarCaption = "&ENVIAR"BeginProperty Font
ñame =charset —weight =size =underline =italic =strikethrough =
EndPropertyHeight = 495Left '= 360
"MS Sans Serif"O7008.25OOO
FalseFalseFalse
204
CÓDIGO FUENTE
Tablndex = 10Top = 1440Width = 1575
EndBegin VB.Frame Frame4
Caption = "Instrucciones"BeginProperty Font
ñame = "MS Sans Serif"charset = 1weight ~ 700size - 8,25underline = O 'Falseitalic = O 'Falsastrikethrough = O 'False
EndPropertyForeColor = SHOOFFOOOOsHeight = 975Left = 120Tablndex - 8Top « 240Width - 1935Begin VB.Label LabelS
Caption ~ "Ingresar tanto dirección como dato enformato HEX"
Height = 615Left = 120Tablndex = 9Top = 240Width = 1695
EndEndBegin VB . CornmandButton cmdcerrar
Caption = "&CERRAR"BeginProperty Font
ñame = "MS Sans Serif"charset = 1weight = 700size = 8.25underline = O 'Falseitalic = O 'Falsestrikethrough = O 'False
EndPropertyHeight = 495Left = 360Tablndex = 7Top = 2160Width = 1575
EndBegin VB.Frame Frame2
Caption = "Escritura"BeginProperty Font
ñame = "MS Sans Serif"charset = 1weight = 700
205
CÓDIGO FUENTE
sizeunderlineitalicstrikethrough
EndPropertyForeColor -HeightLeftTablndex =Top -WidthBegin VB.TextBox
.25FalseFalseFalse
6HOOFFQQOQ&22952280O2402055
txtCambioBeginProperty Font
ñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyHeightLeftMaxLength =TablndexTopWidth
"MS Sans Serif"17009.75O 'FalseO 'FalseO 'False
375108026960735
EndBegin VB.TextBox txtdirescri
BeginProperty Fontñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyHeight =LeftMaxLength =TablndexTopWidth
EndBegin VB.Label Labell
Alignment =BorderStyle =BeginProperty Font
ñamecharsetweightsizeunderline
"MS Sans Serif"17009.75O . 'FalseO 'FalseO 'False
375108041360735
2 'Center1 'Fixed Single
"MS Sans Serif17009.75O 'False
206
CÓDIGO FUENTE
italicstrikethrough
EndPropertyHeightLeftTablndex =Top =Width
EndBegin VB.Label Label2
Caption =BeginProperty Font
ñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyHeightLeft -Tablndex ~Top =Width
EndBegin VB.Label LabelS
Caption —BeginProperty Font
ñamecharsetweightsizeunderlineitalicstrikethrough
EndPropertyHeightLeftTablndex «Top -Width «
EndBegin VB.Label Label4
Caption =BeginProperty Font
ñamecharsetweightsizeunderlineitalicstrikethrough
EndProperty
O 'FalseO 'False
375108051560735
"Dirección de cambio"
"MS Sans Serif"17008.25O 'FalseO 'FalseO 'False
3751204360975
"Nuevo dato"
"MS Sans Serif"1700
: 8.25
O 'FalseO 'FalseO False
3751203960975
'Dato cambiado"
"MS Sans Serif"17008.25O 'FalseO 'FalseO 'False
2Ü7
CÓDIGO FUENTE
HeightLeftTablndexTopWidth
37512021560855
EndEnd
EndAttribute VB_Name = "frmEscrituraP"Attribute VB^Creatable - FalseAttribute VB^Exposed = FalsePrívate Sub crndcerrar__Click ()
Unload MeEnd Sub
Prívate Sub cmdenviar_Click()If txtCambio = "" Then
Exit SubElse
dirl - txtCambio.Textdirasc " Asc(dirl)If dirasc >= 48 And dirasc <= 57 Then
GoTo ingreElself dirasc >= 65 And dirasc <= 70 Then
GoTo ingreElself dirasc >= 97 And dirasc <= 102 Then
GoTo ingreElse
MsgBox "Solo formato HEXADECIMAL", 48, "Formato"Exit Sub
End Ifingre
vcontroll = "SH" 5 dirlvcontrol = Val(vcontroll)send ~ Enviar(direnv, vcontrol)muestradec = Medir(direnv, medida)muestrahex = Hex(muestradec)If muestradec >= O And muestradec <= 15 Then
Labell.Caption = "O" £ muestrahexElse
Labell.Caption = muestrahexEnd If
End IfEnd Sub
Prívate Sub Form_Activate()Width - Screen.Width * 0.38Height » Screen.Height * 0.34Left = (Screen.Width - Width) / 2Top = (Screen.Height - Height) / 4
End Sub
1'Establece la anchura.' 'Establece la altura.
1'Centrado horizontal.''Centrado vertical.
Prívate Sub txtCambio^KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then
2Ü8
CÓDIGO FUENTE
If txtCambio = "" ThenExit Sub
Elsedirl = txtCambio.Textdirasc = Asc{dirl)If dirasc >= 48 And dirasc <= 57 Then
GoTo ingreElself dirasc >= 65 And dirasc <= 70 Then
GoTo ingreElself dirasc >= 97 And dirasc <= 102 Then
GoTo ingreElse
MsgBox "Solo formato HEXADECIMAL", 48, "Formato1Exit Sub
End Ifingre:
vcontroll ~ "£H" £ dirlvcontrol = Val(vcontroll)send = Enviar(direnv, vcontrol)muestradec = Medir(direnv, medida)muestrahex ~ Hex(muestradec)If muestradec >= O And muestradec <= 15 Then
Labell.Caption = "O" £ muestrahexElse
Labell.Caption = muestrahexEnd If
End IfEnd If
End Sub
Prívate Sub txtdirescri_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then
If txtdirescri.Text = "" ThenExit Sub
Elsedirl = txtdirescri.Textdirasc = Asc(dirl).If dirasc >= 48 And dirasc <= 57 Then
GoTo ingreElself dirasc >- 65 And dirasc <= 70 Then
GoTo ingreElself dirasc >= 97 And dirasc <= 102 Then
GoTo ingreElse
MsgBox "Solo formato HEXADECIMAL", 48, "Formato"Exit Sub
End Ifingre:
dirección = "&H" 5 dirldirenv = Val(dirección)txtCambio.SetFocus
End IfEnd If
209
CÓDIGO FUENTE
End Sub
FORMULARIO PRESENTACIÓN
Begin VB. Forra frmPresent
BackColorBorderStyleCaptionClientHeightClientLeftClIentTopClientWidthHeightIcónLeftLinkTopicMaxButtonMinButtonScaleHeightScaleWidthTopWidth
&HOOCQCOCO&1 'FIxed Single"Presentación"35551560'219059853915"PRESENT.frx":00001500"Forml"O Tais eO Tais e3555598518906105
Begin Threed.SSPanel SSPanellHeightLeftTablndexTopWidthversiónextentxextentystockprops
captionf orecolorBeginProperty
ñamecharsetweightsiseunderlineitalicstrikethroi:
169524003605415655369551299015$" PRESENT. frx": 04 42255
font {FB8FQ823-0164-101B-84ED-08Q02B2EC713— "Algerian"— i
40014.250 Talse0 Talse
igh = 0 ' FalseEndPropertybevelinnerfloodcolorfontSd
22554
EndBegin Threed.SSCommand cmdSalir
Height = 495Left = 3960Tablndex = 2
210
CÓDIGO FUENTE
TopWidthversión
_extenty =_stockprops =caption —forecolor =BeginProperty f ont
ñamecharsetweightsiseunderlineitalicstrikethrough
EndPropertyfontSd =
2520169565536299087378"&Salir"8388736FB8F0823-0164-101B-84ED-08002B2EC713}
"Arial"170012O 'FalseO 'FalseO 'False
EndBegin Threed.SSCommand cmdContinuar
HeightLeftTablndexTopWidthversiónextentxextentystockprops
captionforecolorBeginProperty
ñamecharsetweightsizeunderlineitalicstrikethroi
495360
= 12520169565536299087378"¿Continuar"8388736
font {FB8FQ823-0164-101B-84ED-08002B2EC713"Arial"17001200
igh - 0
FalseFalseFalse
EndPropertyfontSd = 4
EndEndAttribute VB_Name = "frmPresent1Attribute VB_Creatable ~ FalseAttribute VB_Exposed = FalsePrívate Sub cmdContinuar_Click{;
Mdilnicio.Visible = TrueUnload Me
End Sub
Private Sub cmdSalir_Click()End
End Sub
211
CÓDIGO FUENTE
Prívate Sub Form^ActivateWidth = Screen.Wicith 0.5Height = Screen. Height * 0.4Left = (Screen.Wicith - Width) / 2Top = (Screen. Height - Height) / 2
Encl Sub
''Establece la anchura''Establece la altura.''Centrado horizontal.1'Centrado vertical.
FORMULARIO ACERCA DE
Begin VB.Form frraacercade
BackColorBorderStyleCaptionClientHeightClientLeftClientTopClientWidthHeightIcónLeftLinkTopicMaxButtonMDIChildMinButtonScaleHeightScaleWidthTopWidth
SHOOCOCOCOS1 'Fixed Single"ACERCA DE"59402595151561806300"ACERCADE.f rx":00002535"Forml"O 'False-1 'TrueO 'False5940618012156300
Begin Threed.SSPanel SSPanellHeightLeftTablndex _ =Top =Width_version =_extentx =^extenty =_stockprops =caption =forecolor =BeginProperty font
ñamecharsetweightsizeunderlineitalicstrikethrough
EndProperty
2055360O3605175655369128362515$"ACERCADE.frx":044216711680FB8FQ823-0164~1Q1B~84ED~Q8002B2EC713
= "Algerian"170012OOO
FalseFalseFalse
212
CÓDIGO FUENTE
bevelouter =bevelinner =alignment =
EndBegin VB.Label Labell
BorderStyleCaption =ForeColor =HeightLeftTablndex =TopWidth
EndBegin VB.Label Label2
BackColor =BorderStyle =Caption =BeginProperty Font
1 'Fixed Single$"ACERCADE.frK":05 4A6HOOFFOOOO&495360345605175
SHQOCOCOCOS1 'Fixed Single$"ACERCADE.frx":05C6
ñame =charset =weight =size =underline =italic =strikethrough -
EndPropertyForeColor =HeightLeftTablndex =Top =Width
EndBegin Threed. SSCoramand
HeightLeftTab Index ~TopVJidthversión =extentx =extenty =stockprops =
caption =BeginProperty font {
ñame =charset =weight =size =underline =italic =strikethrough =
EndProperty
"MS Sans Serif"17009.750 'False0 'False0 'False
SHOOFFOOOO&1695360226405175
SSCommandl495216015400145565536256687378"&ACEPTAR"FB8 FO 823-01 64-1 01B-84ED-0 8 002B2EC7 13
"MS Sans Serif"17008.250 'False0 'False0 'False
213
CÓDIGO FUENTE
fontSd = 4End
EndAttribute VB_Name = "frmacercade"Attribute VB_Creatable = FalseAttribute VB_Exposed = FalsePrívate Sub Form_Load()
Width = Screen.Width * 0.5Height = Screen.Height * 0.7Left = (Screen.Width - Width) / 2Top = (Screen.Height - Height) / 4
End Sub
1'Establece la anchura''Establece la altura.1'Centrado horizontal.''Centrado vertical.
Prívate Sub SSCommandl_ClickUnload Me
End Sub
FORMULARIO SISTEMA
Begin VB.Form frraCallDlls
BorderStyle =Caption =ClientHeight =ClientLeftClientTopClientWidthClipControls =EnabledBeginProperty Font
ñame :
charset =weight =size ;
underline ;
italic =strikethrough =
EndPropertyHeightIcón =LeftLinkTopic =MaxButton =MDIChildMinButton =ScaleHeightScaleWidthShowInTaskbar =Top =WidthBegin VB.PictureBox
AutoRedraw -AutoSize -
3 'Fixed Dialog"SISTEMA OPERATIVO"2460402036604935O 'FalseO 'False
"MS Sans Serif"17008.25O 'FalseO 'FalseO 'False
2820"SISTEMA.frx":00003960"Forml"O 'False-1 'TrueO 'False24604935O 'False33605055picSprite
-1 'True-1 'True
214
CÓDIGO FUENTE
HeightLeftPictureScaleHeightScaleModeScaleWidthTablndexTopVisibleWidth .
540960"SISTEMA.frx":OOOC323 'Pixel32 .231920O 'False540
EndBegin VB .PictureBox picCopy
AutoRedrawBorderStyleHeightLeftScaleHeightScaleModeScaleWidthTablndexTopVisibleWidth
-1 'TrueO 'None4953480333 'Pixel33221920O495
False
EndBegin VB.PictureBox picMask
AutoRedraw =AutoSize =HeightLeftPicture =ScaleHeight =ScaleMode =ScaleWidthTablndexTopVisibleWidth
EndBegin VB.Frame fralnfo
Caption =ClipControls =HeightIndex ~LeftTablndex =Top =Width
EndBegin VB.Timer tmrBounce
-1 'True-1 'True540240"SISTEMA.frx1323 'Pixel32211920O 'False540
"InstruccionesO 'False1695O120O1204455
0316
EnabledIntervalLeftTop
O140801920
False
End
215
CÓDIGO FUENTE
Begin VB.FrameCaptionClipControlsHeightIndexLeftTablndexTopVisibleWidthBegin VB.Label
CaptionHeightIndexLeftTablndexTopWidth
EndBegin VB.Label
AutoSizeCaptionHeightIndexLeftTablndexTopWidth
EndBegin VB.Label
AutoSizeCaptionHeightIndexLeftTablndexTopWidth
EndBegin VB.Label
AutoSizeCaptionHeightIndexLeftTablndexTopWidth
EndEndBegin VB.Frame
CaptionClipControlsHeight
fralnfo= "Información general"= O 'False
1695412012120O 'False4455
Ibllnfo"Teclado:"435141201610804230
Ibllnfo
Ibllnfo
Ibllnfo
fralnfo
-1 'True"Lenguaje:1951312015840855
-1 'True"Mouse:"1951212014360630
-1 'True"Red:"1951112013600420
"Sistema operativo"O 'False1695
216
CÓDIGO FUENTE
IndexLeftTablndexTopVisibleVJidth
11201120O4455
False
Begin VB.Label IbllnfoAutoSizeCaption =HeightIndex =LeftTablndexTopWidth
EndBegin VB.Label Ibllnfo
AutoSize =Caption =HeightIndex =LeftTablndex =TopWidth
EndBegin VB.Label Ibllnfo
AutoSize =Caption =Height =Index =LeftTablndex =TopWidth
EndEndBegin VB.Frame fralnfo
Caption =ClipControls =Heightíndex =LeftTablndexTopVisible =Width
-1 'True11 (Modo mejorado) "195
36076001500
-1 'True"Disk Operating System 5.0"195424039602265
-1 'True"Microsoft Windows Versión 3.1"195224023602640
= "Procesador, memoria y recursos del sistema"O 'False1695
= 21204120O 'False4455
Begin VB.Timer tmrSysInfoInterval = 1Left = 3840Top = 240
EndBegin VB.Shape shpFrame
Height = 255
217
CÓDIGO FUENTE
Index = 1Left = 1080Top = 960Width = 3135
EndBegin VB.Shape shpBar
BackStyle = 1 'OpaqueDrawMode = 7 'InvertHeight = 255Index ~ 1Left = 1080Top = 960Width = 1695
EndBegin VB.Shape shpFrame
Height = 255Index = 2Left = 1080Top = 1320Width = 3135
EndBegin VB.Shape shpBar
BackStyleDrawModeHeightíndexLeftTopWidth
EndBegin VB.Label
AlignmentCaptionHeightíndexLeftTablndexTopWidth
EndBegin VB.Label
AlignmentCaptionHeightIndexLeftTablndexTopWidth
EndBegin VB.Label IblR
Caption = "GDI1Height = 255índex = 1
= 1 'Opaque= 7 'Invert
255= 2
108013201695
IblResInfo2 'Center
= "usuario"25-5
, , Q
10802013203135
IblResInfo2 'Center"gdi"255
1080199603135
218
CÓDIGO FUENTE
LeftTablndexTopWidth
EndBegin VB.Label
CaptionHeightIndexLeftTablndexTopWidth
EndBegin VB.Label
AutoSizeCaptionHeightIndexLeftTablndexTopWidth
EndBegin VB.Label
AutoSizeCaptionHeightíndexLeftTablndexTopWidth
EndEnd
24018960855
IblR= "Usuario"
255= 2
240171320855
Ibllnfo= -1 'True= "CPU: 486 (con procesador matemático)
195"~" *J
24063602940
Ibllnfo-1 'True
= "Memoria libre"1956240U
6001095
Begin VB . Frame fralnfoCaptionClipControlsHeightIndexLeftTablndexTopVisibleWidth
"Video"0 'False1695312081200 'False4425
Begin VB.Label IbllnfoAutoSize = -1 'TrueCaption = "Colores: 'Height - 195índex = 10Left = 240Tablndex = 11Top = 1320Width = 600
219
CÓDIGO FUENTE
EndBegin VB.Label Ibllnfo
AutoSize = -1 'TrueCaption = "Resolución"Height = 195Index = 9Left = 240Tablndex = 10Top = 960Width = 915
EndBegin VB.Label Ibllnfo
Caption = "Controlador de video:"Height = 495Index = 8Left « 240Tablndex = 9Top = 360Width = 3975
EndEnd
EndAttribute VBJtfame = "frmCallDlls"Attribute VB_Creatable = FalseAttribute VB_Exposed = FalseOption ExplicitDirá dx As Integer, dy As Integer, X As Integer, Y As IntegerDim PicWidth As Integer, PicHeight As IntegerDim RightEdge As Integer, BottomEdge As Integer
Prívate Sub cmdBitBlt_Click()Dim t As Integer
If tmrBounce.Enabled ThentmrBounce.Enabled = FalseRefresh
ElseScaleMode = PIXELSdx = 15dy = 15tmrBounce.Enabled = TruePicWidth = picSprite.ScaleWidthPicHeight ~ picSprite.ScaleHeightpicCopy. V/idth = PicWidthpicCopy.Height = PicHeightt = BitBlt(picCopy.hDC, O, O, PicWidth, PicHeight, hDC, X, Y,
SRCCOPY)End If
End Sub
1 Comienza la compilación condicional#If Win32 Then 'versión de 32 bits
Prívate Sub FillSysInfo()Dim FreeSpace As Currency, FreeBlock As Currency, tempfrainfo(4).Visible = False
22Ü
CÓDIGO FUENTE
1 Información acerca del sistema operativoDim YourSystem As SystemlnfoGetSystemlnfo YourSystem
If WindowsVersion(} = 4 ThenIblinfo (2) .Caption = "Microsoft Windows 95"lblinfo(3).Caption = ""Iblinfo(4).Caption = ""
ElseIblinfo (2) .Caption = "Microsoft Windows NT"Iblinfo(3).Caption = ""Iblinfo(4).Caption = ""
End If
1 Información acerca de la CPUIblinfo(5).Caption = "CPU: " £ YourSystem.dwProcessorType
1 Información de videoIblinfo(8).Visible = FalseIblinfo (9) .Caption = "Resolución: " & Screen.Width \X & " x " & Screen.Height \Y
Iblinfo(10}.Caption = "Colores: " & DeviceColors((hDC)}
1 Información generalIf GetSystemMetrics(SM_MOUSEPRESENT) Then
Iblinfo(11).Caption = "Mouse: " &GetSysIni("boot.description", "mouse.drv")
ElseIblinfo (11) .Caption = "Sin mouse"
End IfIblinfo(12) .Caption = "Red: " £ GetSysIni("boot.description" ,
"network.drv")Iblinfo(13).Caption = "Lenguaje: " &
GetSysIni ( "boot.description" , "language.dll")Iblinfo(14).Caption = "Teclado: " 5
GetSysIni("boot.description", "keyboard.typ")End Sub
#Else 'Versión de 16 bits
Prívate Sub FillSysInfo()Dim FreeSpace As Currency, FreeBlock As Currency, tempDim WinFlags As Long
1 Información acerca del sistema operativoWinFlags = GetWinFlags()
Iblinfo (2) .Caption = "Microsoft Windows Versión " fiWindowsVersion()
If WinFlags And WF_ENHANCED ThenIblinfo (3) .Caption = "(Modo mejorado}"
ElseIblinfo(3).Caption = "(Modo estándar)"
22 í
CÓDIGO FUENTE
End If
Iblinfo(4).Caption = "Disk Operating System " £ DosVersion()
'' Información acerca de la CPUIf WinFlags And WF_CPU486 ThenIblinfo(5).Caption = "CPU: 486"
Elself WinFlags And WF_CPU386 ThenIblinfo(5).Caption = "CPU: 386"
Elself WinFlags And WF__CPU286 ThenIblinfo(5).Caption = "CPU: 286"
End IfIf WinFlags And WF_80x87 Then
Iblinfo{5}.Caption = Iblinfo(5).Caption £ " (con coprocesadormatemático)"
End If
1 Información de videoIblinfo(8).Caption = "Controlador de video: " £
GetSysIni{"boot.description", "display.drv")Iblinfo(9}.Caption = "Resolución: " £ Screen.Width \X £ " x " & Screen.Height \Y
Iblinfo(10).Caption - "Colores: " fi DeviceColors((hDC))
1 Información generalIf GetSystemMetrics(SM_MOUSEPRESENT) ThenIblinfo(11).Caption = "Mouse: " 6
GetSysIni("boot.description", "mouse.drv")Else
Iblinfo(11).Caption = "Sin mouse"End IfIblinfo(12).Caption = "Red: " £ GetSysIni("boot.description",
"network.drv")Iblinfo(13).Caption = "Lenguaje: " £
GetSysIni{"boot.description", "language.dll")lblinfo(14) .Caption = "Teclado: " £ GetSysIni{"boot.description" ,
"keyboard.typ")End Sub
ÍÍEnd If'Fin de la compilación condicional
Prívate Sub Commandl_Click{)Unload Me
End Sub
' Comenzar compilación condicional
#If Win32 Then ' Versión de 32 bitsPrívate Sub Form_Load(}
Width = Screen.Width * 0.4 ''Establece la anchura.Height = Screen.Height ~ 0.25 ''Establece la altura.Left = (Screen.Width - Width) / 6 ''Centrado horizontal.Top = (Screen.Height - Height) / 4 ''Centrado vertical.
222
CÓDIGO FUENTE
Show 'Asegurar que este formulario tenga un' controlador, etc.
1 Load frmMenus'Icón = imglcon(1).PictureFillSysInfo'frmMenus.mnuSysInfo(3) .Visible = False
End Sub
#Else ' Versión de 16 bits
Private Sub Form_Load()Width = Screen.Width * 0.4 ''Establece la anchura.Height = Screen.Height * 0.25 ''Establece la altura.Left = [Screen.Width - Width) / 1.02 ''Centrado horizontalTop = (Screen.Height - Height} / 1.33 ''Centrado vertical.
Show ' Asegurar que este formulario tiene un' controlador, etc.
'Load frmMenus'Icón = imglcon(1).PictureFillSysInfo
End Sub#End If1 fin de compilación condicional
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)End ~
End Sub
Private Sub Form_Resize()Dim t As Integer, hDC As Integer
If WindowState = MINIMIZED ThenRightEdge = Screen.Width \XBottomEdge = Screen.Height \YIf tmrBounce.Enabled Then
hDC = GetDC(GetDesktopWindow())t = BitBlt(picCopy.hDC, O, O, PicWidth, PicHeight, hDC, X, Y,
SRCCOPY)ReleaseDC GetDesktopWindow(), hDC
End IfElse
ScaleMode = PIXELSRightEdge = ScaleWidthBottomEdge = ScaleHeightIf tmrBounce.Enabled Then
hDC = GetDC[GetDesktopWindow())t = BitBlt (hDC, X, Y, PicWidth, PicHeight, picCopy.hDC, 0., O,
SRCCOPY)ReleaseDC GetDesktopWindow(), hDC
End If
End IfEnd Sub
223
CÓDIGO FUENTE
Prívate Sub ImgIcon_MouseDown(Index As Integer, Button As Integer, ShiftAs Integer, X As Single, Y As Single)Dim IX As Integer, IY As Integer1hMenu y hSubMenu deben ser extensos para poder ejecutarse en 32 bitsDim hMenu As Long, hSubMenu As Long, R As IntegerDim menRect As Rect
If índex = 2 ThenFillSysInfo
End IfEnd Sub
Private Sub tmrBounce^Timer()'Lo siguiente es sólo texto estático para mejorar la velocidadStatic NewX As Integer, NewY As Integer, temp As IntegerStatic hDC As Integer, releaseit As Integer
'Calcular la nueva posiciónScaleMode = PIXELStemp = X + dxIf temp + PicWidth \ > RightEdge Then
dx = -Abs(dx)Elself temp < O Then
dx = Abs(dx)End If
NewX = X + dx
temp = Y -i- dyIf temp + PicHeight \ > BottomEdge Then
dy = -Abs(dy)Elself temp < O Then
dy = Abs(dy)End If
NewY = Y -i- dy
If WindowState = MINIMIZED ThenhDC = GetDC(GetDesktopWindow())releaseit = True
ElsehDC = Me.hDCreleaseit = False
End If
'Ahora realiza una llamada "transparente" a BitBlt:'1 Copia la parte posterior del antiguo segundo plano sobre la antigua'posición del gráfico12 Copia el segundo plano a donde va a ir el gráfico'3 Dibuja la máscara14 Dibuja el gráfico
temp = BitBlt (hDC, X, Y, PicWidth, PicHeight, picCopy.hDC, O, O,SRCCOPY)
224
CÓDIGO FUENTE
temp = BitBlt(picCopy.hDC, O, O, PicWidth, PicHeight, hDC, NewX,NewY, SRCCOPY)
temp = BitBlt(hDC, NewX, NewY, PicWidth, PicHeight, picMask-hDC, O,O, SRCAND)
temp = BitBlt(hDC, NewX, NewY, PicWidth, PicHeight, picSprite.hDC, O,O, SRCINVERT)
X = NewXY = NewYIf releaseit Then ReleaseDC GetDesktopWindow() , hDC
End Sub
'Comenzar la compilación condicional
#If Win32 Then 'Versión de 32 bits
Prívate Sub tmrSysInfo__Timer {)If frainfo(RES_INFO).Visible Then
Dim intX As IntegerFor intX - 1 To 2
IblResInfo(intX).Visible = FalseshpBar(intX).Visible = FalseshpFrame(intX).Visible = False
Next intXEnd If
IblR(l).Visible = FalselblR(2).Visible = False
Dim YourMemory As MemoryStatusGlobalMemorystatus YourMemorylblinfo(6).Caption = "Memoria libre: " 5 YourMemory.dwMemoryLoad
£ "%"
End Sub
#Else 'Versión de 16 bits
Private Sub tmrSysInfo^Timer()Static Res(l To 2) As Integer, OldFreeSpace As CurrencyDirn i As Integer, newVal As Integer, temp, FreeSpace As Currency
' Actualizar la información de los recursos si están visibles.If frainfo(RESJtNFO).Visible Then
For i = 1 To 2newVal = GetFreesystemResources(i)' Reduce el parpadeo actualizando la barra de gráficos y' la pantalla de porcentaje sólo si han cambiado
realmente.If newVal <> Res(i) Then
Res(i) = newValIblResInfo(i).Caption = Res(i) & "%"shpBar(i)-Width = shpFrame(i).Width * Res(i) \0
End IfNext
225
CÓDIGO FUENTE
temp = GetFreeSpace(0)If Sgn(temp) = ~1 Then
' El valor de retorno de GetFreeSpace es un largo sinsigno, asi que
1 se tratar el caso cuando el bit alto está activado(complemento a dos).
FreeSpace = CLng(temp + 1&) Xor &HFFFFElse
FreeSpace = tempEnd IfIf FreeSpace O OldFreeSpace Then
Iblinfo(6).Caption = "Memoria libre: " &Format(FreeSpace, "#,# \b\y\t\e\s")
OldFreeSpace = FreeSpaceEnd If
End IfEnd Sub
#End If1 fin de la compilación condicional
MODULO DE DECLARACIONES
Attribute VB_Name - "Módulol"
Dim medida, vcontrol As Integer
1 Declaraciones globalesGlobal bits As StringGlobal a, dirlec, direnv, ini, fin, send, z As IntegerGlobal clave As StringGlobal Nmuestras As Integer
'Declaración de la DLL que lee el puertoDeclare Function Medir Lib "Ioport.dll" (ByVal PUERTOE As Integer, ByValmedida As Integer) As Integer
' Declaración de la DLL que escribe en el puertoDeclare Function Enviar Lib "Ioport.dll" (ByVal PUERTOS As Integer, ByValvcontrol As Integer) As Integer
Public Function conversión(lee)lecO = Int(lee / 2)binO = (lee - 2 * lecO)lecl = IntílecO / 2)binl = (lecO - 2 * lecl)Iec2 = Int(lecl / 2)bin2 = (lecl - 2 * Iec2)Iec3 = Int[Iec2 / 2)bin3 = (Iec2 - 2 * Iec3)Iec4 = Int(lec3 / 2)
226
^T^a^l-Amn-r^
IBM PC FAMILY BIOS COMPARISON
Tnhlc 4: Luw-mcmory rcscrvcd addrcssex.
00000003000040000400OO-lorQ040900410-
- 002FF-003FF-00<iePQ04ÜG
-OO-IO i*0040F004 1 1
00-11200-113- 00-11400-11ÍÍ-OCM16
00417
00410
00*119004 I A-004 IB00-11C-00-Í1D00-1IE-00-13D00-13 8-004-1800449-004GG00467-004GA
0046B004GC-00'16F
0047000-171
00472-00473
Syslom rnlerrupl veclorsSyslcrn inlertupl veclois. powor-on and bootslrap slack áreaBIOS dala áreaCOMI: lo COM4: I/O porl base addressss, one word each.,LPT 1; lo LPT4:' I/O port base addresses, one woíd each.FleservedEquiprnont llar/ word, rnlurnod in AX rogisler by INT 11.
Blls MoaningM-IG Mumbar olpíínlotsal!achod(0lo3, LPTs)
13 Inlornnl nindom inslollnd (PC CVT) or soiinl prinlor inslalled (PCjr)!? Joynliclunslnllod
9 • 11 Numbnr oí COM dovices (O lo 4, COMs)0 Unusod (PCjr only; DMA chíp presenl on syslem)
G - 7 Number oí tJ¡skdrrvos(if bilOis 1; 00= I. O I =2, IO and 11 no[ used)'i ÍJ Iniliíil video rnode
00 Ununcd01 40 x 25 BWur.ing color caíd01 £10 x 25 DWuGing color card11 Monocluomo card
2-3 Unusod, or. in Iho PC, oíd PC XT. nnd PCjr, planar HAM sizc; 00-16K bylos. OI-32K byle:M'-G'IKbylos
1 Malli coprocessor innlalled (unused on PCjr and PC CVT)IPLdisklnslollod.O
riRseí vod, excGpI ¡n PC CV \n solí-tost •Memory SÍ7G in K byles (O lo G40)
iínlus
Knybonrd ConlrolBits Monning
7 Insmt lockerJG5432I
O
Nuín LocldockodSaol! Lock JockocJAll Imy pressiidConliol kc¡y prcsr.cdLeílshiíi kcy ptcissedHíght shil! koy pressed
Kayboatd ConlrolBÍIM Meanlng
7 Inserí Itpy piessr-d6 Caps Loclí kay prcssed5 Mum Lock k¡3y prcsseri•1 Scroll Lock key prossed3 Pauselocked2 Syslsm roquesí key pressed1 Lell All keyprcsijedO Lafl Conlrol key prossod
Allómale koypad enlryKeybonrd buíler heaii poínlñrKfiybonrd bulfer lail painler32-bylo koyboarrí bullorDisk drívo dala áreaVideo-conlroldnlaoian Ino.sorvod, excopl PS/2 othors. 00-172-ReservadTínier counlorTimef ovcfllowBroslíKeysIaleResol Uno.
Bus Monnlng1234 Bypassmemorylesl4321 Preserve memory (PS/2 olhor only)5670 Syslem .suspended (PC CVt only)9A8C Munulaclunng lesl mode (PC CVT only)ABCD System POST loop mode (PC CVT oniy)
'potnler lo rosel code upon syslem rusel when mornory Is preservad.
irii 'a¿¿a&iJJ iBijj ^
IBM PC FAMILY BiOS COMPAR1SON
00-17A 00-177 \ disk drivo data nroa00470-00-170 LPIl: loLP74:' timo-oul valúas. 1 byleeocli.(XM7C-0047F COM1:(oCOM4:ltme-outvolU9sl ! byte eoch.00-580 -00401 Koyboard bullar slart offsol poinlor00-102 -00-103 Keyboard buller end olfsel pointer00-104 OO-líjA Video control data área 200-1013 • 00*195 Disk diíve/hard disk drivg conlrol-dala área
(XT/2. AT, XT/28G, and all PS/2s)00-190 Koyboaid modo stale and [ypn llags00497 KeyboíirdLEDIIags
00400 -00-199 Oflsot address lo usor waU completo llag004DA- 00-100 Segmenl addiess lo user wail complete llag00*190• 00-190 User wail counl ín microseconds, lowword00<19E 0019F Usor v/ail counl in rns. high word
004AO Waí! nclíve llagBits Meaning
7 Wait-timo elapsed and poslod llag6-1 Ftesorved
O INT l5.AH«86,WaiI,hasoccurred.
OCMA!-004Ar Rusoived004AO 00-1AB Poinler lo video paramelers and avenidas00-1AC-00-1EF Reservod00-1FO -00-1FF Applications proyram communicalion aiea
500 Pfinl scroen status llag504 Singls-rifive mode status byte
00510-00521 . Used by BASICn0522-OOG2F Usod by DOS Ior d¡sk ¡niliaüzalionOOG30-00533 Used by MODE command00534-005FF Reserved for DOS
PS/2 syslems don'l supporl LPT-1:.
Tnlilc 5: Hardware tnfcrmpt rcquc.it Unes.
HardwnreInterruplrtiqunal lino
NMIIRO 0IRO 1IRO 2IRO 3IRO 4IRQ 5IRQ Gino 7IRO . 8 '.„ino gIRO J O 'inonIRO 12IRO 13IF1Q14IRO 15
PCaiidPC/XTand PS/2 Model30
SQG notoslimorKoybomdResotvedSen'otporl 2Snrial porl 1Hard disk (nol PC)Dlsk conlrolParallol porl 1
PCJr
Keyboard ¡nierruptTimor clockinlerruplI/O channo! (reservad)I/O channelStirial poit 2Modernoi r.orial porl 1Display vertical jolraceDisk)/Ochannol(paral¡olprinler)
PC CVT
Soe notesTimor oulput 0Koyboard (buller full)RoservedSerial port 2Modem or serial port 1ReservedDisk conlrolParallelport 1
PCATendXT/266
Parity orroisTimer oulput 0Koyboard (bulfer full)Cascado lorO lo 15Serial porl 2Serial porl 1Parallglpoil2Disk conlrolParallol porl 1Real'limeclocKRediroclod to 1RQ2ReservedReservadReservodCoprocossorHard disk controllorRoserved
PS/2Mod«!s50,60,80
Soo nolosTímer output 0Kf3yboatd(bu(lQr full)Cascade lorO lo 15Serial port 2Serial port 1RaservedDisk controlParallolporl 1Roal-limeclockRedirectod lo 1RO2ResorvedRosofvedMouseCoprocossorHard disk controllerResorved
" Inletrupls O lo 15 aro not ovailablo on tho PC, PC XT, PCjr, PC CVT. and PS/2 Model 30;
Ñolas:PC, PC XI, and PS/2 Modol 30 use NMI lor paríty errors and numeric coprocessor interrupl.
PC CVT usos NMI lor I/O channel check, disk powor-on request, keyboard, toal-tirne dock alarm, ot syslom suspend."
PS/2 Modols 50. GO, and 00 use NMI ior parily srrors, I/O channel chock, walchdog limer, and arbIUator limo-oul.
IRO 3 and 4 (oxcepl In tho PC CVT) may be usad by SDLC or bisynchronous communicalion cafds inslead oí serial porls.
IHM
ESCUELA POLITÉCNICA NACIONALFACULTAD DE INGENIERÍA ELÉCTRICA PRACTICAS DE INSTRUMENTACIÓN INDUSTRIAL
colocadas por el procesador.
T/C, "Terminal Count'. Esta línea genera un pulso cuando se termina la cuenta decualquier transferencia DMA. La señal es activa en alto.
Pórticos del PC
A pesar de que el procesador 8088 puede direccionar hasta 64K puertos de entrada/salida, enel PC se utilizan únicamente los 10 bits menos significativos'del bus de direcciones paradireccionar a los dispositivos de entrada/salida, por lo tanto, se pueden direccionar 1024 puertos.De éstos, las siguientes direcciones ya se encuentran utilizadas:
OOOh-OOFh Controlador DMA 8237A-5.020h-021h Controlador interrupciones 8259A.040h-043h Temporizadores 8253-5.060h-063h Puertos teclado, cassette y parlante 8255A-5.080h-083h Registros página DMA.OAOh-OAFh Registro máscaras NM!. . ' - - .OCOh-OEFh Reservadas. / • " ' ,..—.?1FOh-1F8h Disco duro.200h-20Fh Adaptador juegos (solo 200 usada). , .'... .->210h-217h Unidad de expansión. ' •'278h-27Fh Adaptador paralelo secundario. . _ _ ^ "'2F8h-2FFh Adaptador asincrono secundario. • . •r"'"', t •3QOh-31Fh Tarjeta prototipos. ''••-.:..:^-- •"320h-32Fh Disco duro.360h-36Fh Reservada.378h-37Fh Adaptador paralelo primario.380h-38Fh Adaptador monocromático y paralelo impresora.380h-3DFh Adaptador color y gráficos.3AOh-3AFh Comunicación binaria primaría.3BOh-3BFh Adaptador IBM MDA.3COh-3CFh Reservada.3DOh-3DFh - Adaptador IBM CGA.3FOh-3F7h Adaptador diskette. : '3F8h-3FFh Adaptador asincrono primario.790h-793h Cluster adapter 1.B90h-B93h Cluster adapter 2.1390-1393 Cluster adapter 3.2390-2393 Cluster adapter 4.*.
Quedando por tanto, alrededor de 700 direcciones disponibles para las tarjetas de extensiónadicionales.
V : . .
Se debe ¡ndicar'que, en el IBM PC, no se pueden definir puertos de entrada, en el conector paratarjetas de extensión, cuya dirección sea menor a 100h ya que para esas direcciones sedeshabilita el ingreso de datos por dicho conector, posibilitándose ingresos únicamente desdela tarjeta madre. Se debe aclarar que para puertos de salida no existe esta restricción, pero sedebe cuidar que la dirección no coincida con una dirección utilizada para no interferir cdn elnormal funcionamiento del equipo.
" ''••-"-.
í N T E R F A S E P A R A PC
/V la hora cíe c o n s t r u i r unL\o electrónico podc-
JL JLmos encon t ra rnos con lad i f i r u l l a d (le no conocer el medioen el cunl funcionará, esto es partl-c u l a r m c n i e d i f í c i l si el medio esuna PC. Quizá la mayor dificultadcon la que nos encontraremos esque necesitamos conocer la topolo-gía de la PC.; y su funcionamientológico, l is to os, a veces,complicado dado el vertigi-noso avnnrc de la tecnolo-gía ap l i radn a las compu-ladoras ; por e l l o es tar alí l ia es i i u n c -Mipresa muycxigcnlc.
La evolución cíe las PC'ses muy r áp ida ; aparecie-ron por p r i m e r a ve/, alincreado dr la mano tic1BM. equipadas con el mi-croproccsador l u i d 8088,t e n í a n una capac idad de6'ÍKb de RAM y una u n i -dad de d i s q u e t t c deIf íOKb.
Hoy en d í a es comúncon ta r ron una computa-dora con 1 G M b de RAM,discos rígidos cíe 1.2G1) yun procesador 804860X2de doble clock corriendo aGGMH7,. Para alegría de los"e lec t romaniacos" ya estád i s p o n i b l e el nuevo Pen-t i u m o también l l amado80586, con el doble de po-tencia de cálculo y veloci-dad que el 80486DX2. Losc i rcui tos que describire-mos en este artículo tienenun interés tcórico-prácticopor lo cual también esta-rán en esta nota los pro-gramas básicos correspon-dientes para su manejo.
Tin cua lquier computa-dora personal (PC), la ca-pacidad de entrada-salidaes l i m i t a d a , para demos-t ra r lo bastan unos sim-ples ejemplos: sállela se-
rie, salida de impresora, mouse,joystick, y no posee muchas másalternativas.
S! en real idad queremos reali-zar nuestros montajes, se hacenecesario tener algo más que es-tas salidas. Para obtener algunasmás (1 a más de 200) hay que co-nectarlas al bus de expansión queposee la PC.
~sv.
IR04
ose
XO CHS07
a<
SOSSO-4BD3SOSSOIsoo-XOPOJ
CH FCDV
S«16
Conectar bus ISA XT.
-MCM-XO
CSLSCQ 1 S10)
IRO 111H
1SIRQ
DRO eDRQ S
DftO "7
eoeeoiosonSO12SO13BO1-3SOiS
Expansión del bus ISA para bus AT.
Los modelos comerciales de PCtienen diferentes tipos de bus, es-tos son: ISA EISA y MicroCanal;en estas no Las nos ocuparemosdel bus ISA y su expanclón para16 bits, conocido también comobus AT.
En el diseño original de la PC seestructuró un bus que admit ieraposibles expansiones futuras y que
estas no se limiten a tarje-tas ya pensadas.
Es asi como, no cono-ciendo las tecnologías ne-cesarias para poner undisco rígido dentro de unaPC, este surge dos añosdespués de la aparición dela primera PC.
lín la figura 1-sc descri-be el bus de una XT (ISA),cu él se pueden ver las ter-minales que conectan lastarjetas de expansión. Sepueden encontrar desde 5a 8 conectores de bus,iguales entre sí, pudténdoinsertarse tarjetas a cual-quiera de éstos. En la figu-ra 2 se puede ver la ex-pansión del bus AT, en lacual están los 8 bits res-tantes para lograr el busAT de 16 bits y otras seña-les anexas.
La capacidad de direc-cionarnicnto es función di-recta del procesador, pero,en general, en las PC's eldireccionamlento está li-mi tado a 512 puertos(ports) muchos de los cua-les ya son usados por losperiféricos que se le conec-tan, ya sean discos rígi-dos, \mUladcs de diskeUe,etc.
Existen puertos libres eincluso puertos para tarje-tas de protot ipos: éstasusaremos en nuestrosproyectos.
En la figura 3 venios las
SABED EUC1RON1CAH' 10
I N T E R r- A S E P A R A PC
recelónos Ubres queídem os • usa r paraic:;tros proyectos, lasmies son a l c a n z a d a scd ian te sof tware (pro-nmas específicos).
Descripción delas terminalesdel bus
¡SDO - SD7Lincas de dalos b id i -rcionnlc.s usadas paramsmitir dalos cnl re elicroprocesador, memo-i, puertos, discos, etc.dirección de los dníos
pende de las señales1 micro -IOR (leer) y -W ( escribir).
SAO - SA19Son sa l idas del bus
• direcciones dc,l micro provistasira t l i r ccc íonar diferentes parteslas [nrjcins conectadas al bus.
oseEs una salida de 14,31818 M]?.•ada i n t e r n a m e n t e para el reloj
l íempo real, inlciTases RS232,:. No t i e n e relación con la señalClOOK.
CWCKlis una salida de la f recuenciae usa el micro.
RESETER una sa l ida provis ta por elicanismo in te rno cié rcsct para>cíear a las tarjetas conectadasbus.
DALEEs una salida del controlador des (8288) usada para i n d i c a rn u d o Jas señales AQ - A19 sonrrectas. lista señal se usa paraicronizar !ns direcciones con los[os.
-8Í ~ií7S"7T~h— Ssóiafv
iB2F~7t->---flg¿-iií-"Wfí fcí^-.
~8¿B>"!
R3~-rf-'— 337&ÍV
. »gÉSfc«
--§¿8?"
-SÍI85"
-sisa;"-§¿9;-
-spa--sÍKb-
!
Di re ce
a
J-2C5 X
a
¿ao x
e
-8 X
-X6
J.6 X
J.6
J.Q X
e
e
NO ue«oo
KO USACX>
Xí-T PíISCí:» J. l_f Ti
hK> LÍSCOO
I OMXTOR MOI-KX^ROMO
NO I_ÍB«CX>
r-*or-arroR COÍ_OR
r4O USGDO
SERXE; i
'iones de Puertos externos.
-JORSalida sincronizada
con los da tos SDO -SD7 para su ingreso almicro. Sólo para puer-tos.
I/O Cfí CKEs una entrada para reportar, al
micro, una condición de error so-bre el bus que atañe a la Interfaseconectada al bus. Produce una In-ter rupción del micro del más altonivel (NM1).
-I/O CH ROYEs una salida usada para exten-
der el ciclo de espera del micro so-bre una tarjeta conectada al bus(Walt State 1,2.3,...).
IEQ2 - IRQ7Entradas de interrupción al mi-
cro. Como el micro tiene una solaentrada de interrupción se le adi-ciona un controlador que posee 8entradas, de las cuales 2 ya están.usadas en la tarjeta madre (IRQOy l R Q l ) .
Se usan para informar al microque requerimos su atención parapedirle o mandarle datos ejecutan-do un subprograma específico acada IRQ.
Sal ida s incronizadacon los datos SDO - SD7para su egreso del mi-cro. Sólo para puertos.
-SMBÜÍ\V -SMEMRídem anteriores, pero
para dircccionar memo-ria.
DRQ1 - DRQ3Entradas para pedir
un ciclo de DMA (Acce-so d i rec to a memoria),el método más ráp idode acceso a memoria.
DACKO - DACK3Salida del 8253 (Con t ro l ado r
DMA) para el reconocimiento de unciclo DMA.
AENSeñal de salida que indica, en
nivel bajo (O volt), la dirección váli-da de acceso a memoria o port através del bus. En nivel alto (5volt), indica que se cslá realizandoun ciclo DMA.
TCSalida que indica la terminación
de un ciclo DMA; ya sea de un blo-que o de un carácter.
Circuito Interfase deEntrada/Salidade 24 bits
El circuito propuesto es un ín-ter fase paralelo de 3 ports de 8 bitscada uno. Se la puede conectar acircuitos que deseemos controlar,como por ejemplo luces, alarmas
8SABER ELECinOniCAH'10
TECNOLOGÍA
' Q • ' -iGÍ*.-M¡'¿fi
' 1 0
5.16" '
'.17-^18-25
: D3»pá^DÍíP& íí•* D6'
litfMl
.;-4N¿4'- .»'--íi.-^.v-í^-í-^ERR' '""';'" 'tiNÍf 'fl
GhJD
lnitíalice..Pnn<ter f. .J;;vj,
G round
Bit
?T>' o'v^í
M^^
" '
Invertido
iTí3'" ''N *!>:-:N
SRS4
Regís I ro
Tabla 1. Señales y sus funciones en el puerto paralelo del PC
cioniuto¡interiormente. IIII3IOS ileicnni-na si un jnicrto cxislc o no cscribiéinlolcv IiiL'(jn leyendo lo c]uc cscrihirt. Si la Icc-liini licnc íxito, el pucno c,xiste. El prí-muro i|uc se encuentre se llnnia LPT], elsegundo LPT2 y el icrccro LIT3- f'or lolauto. LPT I rnicdt: csinrun cualt¡uiera delas Lrus direcciones; L!rl"2en 378fi o278Iiy LP1'3 síilo puede estar en 27Hh.
La riilína BIOS almacena las direc-ciones de Icis puerto.1; en una tabla desde40:8 hasln 4();F. cmpcxíiiHlu can LPTI.Los ¡los liyics superiores (para LPT4)r.naiiieiite se uiili/an. ííe puede cambiarlas denominaciones de la impresora cam-biando I M K valores en la üihla. l'or lo lan-ío, es posible variar la configuración ori-ginal. Puede querer liaccr eslo si un pro-grama sopona sólo LI'TI y su itiipresH-ra es(!í en el puerlo LPT2.
Dos inicrrupciimcs de liardware.5 y 7, ticncralmcnle se asocian c'on lospuciios paralelos. Algunas tárjelas lepentiilcn seleccionar una ¡iilernipcíóncon un pucnlc o una ulüuhid de ,rc-tu¡>, mientra.1; que otros vienen progra-madas para determinada interrupción,Convencionalmcnlc, el LPTI ut i l izala interrupción 7 y el LTP2 la 5; sinembargo, ya que en los computado-res tipo XT el disco duro emplea lainterrupción 5, está no I:t puede ut i l i -zar el puerto paralelo.
A pesar de que el software maneja-do por interrupción es rápido, la mayo-ría de los manejadoras de pítenos para-lelos de impresoras no utilizan interrup-ciones, íísto se debe en parte a un proble-ma en el puerlo paralelo original y mu-chos de sus iniciadores. En estos puertos,la Ifnea que requiere la interrupción notiene Inicli, Así que si el pulso es corto, esposible t|uc el computador tío lo vea.
La tabla 1 resume las señales en eleoncctordcl puerlo paralelo; éstas siguenmás o menos la inlerface de impresorapopularizada por CcDironicx, a pesar deíjuc el conectar de 25 pinos no usa las.Ifi líneas de la inlcrface original. Aun-que cada señal lienc un nombro que su-giere una función particular, no tiene queusar las señales para los propósitos pjiralas cuales fueron creadas. Por ejemplo,puede usar la señal de terminación depapel para cualquier clase de entrada, nosólo para indicar que a la impresora sele ha agotado el papel.
Entradas y salidasPuede tener acceso al puerlo paralelolantn a través del MS-DOS como delROM BIOS. Los servicios 00, 01 y 02de la inlerrupciói! I7h de BIOS le per-mi ten enviar un bytc a la Impresora,¡nicializarla y obtener el slatus de lamisma. La inierrupción 2lb de DOS,función 05, también escribe un bytc a
la impresora, y la función 40b puededirigir un bloque de dalos a un puertoparalelo. Pero para obtener acceso a las17 señales del puerto, se necesita escri-bir directamente al puerto. Para hacereslo, se ignoran las funciones del DOS yel IÍIOS y se leen y escriben dircclamcnleal pucno de dalos, de slalus y :il registrode control mostrados en la figura I.
• Micas típ. datos: Las lincas t!e datos,desde DO hasta D7, son ocho salidas quellevan los dalos para que la impresora losimprima. Para otras aplicaciones, se pue-den ul¡l¡7.ar las líneas de dalos como sali-das generales. Para coiiliolar el estado delos pínes 2 a 9 en el concclor paralelo.sólo hay que escribir los datos deseadosen el registro de dalos, cuya dirección esla dirección base del puerto. Per ejem-plo, para dar un alto desde 154 hasla 1)7
•y un bajo desde DO hasta D4. se escribi-ría FOh en el registro de datos. En I!A-S1C, se miliza la orden OUT así:
OUT DataAddress, Dala
o. utilizando la dirección base 3I3Ch y
el dato FOh,
OUTftlOUC. &bH)
El Lisiado I es un programa en QB A-SIC que lleva a un nivel alto cada pin delpuerto de dalos, uno íi la ve?..
RegiElro
,38: ElBClrónlca a Computador))! • C!F=KIT
Cómo usar el puerto paralelo de un PC
Registro de datos8 Salidas
Registro de status5 Entradas
Regtstio Pin Registro Pin
7
6
5
«3
2
1
0
D709
D6 -08
D5-07
D4 -06
D305
-O 4
D1 03
DO02
7
0
BSY O
PE -O 12
SEL
ERR
No se usan
Algunos pucrlos de dalosson hidiroccionnlos
Con interrupciones habilitadas,en !a transición del pin 10 (ACK)genera la interrupción
Fíogislro de control<] líneas bidireccionales
Registro Pin
7
6
5
.1
3
2
0
Utiliza I
Direcciónposibles de los registros
No sn usnn M°at°?-(direcciónde base)
3BCH378H278H
r-, 0 M >0\ \^ TTTff
T-< ' ^1 <2.r°\rn ?AUTOLF
n U^c^ 14• £ L^ —•r\^> — i ? STBT ^\ i Figura^ dele
ns bits 0 n 3 como enltnrias, pu
Status(Base -f 1)
3BDH37SH279H
Control(Base + 2)
3BEH37AH27AH
1. Configuracións registros delerto paralelo
Algunos puerto.s paralelos tienenlincas de dalos bidireccioimles, que pue-den ser uiíli/.ado.s como entradas o sali-das. Más adelante explicaré cómo de-terminar sí usted tiene un puerto bidi-reccional y cómo usar un puerto bidi-rcccional para las entradas.
í/c sfutnx; Las líneas de .statusson cinco entradas que se íeen en unregistro de status, el cual se localiza enla dirección de base +1, o 3BDh paraun puerto con una dirección base de?BCh. El registro de status es sólo delectura; escribirle no lo afecta en modoalguno. Las cinco Ifneas de status usanios bils del 3 ;ií 7 en el registro, corres-
ElEctnónlca & Computadores
pondientes a los pines del 10 al 13 y 15en el conector. Los bits O, 1 y 2 no seutilizan. Para leer el status de las entra-das, se lee el puerto de status. En BA-SIC se usa la siguiente función INP:
PR1NT INP (StatusAddrcss)
o util ice en su lugar
PRINTlNP(£h3BD)
Sin embargo, el valor que se lee noes exactamente igual a los estados lógi-cos del conector. Los ¿í/j.del 3 al 6 seleen normalmente; los bits en el regis-tro de status son iguales a los . estados
lógicos de sus pines correspondientes.Sin embargo, el bit 1 contiene en com-plemento del estado lógico en el pin 11(BllSY]. Por lo tanto, para encontrar elestado lógico actual del conector, secomplementa, o invierte, el Bit 1.
El operador Booleano OR Exclu-sivo (XOR) representa una manera fá-cil de invertir uno o más bits en un byíe,sin alterar a los demás bits. Tal como lomuestra la siguiente tabla de verda_d elresultado de una operación XOR es 1sólo cuando las entradas están confor-
' rnadas por un 1 y un 0:
A BO O0 11 O1 1
A X O R BO
O
Para invertir los bits seleccionadosen un byte, primero se debe crear unbyte máscara en el cuál los bits que de-sea invertir son Is y los que quiere ig-norar son Os. Por ejemplo, para invertirel Bit 7, el byte máscara sería 1OOOOOGOu 80h. Si se hace la operación XOR deeste byte con el byte leído de! registrode status, se obtiene el valor actual delconector. El byte máscara recibe sunombre porque los Os enmascaran, oesconden, los bus que no se desean cam-biar. He aquí un ejemplo:
10101 xxx Entradas del puerto de sta-tus, Bits del 3 al 7, en el co-nector (X = no Importa)
O O l O l x x x Resultado cuando se lee elregistro de status (Bit 7 in-vertido)
10000000 Se enmascara un byte paraque el Eli 1 coincida con elconector
lOlOlxxx XOR de los dos bytes ante-riores; el resultado coincidecon los estados lógicos pre-
• sentes en el conector.
Este enunciado BASIC mostrará elestado lógico actual en los pines delpuerto de status, para un puerto con unadirección base de 3BCh:
PRINT INP C&H3BD XOR &hSQ)
Pasa a ¡a página 42...
39
36
AP
RE
ND
A V
ISU
AL
BA
SIC
YA
DE
SA
RR
OLL
O D
EL
PR
IME
R P
RO
GR
AM
A
37
RE
SU
ME
NPa
raH
aga
esto
Bot
ón
Par
aH
aga
esto
Inic
iar
Vis
ual
Bas
ic
Mos
trar
la
func
ión
asoc
iada
con
un b
otón
Abr
ir u
n pr
oyec
to e
xist
ente
Com
enza
r un
nue
vo p
roye
cto
Eje
cuta
r un
pro
gram
a
Mov
er l
a ca
ja d
e he
rram
ient
as
Def
inir
pro
pied
ades
Mos
trar
la
vent
ana
Proy
ecto
Cre
ar u
na i
nler
fa?.
de
usua
rio
Mov
er u
n ob
jeto
Mod
ific
ar e
l ta
mañ
o de
un
obje
to
Bor
rar
un o
bjet
o
\hri
r la
ven
tana
Cód
igo
Pul
se e
l bo
tón
Inic
io d
e la
bar
ra d
e ta
ñías
de
Win
dow
s *)
?.de
spli
egue
el
men
ú V
isua
l Bas
ic -
U)
y. f
inal
men
te,
puls
e el
icon
o de
nom
inan
do M
odel
o de
Eva
luac
ión
de V
idua
lB
asic
4.0
.
Sitú
e el
pun
tero
del
rat
ón s
obre
el
botó
n de
sead
o de
la
barr
ade
her
ram
ient
as o
de
la c
aja
de h
erra
mie
ntas
.
En e
l m
enú
Arc
hivo
sel
ecci
one
la o
pció
n A
brir
pro
yect
o.
En
el m
enú
Arc
hivo
sel
ecci
one
la o
pció
n N
uevo
pro
veci
ó.
Puls
e el
bot
ón I
nici
ar c
onte
nido
en
la b
arra
de
herr
amie
ntas
Arr
astr
e la
caj
a de
her
ram
ient
as u
tüza
ndo
el r
atón
.
Puls
e el
bot
ón P
ropi
edad
es c
onte
nido
en
la b
arra
de
herr
amie
ntas
par
a m
ostr
ar l
a ve
ntan
a Pr
opie
dade
s.D
espl
iegu
e el
cua
dro
de l
ista
des
pleg
are
para
mos
trar
los
elem
ento
s qu
e co
mpo
nen
la i
nter
taz
de u
suar
io y
.fi
nalm
ente
, se
lecc
ione
el
valo
r qu
e de
see
asig
nar
en e
!cu
adro
de
list
a Pr
opie
dade
s.
Puls
e el
bot
ón P
roye
cto
de l
a ba
rra
de h
erra
mie
ntas
.
Uti
lice
los
con
trol
es p
ara
situ
ar lo
s ob
jeto
s en
el f
orm
ular
ioy,
pos
teri
orm
ente
, def
ina
las
prop
ieda
des
que
dese
e.M
odif
ique
el
tam
año
del
form
ular
io y
de
los
obje
tos
corn
o<¿
usté
,
Arr
astr
e e!
obj
eto
por
el f
orm
ular
io u
tili
zand
o el
rat
ón.
Sel
ecci
one
el o
bjet
o y
arra
stre
el
man
ejad
or d
e se
lecc
ión
del
late
ral
que
dese
e m
over
.
Sele
ccio
ne e
l ob
jeto
y p
ulse
si
i'R.
Rea
lice
una
dab
le p
ulsa
ción
sob
re u
n ob
jeto
o v
ibre
el
prop
io
form
ular
io
Bot
ón\I
mac
en:i
r un
pro
gram
a
Sali
r de
Vis
ual
Bas
ic
Vol
\r a
carg
ar u
n pr
oyec
to
En e
l m
enú
Ard
mo
sele
ccio
ne !
.i up
oion
Ou.
ird.
ir p
ro\e
aii
puls
e el
bot
ón G
uard
ar p
roye
cto
situ
ado
en l
a ba
rra
dehe
rram
ient
as.
En
e! m
enú
Arc
hivo
, sel
ecci
one
la o
pció
n Sa
lir.
En
d m
enú
Arc
hivo
sel
ecci
one
la o
pció
n A
brir
pro
yect
o
o sele
ccio
ne e
! nom
bre
de u
n ar
chiv
o ut
iliz
ado
reci
ente
men
te,
de l
a li
sta
cont
enid
a al
fin
al d
e! m
enú
Arc
hivo
.
i'Sen
hir
el a
nu
yo
del
prny
rani
a
puls
e el
bol
ón V
er (
.Yid
iuu
dent
ro il
e l.t
\en
iana
Pro
veí1!
tt.
Esc
riba
las
sem
enci
as d
el p
rogr
ama
asoc
iada
s ci
m e
lqu
e de
see
prog
ram
ar d
entr
o de
la
vent
ana
(.'o
dian
.
74
AP
RE
ND
A V
ISU
AL
BA
SIC
YA
\
La m
ayor
pan
e de
los
con
trol
es p
erso
nali
zado
s tr
abaj
an c
xact
amon
ti: i
tuia
l que
e! re
sto
de l
os c
ontr
oles
cont
enid
os e
n la
caj
a de
her
ram
ient
as d
e V
isua
l B
asic
. De
hech
o, s
i no
sabe
u p
rior
í qu
e se
tra
ta d
e co
ntro
les
pers
onal
izad
os s
erá
Jifi
cil
que
pued
a di
stin
guir
los
del
rest
o de
con
trol
es. P
odrá
sel
ecci
onar
los
cont
role
s pe
rson
a-li
zado
s si
n m
ás q
ue p
ulsa
r so
bre
ello
s y
podr
á ut
iliz
arlo
s pa
ra c
rear
e i
ntro
duci
rob
jeto
s en
un
form
ular
io d
e la
mis
ma
form
a qu
e em
plea
los
otr
os c
ontr
oles
. L
osco
ntro
les
pers
onal
izad
os c
uent
an t
ambi
én c
on p
ropi
edad
es c
uyos
val
ores
aso
cia-
dos
pued
en s
er m
odif
icad
os, y
tam
bién
pue
den
ser
util
izad
os e
n el
cód
igo
del
pro-
gram
a co
mo
el r
esto
de
los
cont
role
s qu
e ha
man
ejad
o en
est
e ca
pitu
lo.
Con
trol
es
pers
onal
izad
os d
e W
indo
ws
95
SÍ e
stá
desa
rrol
land
o pr
ogra
mas
que
se
ejec
utar
án p
oste
rior
men
te s
obre
Win
-do
ws
95, l
as E
dici
ones
Pro
fesi
onal
y E
mpr
esar
ial d
e V
isua
l Bas
ic 4
incl
uyen
una
bibl
iote
ca e
spec
ial
de c
ontr
oles
per
sona
liza
dos
que
pued
en s
er u
tili
zado
sen
el d
iseñ
o de
la in
terf
az d
el u
suar
io (
esto
s co
ntro
les
pers
onal
izad
os d
e W
in-
dow
s 95
apa
rece
n en
la c
aja
de h
erra
mie
ntas
mos
trad
a po
r om
isió
n). S
i de
sea
obte
ner
info
rmac
ión
sobr
e có
mo
pued
e ut
iliz
ar e
stos
con
trol
es p
erso
nali
za-
dos
para
Win
dow
s 95
en
sus
prog
ram
as,
desp
lieg
ue e
l sub
mem
í D
emos
tra-
ción
de
cont
role
s co
nten
ido
en e
l men
ú C
ompl
emen
tos
y, f
inal
men
te,
sele
c-ci
one
la o
pció
n W
indo
ws
95 C
ontr
ols
del s
ubm
enú
Con
trol
s D
emo
(pro
gram
ade
dem
ostr
ació
n). L
a si
guie
nte
tabl
a pr
opor
cion
a un
a br
eve
desc
ripc
ión
delo
s co
ntro
les
pers
onal
izad
os p
rese
ntes
en
Win
dow
s 95
:
Con
trol
per
sona
lizad
o F
unci
ón
Prop
orci
ona
func
ione
s adi
cion
ales
de
form
ales
de
text
o.
Mue
stra
lis
tas
de a
rchi
vos y
de
icon
os a
s la
mis
ma
form
aen
que
el
Exp
lora
dor d
e W
indo
ws
los
mue
stra
.
Mue
stra
la
info
rmac
ión
de u
na f
orm
a jer
árqu
ica
(por
ejem
plo,
car
peta
s y
subc
arpe
tas)
de
la m
ism
a fo
rma
en q
uelo
hac
e el
Exp
lora
dor d
e W
indo
ws.
Ric
hTex
tBox
Lis
tVie
w
Trc
eVie
w
Tabs
irip
Too
lbar
Slid
er
Prog
rcss
Bar
Stal
usB
ar
Cre
a cu
adro
s de
diá
logo
que
cue
ntan
con
sol
apas
a!
estil
oW
indo
ws
95.
Aña
de b
arra
s de
her
ram
ient
as e
stán
dare
s a l
os p
rogr
amas
.
Aña
de u
n co
ntro
l des
liza
nte
al p
rogr
ama.
per
mit
iend
o qu
eel
usu
ario
pue
de c
ambi
ar co
n fa
cilid
ad y
rap
idez
la
posi
ción
del
con
trol
en
un a
rchi
vo o
en
una
pres
enta
ción
.
Mue
stra
al
usua
rio
cuan
to l
e qu
eda
al p
roan
mia
par
aco
mpl
etar
la
tare
a.
Pres
enta
inf
orm
ació
n pe
rifé
rica
al
usua
rio
en u
n fó
rmal
oes
tánd
ar.
RE
SU
ME
N
Par
aH
aga
esto
EM
PLE
O D
E C
ON
TRO
LES
75
Bot
ón
Cre
ar u
n cu
adro
de
text
o
Cre
ar u
n bo
lón
de o
rden
Cre
ar u
na p
ropi
edad
en
tiem
pode
eje
cuci
ón
Cre
ar u
n cu
adro
de
list
a de
de u
nida
des
Cre
ar u
n cu
adro
de
üsta
de
dire
ctor
ios
Cre
ar u
n cu
adro
de
list
a de
arch
ivos
Evi
tar
que
un p
rogr
ama
tall
e
Car
gar
una
imag
en e
n ti
empo
de e
jecu
ción
Puls
e el
con
trol
Tex
lBiw
y d
ibuj
e ei
cua
dro.
Puls
e el
con
trol
Com
mai
idüu
iton
y d
ibuj
e el
bol
ón.
Mod
ifiq
ue-
el v
alor
de
la p
ropi
edad
uti
liza
ndo
códi
go d
epr
ogra
ma.
Por
eje
mpl
o:
Sel
ecci
one
el c
ontr
ol D
ri v
e Lis
t Box
y d
ibuj
e el
cua
dro.
Sel
ecci
one
el c
ontr
ol D
irL
istB
ox y
dib
uje
el c
uadr
o.
Puls
e so
bre
el c
ontr
ol F
ileL
istB
ox y
dib
uje
el c
uadr
o.
Esc
ribi
r un
pro
cedi
mie
nto
de s
uces
o ut
iliz
ando
cód
igo
depr
ogra
mac
ión
(con
sult
e el
Cap
ítul
o 7J
.
Lla
mar
a l
a fu
nció
n L
oadP
iciu
re y
asi
gnar
el
resu
ltad
o a
lapr
opie
dad
Pict
ure
de u
n ob
jeto
¡m
auen
o a
un
obje
to c
uadr
ode
im
agen
. L
a si
ntax
is d
e es
ta s
ente
ncia
es
la s
igui
ente
:
dond
e O
bjet
o es
el
nom
bre
del
obje
to y
Arc
hivo
Sele
ccio
nadn
es
una
vari
able
que
alm
acen
a el
nom
bre
del
arch
ivo
gráf
ico.
Por
eje
mpl
o:
Cre
ació
n de
un
boló
n do
opc
ión
Cre
ació
n de
un
cuad
ro l
ie••
erif
ieac
ión
Uti
lice
el
cont
rol
Opi
ionB
uuon
y d
ibuj
e ei
bot
ón d
e op
ción
.Pa
ra c
rear
var
ios
boto
nes
de o
pció
n, i
ntro
duzc
a m
ás d
e un
boló
n de
opc
ión
dent
ro d
e un
a ca
ja q
ue h
aya
crea
dout
iliz
ando
el
cont
rol
Fram
e.
Seie
ecii
Híe
el c
ontr
ol C
heck
üox
y di
buje
un
cuad
ro d
eve
ntlc
acii
'in.
Cre
ació
n de
un
cuad
ro d
e li.
sia
1'uN
c- e
l co
ntro
l Li
r.tt3
i.ix
y di
buje
un
cuad
ro d
e li
sia.
Cre
ació
n de
un
cuad
ro l
ie l
i-iia
desp
lega
rle
Sel
ecci
one
el c
ontr
ol (
.'um
hnU
ox \
e un
ciu
dm
de
lisi
ade
.spl
eiia
ble.
96
A
PR
EN
DA
VIS
UA
L B
AS
IC Y
A La
prim
era
pan
e de
l te
xto
incl
uido
, em
re c
omil
las
— M
etal
ilos
i *.
\VM
¡")—
esp
ecif
ica
qu
e cl
ámen
los
se v
an a
lis
iar
den
tro
del
cuad
ro A
rch
ivo
s d
e li
po.
La
sojj
unda
par
te —
*. W
MF
—es
pec
ific
a la
ex
ten
sió
n q
ue
len
drá
n lo
s nom
-
bre
s de
los
arc
hiv
os
qu
e se
lis
iará
n po
r o
mis
ión
en o
í cu
adro
de
diá
log
o.
1:1cu
adro
de
diá
log
o c
on
tien
e ta
mb
ién
cuad
ros
de
lisi
a q
ue
po
dra
uti
liza
r p
ara
loca
liza
r un
met
arch
ivo
de W
ind
ow
s en
su
dis
co d
uro.
3.
En
su d
isco
du
ro,
deb
erá
sele
ccio
nar
un
a ca
rpet
a q
ue
con
ten
ga
mei
arcl
iiv
os
y.
po
ster
iorm
ente
, re
aliz
ar u
na
dobl
e p
uls
ació
n so
bre
un
o d
e es
tos
nom
bres
de
arch
ivo
.E
l ar
chiv
o g
ran
eo q
ue
haya
esp
ecif
icad
o se
ab
rirá
mo
stra
nd
o su
co
nte
-ni
do e
n el
fo
rmu
lari
o.
¡Esl
o e
s to
do s
ob
re e
ste
lem
a! S
i d
ecid
e ad
qu
irir
un
a de
las
ver
sio
nes
Est
ánd
ar,
Pro
fesi
on
al o
Em
pre
sari
al d
e V
isu
al B
asic
co
mp
rob
ará
qu
e el
co
ntr
ol
Co
mm
on
Dia
-lo
g es
un
a h
erra
mie
nta
qu
e le
ser
á d
e ut
ilid
ad p
ara
el m
anej
o d
e cu
adro
s d
e d
iálo
go
.E
n lo
s si
gu
ien
tes
cap
ítu
los
anal
izar
emo
s o
íro
s co
nte
nid
os
qu
e le
ser
vir
án p
ara
ex-
plo
rar
técn
icas
ad
icio
nal
es d
e cr
eaci
ón
de
cuad
ros
de
diá
log
o.
RE
SU
ME
N
Par
aH
aga
esto
Bot
ón
Cre
ar u
n el
emen
to d
e m
enú
Aña
dir
una
ícel
a de
acc
eso
Asi
gnar
una
lée
la a
tajo
a t
ina
opci
ón d
e m
enú
Mod
ific
ar e
l or
den
en q
ue s
em
uest
ran
las
opci
ones
de
unm
enú
Em
plea
r un
cua
dro
de d
ialo
goes
tánd
ar e
n su
s pr
ogra
mas
(úni
cam
ente
*i
disp
one
de u
nave
rsió
n co
mer
cial
de
Vis
ual
Bas
ic)
Pul
se e
l bo
tón
Edi
tor
de m
enús
y.
a co
ntin
uaci
ón,
defi
nalo
s at
ribu
tos
Cap
tion
, Nom
bre
y po
sici
ón d
el e
lem
ento
del
men
ú.
Pon
ga e
n m
arch
a el
Edi
tor d
e m
entí
s, s
elec
cion
e la
opci
ón d
e m
enú
que
dese
e, y
act
ive
el c
uadr
o de
tex
tode
nom
inad
o C
apti
on.
Esc
riba
un
cará
cter
am
per¿
and
(£)
dela
nte
de l
a le
ira
que
dese
e de
íini
r co
mo
tecl
a de
acce
so.
Pon
aa e
n m
arch
a el
Edi
tor
de m
enús
y s
elec
cion
e la
opci
ón d
e m
enú
dese
ada.
Esp
ecif
ique
!a
léel
a at
ajo
que
dese
a as
ocia
r den
tro
del
cuad
ro d
e li
sta
desp
leua
ble
deno
min
ado
Sli
ortc
ui.
Pon
ga e
n m
arch
a el
Eti
itor
de
men
ús,
Sel
ecci
one
laop
ción
de
men
ú qu
e de
see
mov
er, y
pul
se e
! bo
tón
rk-d
iaar
riba
o e
l bo
tón
¡lec
ha j
hiij
o pa
ra d
e^pl
a/ar
dic
ha o
pció
n.
l'til
sc e
l co
ntro
l C
omm
oriD
ialo
t! y
dib
uje
un n
lijc
tn d
edi
áloü
o co
mún
en
¿ti
form
ular
io.
A c
onti
nuac
ión,
uti
lice
en M
I pro
gram
a ti
no d
e ¡o
s ci
nco
mét
odos
Ji-
.pun
í ble
s de
dkil
oüo
eum
ún p
ara
pode
r m
ostr
ar e
! cu
adro
de
di;il
ni!0
.
para
Hag
a es
to
MA
NE
JO D
E M
EN
ÚS
Y C
UA
DR
OS
DE
DIA
LOG
O
97
Bot
ón
Des
acti
var
un m
entí
Act
ivar
«na
opc
ión
de m
enú
util
izan
do c
ódig
o de
pro
gram
a
Vac
iar«
" cu
adro
de
imag
en
Con
e!
Edi
tor
de m
entí
s, e
lim
ine
la m
arca
de
veri
fica
ción
del
cuad
ro d
e ve
rifi
caci
ón l
in.ii
>icd
aso
ciad
o a-
n !
.iop
ción
de
men
ú el
egid
a.
Uti
lice
la
sent
enci
a:
pero
sus
titu
ya «
/iii
CV
mw
//fm
por
el
nom
bre
de s
u
opci
ón d
e ii
ienú
.
Uti
lice
la
sent
enci
a de
pro
gram
a:
1 1
8 AP
REN
DA
VISU
AL B
ASIC
YA
Nota
: C
uand
o no
se
incl
uye
la v
aria
ble
Bot
ónP
ulsa
do,
¡os
paré
ntes
is s
olo
rode
an a
lpr
imer
arg
umen
to.
>.
Pul
se o
! bo
tón
Inic
iar
Je l
a ba
rra
de h
erra
mie
ntas
Sota
n Ir.
6.
Puls
e el
bol
ón C
uadr
o de
ent
rada
, esc
riba
su
nom
bre
en e
l cua
dro
do e
ntra
day
puls
e de
spué
s A
cept
ar.
La e
ntra
da s
e gu
arda
rá e
n el
pro
gram
a de
ntro
de
la v
aria
ble
Nom
bre
yde
spué
s se
mos
trar
á en
un
cuad
ro d
e m
ensa
je t
al y
com
o se
mue
stra
en
lasi
guie
nte
(mur
a:
J«JC
Roifguíí
7.
Pul
se A
cept
ar p
ara
cerr
ar e
l cu
adro
de
men
saje
s y
desp
ués
puls
e el
bot
ónSa
lir
para
cer
rar
el p
rogr
ama.
El p
rogr
ama
se c
erra
rá y
vol
verá
a a
pare
cer
ei e
ntor
no d
e pr
ogra
mac
ión.
para
man
tene
rS.
G
uard
e el
for
mul
ario
y e
l pro
yect
o co
n el
nom
bre
Mi
Sal
ida
para
m;
una
copi
a de
su
prog
ram
a.
VIA
NE
JO D
E T
IPO
S E
SP
EC
ÍFIC
OS
DE
DA
TO
Sun
a va
riabl
e ra
jun
a va
riabl
e va
ain
tene
r si
empr
e'i
mis
mo
upo
de'fo
pod
rá m
ejor
ar
•' or
ogra
ma
'•''a
rand
o la
'rabi
e co
mo
ce.-•
jo u
po
TÍ /p
aria
de
'Xen
amie
nto
üe..r
abie
s ¡e
ctia
e-<
'.'es.
esc
ec.r,
-3:.;
,}doe
«D.3
¡r;o
--jj
/'.O
C.j.
'.J
;C?W
xn
o b
ilí
"Wnw
c/on
En
la m
ayor
ía d
e lo
s ca
sos,
el
tipo
de
dato
den
omin
ado
vari
ante
ser
á el
úni
co q
uene
cesi
te.
Las
var
iabl
es d
el t
ipo
vari
ante
pue
den
alm
acen
ar c
ualq
uier
tip
o de
dat
out
iliz
ado
en V
isua
l B
asic
(pr
edef
inid
os)
y ca
mbi
ar d
e fo
rmat
o au
tom
átic
amen
te.
Las
var
iant
es t
ambi
én s
on s
enci
llas
de
util
izar
y n
o te
ndrá
que
pen
sar
dem
asia
doen
el
tam
año
de l
a va
riab
le c
uand
o se
a de
clar
ada.
S
in e
mba
rgo,
si
dese
a cr
ear
uncó
digo
esp
ecia
lmen
te r
ápid
o y
conc
iso,
deb
erá
util
izar
tip
os d
e da
tos
espe
cífi
-co
s cu
ando
así
lo
requ
iera
el
prog
ram
a. P
or e
jem
plo,
si
una
vari
able
sie
mpr
e va
a co
nten
er v
alor
es e
nter
os
de p
eque
ña c
uant
ía (
núm
eros
sin
dec
imal
es),
pod
ráah
orra
r es
paci
o en
mem
oria
cua
ndo
ejec
ute
su p
rogr
ama
decl
aran
do l
a va
riab
leco
mo
ente
ra, e
n lu
gar d
e ha
cerl
o co
mo
vari
ante
. U
na v
aria
ble e
nter
a tl
nteg
er) t
am-
bién
ace
lera
rá
las
oper
acio
nes
arii
méi
ieas
. de
to
rma
que
obte
ndrá
un
peq
ueño
incr
emen
to e
n la
vel
ocid
ad d
el p
rogr
ama
cuan
do
sea
util
i/ad
a. K
n el
sig
uien
tecu
adro
se
mue
stra
n lo
s ti
pos
de d
atos
fun
dam
enta
les
exis
tent
es e
n V
isua
l B
asic
.l:n
el
sigu
ient
e ej
erci
cio
vere
mos
có
mo
func
iona
n la
may
oría
de
esto
s ti
pos
deda
tos.
VAR
IABL
ES Y
OPE
RADO
RES
DE
VISU
AL B
ASIC
11
9
Con
sejo
: P
odrá
esp
ecifi
car
algu
nos
tipos
de
dato
s fu
ndam
enta
les
añad
iend
o al
nom
bre
de <
a va
nah
e un
car
acíe
r de
dec
lara
ción
ce
tipo.
Por
eje
mpl
o, p
odra
dec
lara
r un
a va
ria-
ble
tíe t
ipo
ente
ro a
ñadi
endo
el c
arac
íer
de p
orce
ntaj
e at
fin
al d
e su
nom
bre.
De
esta
form
a, e
n V
isua
l Sas
íc /
as d
os d
ecla
raci
ones
sig
uien
tes
son
equi
vale
ntes
.
Tipo
de
dato
s
Byi
e
Itil
eser
Lon
£(e
nter
o la
reoí
Sing
le(C
oma
íloi
antc
de s
impl
epr
ecis
ión)
Dou
ble
(Com
a fl
otan
tede
dob
lepr
ecis
ión)
Cur
renc
y(M
onet
ario
)
Stri
ng1 C
aden
a)
Boo
lean
(Bol
eano
)
Dat
ei p
edia
i
Var
ia u
t
Tam
año
1 by
te
2 by
tes
4 by
tes-
-1 by
tes
S by
tes
S by
tes
1 by
te p
orca
ráct
er
2 by
tes
S by
tes
1 Obv
ies
Con
núm
croí
i22
byt
es -
1 b
yte
por
cará
cter
(co
nca
dena
s
Ran
go
0 a
255
•32.
76S
a 32
.767
-2. 1
47.4
33. 6
4Sa2
.l47
.4S
3.64
7
-3,0
4282
3 E
38a3
.042
S23
EJS
-1.7
9769
3 13
4S62
32D
30S
a L
.797
6931
34S6
232D
308
-V22
3372
036S
5477
.5S0
8al
)223
3720
3óS5
4~7.
5S07
0 a
65.5
35 c
arac
tere
s
Tru
c o
Fals
e
1 f-
ncro
100
has
ta31
dic
iem
bre W
)
Tnilo
iip
o de
ran
aos
Eje
mpl
o de
uso
Dim
Peq
Val
oras
Byt
ePe
qVa!
nr=
22l
Dim
Páj
aros
0*Pá
jaro
s1! b
= 3
7
Dim
Ing
reso
s^In
gres
osA
=35
0.00
0
Dim
Pre
cio!
Prec
io!
-899
.99
Dim
Pi=
Pi^
=3.
I4!5
<)2
6535
Dim
Dei
idan
j'D
eu
tó =
760l
):.0
0.50
Dím
Per
roS
Perr
oS =
»Coc
ken>
Dim
Ban
den
as B
obea
nB
ande
ra =
Tru
e
Dim
Ani
vers
ario
Dat
eA
nive
rsar
io==
3-l-
')3=
Dim
Tot
alT
otal
= 2
S9.1
3
.v
US
O D
E L
OS
TIP
OS
DE
DA
TO
S F
UN
DA
ME
NT
AL
ES
E
N E
L C
ÓD
IGO
1.
En e
l m
entí
Arc
hivo
>el
ecci
')ne
la o
pció
n A
brir
pro
yect
o.A
pare
cerá
e!
cuad
ro d
e ili
áliv
jo A
brir
pro
yect
o.
13
2
AP
RE
ND
A V
ISU
AL
BA
SIC
YA
Debe
rá T
ener
en
cuen
ta e
l ord
en d
eev
alua
ción
de
¡os
oper
ador
es c
uand
oes
te c
rean
dofó
rmul
as/n
a tem
átic
as.
Fun
cion
es m
ate
má
tica
s en
Vis
ual
Bas
ic I
O»IH
M«.:I¿
«M»
Func
ión
Prop
ósit
o
Abs
(n)
A tu
(/i)
Cos
(«)
Exp
(/0
Im(/i
)
Rnd{
/0
Sgnf
n)
Sm(«
)
Tan
(/i)
Cal
cula
el
valo
r ab
solu
to d
e n.
Cal
cula
el a
rcot
ange
nte
de n
en
radi
anei
.
Cal
cula
el
cose
no d
el á
ngul
o n.
El á
nuul
o n
se e
xpre
sa e
n ra
dian
es
Cal
cula
la
cons
tant
e e
elev
ada
a n.
Dev
uelv
e la
pan
e en
tera
de
un n
úmor
o de
cim
al.
Gen
era
un n
úmer
o al
eato
rio
entr
e O
y 1.
Dev
uelv
e -I
sin
es
men
or q
ue c
ero,
O s
i n
es c
ero
y +
1 si
«es
may
or q
ue c
ero.
Cal
cula
el
seno
del
áng
ulo
n. E
l áng
ulo
n se
exp
resa
en
radi
anes
.
Cal
cula
la
raíz
cua
drad
a de
n.
Con
vier
te u
n va
lor
num
éric
o en
una
cad
ena.
Cal
cula
la
tang
ente
del
áng
ulo
n. E
l áng
ulo
n se
esp
resa
en
radi
anes
.
Con
vier
te u
na c
aden
a a
valo
r nu
mér
ico.
Vis
ual
Bas
ic r
esue
lve
este
dil
ema
esta
blec
iend
o un
ord
en J
t>pñ
orit
lml
espe
cí-
fico
par
a la
s op
erac
ione
s m
atem
átic
as.
Est
a li
sta
de r
egla
s in
dica
a V
isua
l B
asic
qué
oper
ador
es d
eber
á ut
iliz
ar p
rim
ero
cuan
do e
valú
e un
a ex
pres
ión
que
cont
enga
más
de u
n op
erad
or.
En
la s
igui
ente
tab
la s
e m
uest
ran
los
oper
ador
es m
atem
átic
os l
ista
-do
s en
ord
en d
e pr
iori
dad
(los
ope
rado
res
de i
gual
niv
el e
n es
ta t
abla
se
eval
úan
deiz
quie
rda
a de
rech
a, s
egún
apa
rece
n en
la
expr
esió
n}.
Ope
rado
r(es
)O
rden
de
prio
rida
d
O Mod
Los
val
ores
ent
re p
arén
tesi
s se
eva
lúan
sie
mpr
e lo
s pr
imer
os.
La
íjíp
onen
ciac
ión
es s
iem
pre
el s
egun
do.
La
nega
ción
(cr
eaci
ón d
e un
núm
ero
nega
tivo
) es
el
lenr
ero.
La
mul
tipl
icac
ión
y la
div
isió
n co
mpa
rten
d c
uart
o lu
gar.
La
d¡\n
enl
era
es e
l qu
into
ope
rad»
!-.
El r
esto
es
el s
exto
.
Los
últ
imos
son
la
sum
a y
la r
esta
.
C'o
ncai
cnai
lor J
e ca
dena
s.
VA
RIA
BLE
S Y
OP
ER
AD
OR
ES
DE
VIS
UA
L B
AS
IC
133
Ten
iend
o en
cue
nta
el o
rden
de
prio
rida
d m
ostr
ado
en l
a ta
bla
ante
rior
, la
ex-
pres
ión:
se e
valu
ará
de l
a si
guie
nte
form
a. (
Las
neg
rita
s in
dica
n el
ord
en d
e ev
alua
ción
y e
!re
sult
ado
I:
Em
pleo
de
par
énte
sis
en la
s fó
rmul
as
•.os a
aren
tesis
Po
dem
os
util
izar
uno
o m
ás p
ares
de
paré
ntes
is e
n un
a fó
rmul
a pa
ra c
lari
fica
r el
-dan
ficun
e in
fluye
n o
r(]e
n d
e pr
iori
dad.
Por
eje
mpl
o. V
isua
l B
asic
cal
cula
ría
la f
órm
ula
ín e
/ ord
en d
e la
real
izan
do e
n pr
imer
lug
ar !
a ope
raci
ón c
onte
nida
ent
re l
os p
arén
tesi
s (-
7) a
ntes
de
real
izar
la
expo
nenc
íaci
ón. a
unqu
e la
exp
onen
ciuc
ión
teng
a un
ord
en d
e pr
iori
dad
may
or q
ue l
a re
sta
y la
mul
tipl
icac
ión.
Pod
emos
ref
inar
aún
más
el c
álcu
lo c
oloc
an-
do p
arén
tesi
s an
idad
os e
n la
fór
mul
a. P
or e
jem
plo:
hace
que
Vis
ual
Bas
ic c
alcu
le, e
n pr
imer
lug
ar,
la d
ifer
enci
a co
nten
ida
en e
l co
n-ju
nto
de p
arén
tesi
s in
tern
o, p
oste
rior
men
te, t
raba
ja c
on l
os p
arén
tesi
s ex
tern
os p
ara
calc
ular
, fi
nalm
ente
, el
exp
onen
te.
El r
esul
tado
pro
duci
do p
or l
as d
os f
órm
ulas
es
dife
rent
e: l
a pr
imer
a fó
rmul
a da
com
o re
sult
ado
49 y
la
segu
nda
SI.
Los
par
énte
sis
pued
en m
odif
icar
los
res
ulta
dos
de u
na o
pera
ción
mat
emát
ica
adem
ás d
e fa
cili
tar
su l
ectu
ra.
RE
SU
ME
N
Par
aH
asta
est
o
Dec
lara
r un
a \a
rtab
leli.
scrib
a D
íni s
egui
do d
el n
ombr
e do
la v
aria
ble
en e
! an
ligo
de
prog
ram
a. (
Tam
bién
pue
do e
spec
ific
ar u
n up
o de
dat
os: e
l tip
ose
rá v
aria
nte.
) Po
r eje
mpl
o:
13
4
AP
RE
ND
A
VIS
UA
L B
AS
IC Y
ACa
pítu
lo
Cam
biar
el
valo
r de
una
vari
able
AM
UIIC
un
nue\
\.i
lor
cmi
el u
pera
tiitr
de a
sign
ació
n t "
I. Po
r
Obt
ener
una
ent
rada
med
iant
eun
cua
dro
de d
ial
Uti
lice
la
func
ión
liip
uiB
ox y
asi
ane
c! r
esul
tado
.1 u
n;i
vari
able
. Po
rej
empl
o:
Mos
trar
una
sal
ida
en u
ncu
adro
de
dial
oyo
Dec
lara
r una
var
iabl
e de
un
tipo
esp
ecia
l de
dat
os
Uti
lice
la
func
ión
Msy
Box
. (La
cad
ena
que
se m
ostr
ará
en e
l cu
adro
do d
ialo
go p
uede
gua
rdar
se e
n un
a va
riab
le.]
Por
ejem
plo:
Escr
iba
Dim
seg
uido
del
nom
bre
de l
a va
riab
le y
del
car
ácte
r de
tip
o
o bi
an
Escr
iba
Dim
seg
uido
del
nom
bre
de l
a va
riab
le,
¡a p
alab
ra c
lave
As
yun
o de
los
och
o tip
os d
e da
tos
fund
amen
tale
s. P
or e
jem
plo:
Cre
ar u
na c
onst
ante
Cre
ar u
na f
órm
ula
Com
bina
r ca
dena
s de
tex
to
Con
veni
r ca
ráet
e reí
. tex
tual
esen
car
acte
res
num
éric
os
Em
pleo
de
func
ione
sm
atem
átic
as
Esc
riba
la
pala
bra
rese
rvad
a C
onst
seg
uida
por
el
nom
bre
de l
aco
nsta
nte,
el
oper
ador
de
asig
naci
ón (
=) y
el
valo
r asi
gnad
o, l
'or
ejem
plo:
Enl
ace
las
vari
able
s nu
mér
icas
o l
os n
úmer
os m
edia
nte
aluu
no d
e lo
ssi
ete
oper
ador
es a
ritm
étic
os y
asi
gne
desp
ués
el r
esul
tado
a u
na v
aria
ble
o a
una
prop
ieda
d. P
or e
jem
plo:
Uti
lice
la
func
ión
Val
. Por
eje
mpl
o:
Aña
da a
la
fórm
ula
la f
unci
ón y
los
arg
umen
tos
que
nece
site
. Po
rej
empl
o:
Con
trol
del
ord
en d
e ev
alua
ción
U
tili
ce p
arén
tesi
s en
la
fórm
ula.
Por
eje
mpl
oen
una
fór
mul
a
Em
pleo
de
estru
ctur
asde
dec
isió
nE
n lo
s ca
pítu
los
ante
rior
es h
emos
uti
liza
do v
aria
s he
rram
ient
as d
e M
icro
soft
Vsu
al B
asic
par
a pr
oces
ar l
a en
trad
a in
trod
ucid
a po
r el
usu
ario
. Se
han
uti
liza
dm
enús
. obj
etos
y c
uadr
os d
e di
álog
o pa
ra m
ostr
ar o
pcio
nes
al u
suar
io y
se
ha pr
<ce
sado
la
entr
ada
util
izan
do p
ropi
edad
es y
var
iabl
es.
En
este
cap
ítul
o le
mos
trai
cóm
o pu
ede
ejec
utar
su
prog
ram
a un
a se
rie
de i
nstr
ucci
ones
u o
tras
dep
endi
end
de l
a en
trad
a in
trod
ucid
a por
el u
suar
io. L
e m
ostr
aré
cóm
o ev
alua
r una
o m
ás p
npi
edad
es o
var
iabl
es m
edia
nte
el u
so d
e ex
pres
ione
s co
ndic
iona
les
y a
ejec
uta
post
erio
rmen
te,
una
o m
as s
ente
ncia
s de
pro
gram
a ba
sánd
ose
en l
os r
esul
tado
Tam
bién
apr
ende
rá ¡
i det
ecta
r y c
orre
gir e
rror
es d
e pr
ogra
mac
ión
en n
uest
ro c
ódis
util
izan
do l
a ve
ntan
a D
epur
ació
n.
PR
OG
RA
MA
CIÓ
N O
RIE
NT
AD
A A
SU
CE
SO
ios
prog
ram
as d
e.'.•
si/ai
3¿s
;c e
sfan
orie
ntad
os a
iUC
SÍO
.
Los
pro
gram
as q
ue h
a es
crit
o ha
sta
ahor
a m
uest
ran
men
ñs.
obje
tos
y cu
adro
s i
diál
ogo
en l
a pa
ntal
la y
, ade
más
, de
jan
a lo
s us
uari
os q
ue e
scoj
an l
ibre
men
teor
den
en q
ue d
esea
n m
anip
ular
est
os o
bjet
os q
ue a
pare
cen
en p
anta
lla.
Los
pro
ürní
as p
repa
ran
a! u
suar
io p
ara
que
espe
re p
acie
ntem
ente
una
res
pues
ta y
des
pupr
oces
an l
a en
trad
a de
fur
ma
prcd
ecib
le.
lia
ios
ambi
ente
s de
pro
gram
ació
n es
form
a de
tra
baja
r se
con
oce
com
o pr
ogra
mac
ión
wic
iiit
ida
u su
cesa
. L
os p
rogr
mas
se
crea
n pa
rtie
ndo
de u
n gr
upo
de o
bjet
os «
inte
lige
ntes
» qu
e sa
ben
cóm
o re
pond
er c
uand
o e¡
usu
ario
imer
aeiú
u co
n el
los
y, f
inal
men
te,
se p
roce
san
las
cntr
das
real
izad
as p
or e
l us
uari
o m
edia
nte
proc
edim
ient
os d
e su
ceso
aso
ciad
os c
i
1 8
2
AP
RE
ND
A V
ISU
AL
BA
SIC
YA
[•se
riba
ab
rir
en e
l cu
adro
do
text
o >•
puls
e oí
tim
ón l
'ro!
i,ir
cont
rase
ña,
lin l
a pa
ntal
la a
pare
eeni
el
sigu
ióm
e cu
adro
de
di-
ilo
^ uu
iíoai
ulii
^jla
con
tras
eña
no o
s vá
lida:
oc/:.
:3;s
en ,'j
'ce:a
C^o
rsr
-ic
ico.
La n
axo.
iodo
, no
Ac«
í
14.
Pul
se A
cept
ar y
esp
ere
pade
mem
ente
has
ta q
ue e
xpir
e el
per
iodo
est
able
-ci
do.
El p
rogr
ama
mos
trar
á el
sig
uien
te m
ensa
je:
Lo li
snto
, lu
íiím
co h
j «
ji A
eról
a
Soi
on G
uard
arpr
oyec
to
RE
SU
ME
N
Pa
ra
15.
Pul
se A
cept
ar p
ara
term
inar
el
prog
ram
a.
Vol
verá
a a
pare
cer
el e
nlom
o de
pro
gram
ació
n de
Vis
ual
Bas
ic.
16.
Uti
liza
ndo
el b
otón
Gua
rdar
pro
yect
o gu
arde
el
form
ular
io y
el
proy
ecto
en d
isco
con
e!
nom
bre
,M¡
Con
tnis
eña
Teñ
í po
r ¡7.a
da.
Si d
esea
pra
ctic
ar u
n po
co m
ás c
on e
l us
o de
tem
pori
zado
res
y es
truc
-tu
ras
de d
ecis
ión,
con
sult
e la
s Pr
ácti
cas
de p
rogr
amac
ión
de l
a S
egun
daPa
rte
e in
tent
e cr
ear
su p
ropi
o re
loj
desp
erta
dor.
Ha
ga e
sto
Ejec
utar
un
yrup
o de
In
sert
e el
gru
po d
e se
nten
cias
ent
re l
as s
emen
cias
Fnr
yin
stru
ccio
nes
do p
rogr
ama
un
Nex
i de
un b
ucle
. Por
eje
mpl
o:m
imer
o de
term
inad
o de
vec
es
Mos
trar
una
n m
ás l
inea
s de
•alid
;i c-n
un
tonn
ular
iuU
tili
zo e
l méu
ido
Pnnt
. I'n
r
EM
PLE
O O
E BU
CLE
S V
DE
L C
ON
TRO
L TI
ME
S
Par
aH
ag
a e
sto
Boto
nl
L ul
i/ar
«na
-ea,o
,a,
.-.pc
de n
úmer
o, c
on s
ente
ncia
s
ln.c
n. !
--> M
.-mcn
c.a* ..
. un
huc
lc_K
..r
Ncx
t y
ui.h
cc 1
al-.h
r.is
cl.n
e Fo
y S
.cp
P.i
n üc
nmr
U.
-«.c
ncu
Je.
Sali
r de
un b
ucle
For
...N
ií\ d
e U
tilic
e. l;
i sen
tenc
ia E
xit
l:or.
Por
eje
mpl
o:
form
a pr
emat
ura
Ejec
utar
un
urup
o de
sen
tenc
ias
Inse
rte
si gr
upo
lie s
ente
ncia
s en
tre
lai
sent
enci
as D
u y
hasi
a qu
e se
cum
pla
una
Loop
. Por
eje
mpl
o:de
term
inad
a co
ndic
ión
_
Evit
ar u
n bu
cle
Do
sin
fin
Ase
gúre
se d
e qu
e la
con
dici
ón p
ueda
[or
nar e
l va
lor
Fals
e.
Eje
cuta
r un
buc
le h
asta
que
una
U
tilic
e un
buc
le D
o co
n la
pal
abra
cla
ve U
ntil
. l'o
rde
term
inad
a co
ndic
ión
sea
ejem
plo:
Ver
dade
ra
Segu
ir e
n un
buc
ie d
uran
te u
n U
tilic
e un
obj
eto
tem
pori
zado
stie
mpo
esp
ecif
icad
o en
el
prog
ram
aIn
trod
ucir
un
nom
bre
en l
a ba
rra
Asi
gne
¿I n
ombr
e qu
e de
see
util
izar
a l
a pr
opie
dad
Cap
iion
dii t
ítul
os d
e un
a ap
lica
ción
de
l ob
jeto
For
tnl
de í
u ap
lica
ción
.
APR
END
A V
ISU
AL
BASI
C YA
ejem
plo,
ia
sig
uien
te l
ínea
env
ía l
a ca
dena
de
text
o «M
arin
eros
» a
la i
mpr
esor
apr
edet
erm
inad
a de
W
indo
ws:
?ri
ne
er.
?ri
nt
'Har
iner
os"
Ant
es d
e im
prim
ir p
odrá
uti
liza
r el
obje
to P
rint
er p
ara
ajus
tar
algu
nas c
arac
te-
ríst
icas
de
la f
uent
e. P
or e
jem
plo,
el s
igui
ente
cód
igo
impr
ime
«Mar
iner
os»
con
unta
mañ
o de
fue
nte
de 1
4 pu
ntos
:
Pri
nce
r.F
on
cSii
e -
i-JP
rin
cer.
Pri
nc
"Mar
inev
os'
En t
otal
, el o
bjet
o Pr
inte
r cue
nta
con
vari
as d
ocen
as d
e pr
opie
dade
s y
mét
odos
que
podr
á ut
iliz
ar p
ara
cont
rola
r dis
tint
os a
spec
tos
de l
a im
pres
ión.
A d
ifer
enci
a de
los
form
ular
ios
y ob
jeto
s cr
eado
s de
sde
el c
uadr
o de
her
ram
ient
as,
no p
odrá
mod
ifi-
car
los
valo
res
asig
nado
s a
las p
ropi
edad
es
del
obje
to P
riní
er d
esde
la v
enta
na P
ro-
pied
ades
. Tod
as s
us p
ropi
edad
es d
eber
án a
sign
arse
med
iant
e có
digo
de
prog
ram
aen
tie
mpo
de
ejec
ució
n (e
l pro
cedi
mie
nto
Forr
n_L
oad
es u
n bu
en l
ugar
par
a ll
evar
a ca
bo e
ste
tipo
de
asig
naci
ones
que
uti
liza
rá s
iem
pre
que
se e
jecu
te e
l cód
igo}
. Sin
emba
rgo,
muc
has
de l
as p
ropi
edad
es y
mét
odos
del
obj
eto
Prin
ter s
on s
imil
ares
ala
s pa
labr
as c
lave
que
ya
ha u
tili
zado
con
los
for
mul
ario
s y
obje
tos
crea
dos
util
i-za
ndo
los
cont
role
s co
nten
idos
en
la c
aja
de h
erra
mie
ntas
. En
las
tabl
as s
igui
ente
sse
mue
stra
n al
guna
s de
las
prop
ieda
des
y m
étod
os m
ás t
itil
es d
el o
bjet
o Pr
inte
r.
Woí
a;
Par
a ob
tene
r un
a ¡is
la c
ompl
eta
de s
us m
étod
os y
pro
pied
ades
bus
que
Prin
ter e
nla
ayu
da in
tera
ctiv
a de
Vis
ual B
asic
. Ta
mbi
én p
uede
util
izar
¡as
pro
pied
ades
par
a de
term
i-na
r la
cap
acid
ad d
e su
im
pres
ora.
Pro
pied
adD
escr
ipci
ón
Fonl
Nam
e
Fom
Síze
Font
Bol
d
Font
ltal
ic
Mét
od
o
Est
able
ce l
a fu
ente
par
a el
tex
to.
Est
able
ce e
l tam
año
de f
uent
e pa
ra e
! tex
to.
Si e
s T
rue
escr
ibe
el t
exto
en
negr
ita.
Si e
s T
rue
escr
ibí
el t
exto
en
curs
iva.
Con
tien
e el
núm
ero
de p
ágin
a qu
e se
est
á im
prim
iend
o.
Des
crip
ción
Prin
i
New
Page
Eni
lDoc
Kil
lDoc
Impr
ime
el t
exto
esp
ecíf
ica
Jo e
n la
im
pres
ora.
Inic
ia u
na n
ueva
pág
ina
en e
i tr
abaj
o de
impr
esió
n.
Mar
ca e
l fi
nal
del
trab
ajo
de i
mpr
esió
n.
Fina
liza
e!
trab
ajo
de i
mpr
esió
n ac
tual
.
Ó
3 pr
oyec
toco
mpl
eto
(For
mul
ario
s,7
3//a
nola
se
encu
entra
en
eldi
sco
en Id
car
peta
Cha
pter
7.
Con
trol
Com
man
dBui
Kn
TRAB
AJO
CO
N FO
RM
ULA
RIO
S, IM
PRES
ORA
S Y
GES
TORE
S DE
ERR
OR
205
En e
l si
guie
nte
ejer
cici
o le
mos
trar
é co
rno
añad
ir s
opor
te d
e im
pres
ión
al p
ro-
uran
ia M
i Fo
rmul
ario
s It
alia
nos
que
creó
ant
erio
rmen
te. U
tili
zará
las
pro
pied
ades
Fon
tNam
e. F
ontS
ize
y Fo
ntB
old
para
cam
biar
el
estil
o de
l te
xto,
e!
mét
odo
Prin
tpa
ra e
nvia
r def
inic
ione
s a l
a im
pres
ora
y el
mét
odo
End
Doe
par
a m
arca
r el f
inal
del
trab
ajo
de i
mpr
esió
n.
CÓ
MO
AÑ
AD
IR
SO
PO
RT
E D
E I
MP
RE
SIÓ
N A
L
PR
OG
RA
MA
((M
I F
OR
MU
LA
RIO
S
ITA
LIA
NO
S»
1.
Abr
a el
pro
yect
o M
i Fo
rmul
ario
s It
alia
nos
si n
o es
tá y
a ab
iert
o.Si
no
ha c
read
o M
i Fo
rmul
ario
s It
alia
nos.
vbp
pued
e ca
rgar
el
proy
ecto
Form
ular
ios
Ital
iano
s.vb
p de
sde
el d
isco
dur
o.
2.
Mue
stre
el
segu
ndo
form
ular
io d
el p
roye
cto
(Mi
Def
inic
ión.
frm
o
Def
i-ni
ción
.frm
si h
a ut
iliz
ado
el o
rigi
nal)
.E
ste
es e
l fo
rmul
ario
que
mue
stra
la
defi
nici
ón d
e la
pal
abra
ita
lian
aso
bre
la q
ue e
l us
uari
o, h
a re
aliz
ado
una
dobl
e pu
lsac
ión.
El
obje
tivo
es
añad
ir a
hora
un
botó
n Im
prim
ir a
! fo
rmul
ario
par
a pe
rmit
ir a
l us
uari
o qu
eob
teng
a un
a co
pia
impr
esa
de l
a de
fini
ción
.
3.
Pul
se e
l con
trol
Com
man
dBut
ton
cont
enid
o en
la
caja
de
herr
amie
ntas
par
acr
ear
un b
otón
de
orde
n a
la i
zqui
erda
del
bot
ón C
erra
r.P
uede
que
ten
ga q
ue d
espl
azar
el b
otón
Cer
rar
haci
a la
der
echa
o re
duci
rel
tam
año
de l
a et
ique
ta p
ara
hace
r sit
io a
l nue
vo b
otón
. C
uand
o ha
ya te
rmi-
nado
, su
form
ular
io te
ndrá
un
aspe
cto
sim
ilar
a é
ste:
Botó
n Im
prim
ir
4.
Cam
bie
el r
ótul
o de
l bo
tón
por
«Im
prim
ir»
util
izan
do l
a ve
ntan
a Pr
opie
da d
es.
5.
Puls
e do
s ve
ces
el n
uevo
bot
ón p
ara
edit
ar s
u pr
oced
imie
nto
de s
uces
o.El
pro
cedi
mie
nto
de s
uces
o C
omm
and2
_Cli
ck a
pare
cerá
en
la v
enía
n
Cód
igo.
6.
Intr
oduz
ca l
as s
igui
ente
s se
nten
cias
de
impr
esió
n en
el
proc
edim
ient
o d
suce
so:
21
6
AP
RE
ND
A V
ISU
AL
BA
SIC
YA
el m
ensa
je d
e er
ror
ocur
re d
os v
eces
, el
prog
ram
a ig
nora
rá l
a in
stru
cció
n de
car
ga y
cont
inua
rá e
n la
sig
uien
te s
ente
ncia
;
Ir.-
e.it
js
= J
'i
nic
iali
sa
la
var
iab
le
C3r
.=.a
dor3
en E
rror
GoT
o E
rror
Dis
coIr
r.ag
el,p
icsu
íe
= L
oódP
lccu
ret '
a: \
prnc
ouc2
.w3i
f" >
axic
Su
b 'S
ali
r <2
*I p
roce
di.-
sien
ío
¿rro
rDis
co:
-Xsg
Box
(£rr
.Des
crip
ción
),
, "E
rror
de
car
ga-
I.-.C
enca
s ~
Inte
nto
s -
1 'in
crem
enta
el
co
ntad
or
ce e
rro
res
:f :n
ten=
33 >
=
2 T
he.i
Res
ume
.'lax
t:E
lse R
esum
eEn
d ir Est
a es
una
téc
nica
úti
l cu
ando
el
erro
r qu
e se
est
á in
tent
ando
man
ejar
es
unpr
oble
ma
que
pu
ede
ser
resu
elto
en
cier
tas
ocas
ione
s po
r e!
usu
ario
. L
o m
ás i
mpo
r-ta
nte
que
debe
rec
orda
r es
que
'Res
ume
vuel
ve a
int
enta
r ej
ecut
ar l
a se
nten
cia
que
prov
ocó
el e
rror
, m
ient
ras
que
Res
ume
Nex
t sa
lta
la s
ente
ncia
pro
blem
átic
a y
pasa
a la
sig
uien
te l
ínea
del
pro
cedi
mie
nto
de s
uce
so.
Cua
ndo
util
ice
Res
ume
Nex
t, a
se-
gúre
se d
e qu
e la
sen
tenc
ia s
igui
ente
es
real
men
te l
a qu
e de
sea
ejec
utar
, y
com
pru
e-be
que
no
vuel
ve a
eje
cuta
r ac
cide
ntal
men
te e
l g
esto
r de
err
or.
Una
bue
na f
orm
a de
salv
ar e
l ge
stor
de
erro
r co
nsis
te e
n ut
iliz
ar l
a se
nten
cia
Exi
t S
ub
: tam
bién
pod
ráut
iliz
ar R
esum
e N
ext
con
una
etiq
ueta
qu
e in
diqu
e a
Vis
ual
Bas
ic q
ue s
alte
a u
nase
nten
cia
desp
ués
del
ges
tor
de e
rror
.
RE
SU
ME
N
Para
Hag
a es
to
en e
l m
enú
Inse
rtar
, sel
ecci
one
Form
ular
io.
Car
gar
un f
orm
ular
io e
n la
U
tili
ce l
a se
nten
cia
Loa
d. P
or e
jem
plo:
mem
oria
Loa
d Fo
rn2
Mos
trar
un
form
ular
io c
arga
do
Uti
lice
el
mét
odo
Show
. Po
r ej
empl
o.
For^
iS. S
how
Cre
ar u
n fo
rmul
ario
mod
al
Incl
uya
un 1
cua
ndo
mue
stre
un
form
ular
io.
Por
ejem
plo:
"V
Para
TR
AB
AJO
CO
N F
OR
MU
LAR
IOS
. IM
PR
ES
OR
AS
Y G
ES
TO
RE
S D
E E
RR
OR
Hag
a es
to
Ocu
ltar
un f
orm
ular
io
Eli
min
ar u
n fo
rmul
ario
de
lam
emor
ia
Mod
ific
ar e
l no
mbr
e de
un
obje
to
Cre
ar u
n fo
rmul
ario
pad
re M
DI
Cre
ar u
n fo
rmul
ario
hij
o M
DI
Env
iar
una
líne
a de
tex
to a
la
impr
esor
a
Mod
ific
arla
s op
cion
es d
eim
pres
ión
Fina
liza
r un
tra
bajo
de
impr
esió
n
Impr
imir
un
form
ular
io e
nter
o
Del
ecta
r er
rore
s et
i tie
mpo
de
ejec
ució
n oc
urri
dos
en s
uspr
ogra
mas
Proc
esar
err
ores
en
tiem
po d
eej
ecuc
ión
Con
tinu
ar d
espu
és d
e un
err
or
Sali
r de
un
proc
edim
ient
o an
tes
de u
na s
ente
ncia
End
Sub
Uti
lice
el m
étod
o M
ide.
Por
eje
mpl
o:
Forn
C.H
ide
Uti
lice
la
sent
enci
a U
nlon
d. P
or e
jem
plo:
Unl
oad
F3nn
2
Cam
bie
la p
ropi
edad
Ñam
e de
! ob
jeto
en
la v
enta
naPr
opie
dade
s.
En
el m
enú
Inse
rtar
, sel
ecci
one
la o
pció
n Fo
rmul
ario
MD
I.
En
el m
enú
Inse
rtar
, sel
ecci
one
la o
pció
n Fo
rmul
ario
yas
igne
a l
a pr
opie
dad
MD
IChi
ld d
el f
orm
ular
io e
l va
lor
Tru
e.
Uti
lice
el o
bjet
o Pr
inte
r y e
l m
étod
o Pr
int.
Por
ejem
plo:
Pri
nce
r.P
rin
t -M
arin
eros
"
Est
able
zca
las
prop
ieda
des
de!
obje
to P
rint
er e
n ti
empo
de
ejec
ució
n.
Uti
lice
el
mét
odo
End
Doc
. Po
r ej
empl
o:
Pri
nt: e
r.E
ndD
oc
Uti
lice
el m
étod
o Pr
imFo
rm.
Por
ejem
plo:
For
ra!.
P
rinc
rorm
Act
ive
un g
esto
r de
err
or u
tili
zand
o la
sen
tenc
ia:
On S
rro
r G
ota
etiq
-jec
a
dond
e et
ique
ta s
erá
el n
ombr
e de
l ge
stor
de
erro
r.
Cre
y un
a ru
tina
ges
tor
de e
rror
(no
rmal
men
teco
mpu
esta
por
una
est
ruct
ura
de d
ecis
ión
lf...
The
n o
Sele
ctC
ase)
jun
to c
on u
na e
tiqu
eta
que
iden
tifi
que e
l er
ror.
Los
gest
ores
de
erro
r más
fre
cuen
tes
defi
nen
prop
ieda
des
ym
uest
ran
men
saje
s al
usu
ario
uti
liza
ndo
la f
unci
ón M
sgB
ox.
Uti
lice
Res
ume,
Res
ume
Nex
t o
la e
tiqu
eta
Res
ume.
Uti
lice
la
sent
enci
a E
xit
Sub.
25
2
AP
RE
ND
A V
ISU
AL
BA
SIC
YA
El pr
ogra
ma
com
plet
a•"
Conv
enio
s tíe
nom
encl
atur
a*
seen
cuen
tra e
n <e/
disc
o du
ro en
Is
carp
era
Chap
ter
9.
*
Con
veni
o* d
e n
omen
clat
ura
Bis
nytri
do a
l po
PS
J i*
del (
xcqr
ama
pUss
Saí
f
So íó
n G
uard
arpr
oyec
to
\. P
ulse
e! b
otón
Sal
ir p
ara
dete
ner
el p
rogr
ama.
El
prog
ram
a te
rmin
a y
vuel
ve a
apa
rece
r el
ent
orno
de
prog
ram
ació
n.
11,
Puls
e el
bot
ón G
uard
ar p
roye
cto
de l
a ba
rra
de h
erra
mie
ntas
y g
uard
e el
form
ular
io b
ajo
el n
ombr
e M
i C
onve
nios
de
nom
encl
atur
a.fr
m
en l
aca
rpet
a C
hapt
er 8
. Gua
rde
el a
rchi
vo d
e pr
oyec
to c
omo
MÍ
Con
veni
os d
en
om
encl
atu
ra,
vbp.
Imp
ort
an
te:
La a
sign
ació
n de
nom
bres
intu
itivo
s a
los
obje
tos
com
enza
rá a
dar
aut
én-
ticos
fru
tos
cuan
do e
mpi
ece
a es
crib
ir pr
ogra
mas
de
may
or t
amañ
o o
cuan
do t
raba
je e
ngr
upo
con
otr
osp
rog
ram
ad
ore
s. E
n ge
nera
l, es
una
bue
na ¡
dea
util
iza
rlo
s co
nven
ios
deno
men
clat
ura
si c
uent
a co
n m
ás d
e do
s ob
jeto
s de
! m
ism
o tip
o en
el
form
ular
io.
RE
SU
ME
N
Par
aH
aga
esto
Bo
tón
Cre
ar l
ínea
s re
ctas
en
unfo
rmul
ario
Cre
ar r
ectá
ngul
os,
cuad
rado
s,el
ipse
s y
círc
ulos
en
unfo
rmul
ario
Cre
ar b
oton
es d
e ór
dene
sgr
áfic
os
Uti
lice
el c
ontr
ol U
ne d
el c
uadr
o de
her
rarn
íem
as.
Uti
lice
el
cont
rol S
hape
del
cua
dro
de h
erra
mie
ntas
. Asi
gne
a la
pro
pied
ad S
hape
del
obj
eto
el t
ipo
y ca
ract
erís
tica
sco
rres
pond
ient
es.
Uti
lice
e! c
ontr
ol P
ictu
reB
ox p
ara
intr
oduc
ir u
na o
más
imág
enes
grá
fica
s en
el
form
ular
io y
car
gar
en e
llas
map
asde
bit
s de
ico
nos.
Int
rodu
zca
eí c
ódig
o ne
cesa
rio
para
proc
esar
las
pul
saci
ones
del
rató
n en
los
pro
cedi
mie
ntos
de
suce
so M
ouse
Dow
n as
ocia
dos
con
los
cuad
ros
de i
mag
en.
para
Hag
a es
to
AD
ICIÓ
N D
E E
FEC
TOS
ES
PE
CIA
LES
Y A
RT
ÍST
ICO
S
253
Bo
tón
Sopo
rtar
la
técn
ica
«arr
astr
ar y
solta
n> e
n un
for
mul
ario
Mod
ific
ar l
a fo
rma
de!
punt
ero
del
rató
n
Espe
cifi
car
un p
unte
ro d
e ra
tón
dete
rmin
ado
Nom
brar
un
obje
to
Mov
er u
n ob
jeto
con
teni
do e
nel
for
mul
ario
Ani
mar
un
obje
to
Exp
andi
r y c
ontr
aer
un o
bjet
oen
tie
mpo
de
ejec
ució
n
Asi
gne
el v
alor
1 a
la p
ropi
edad
Dra
uMod
e de
l obj
eto
ade
spla
zar.
Si lo
des
ea, p
uede
sel
ecci
onar
un
icon
o de
desp
laza
mie
nto
para
e! o
bjet
o. E
scri
ba u
n pr
oced
imie
nto
ciésu
ceso
Dra
gDro
p o
de D
ragO
ver p
ara
el o
bjet
o so
bre
el q
ueco
loca
rá e
l obj
eto
arra
stra
do.
Asi
gne
uno
de l
os 1
6 pu
nter
os e
stán
dar a
la p
ropi
edad
Mou
sePo
inte
r del
for
mul
ario
o d
e lo
s ob
jeto
s re
laci
onad
os.
Asi
gne
a la
pro
pied
ad M
ouse
Poin
ier e
l va
lor
99 y
uti
lice
lapr
opie
dad
Mou
selc
on p
ara
espe
cifi
car
el p
unte
rope
rson
aliz
ado.
Espe
cifi
que
un n
ombr
e ún
ico
a la
pro
pied
ad Ñ
ame.
Uti
lice
los
conv
enio
s de
nom
encl
atur
a pa
ra p
oder
ide
ntif
icar
al
obje
to c
on f
acili
dad.
Uti
lice
el m
étod
o M
ove
para
mov
er e
l obj
eto.
Por
eje
mpl
o:
Pic
cure
l.üa
ve 1
440,
14
4Q
Uti
lice
el c
ontr
ol T
imer
par
a co
loca
r uno
o m
ás m
étod
osM
ove
en u
n pr
oced
imie
nto
de s
uces
o te
mpo
riza
dos
Lave
loci
dad
de l
a an
imac
ión
se c
ontr
ola
con
la p
ropi
edad
Inte
rval
del
teni
pori
zado
r.
Cam
bie
las
prop
ieda
des
Heí
ght
o W
idth
del
obj
eto.
292
AP
RE
ND
A V
ISU
AL
BA
SIC
YA
form
a in
adve
rtid
a. P
or ej
empl
o, c
onsi
dere
la
sigu
ient
e de
clar
ació
n de
l pro
cedi
mie
nto
Sub
y s
u ll
amad
a co
rres
pond
ient
e:
S-b
?3s;
cMC
oste
Tot
alSn
d Su
b
írtai
io w
. 51
.,;
,:ai
~onv
larc
a .>
; •.
•!;-
:
Pre
cio
= 10
0T
ocal
=
0C
osts
-Mas
lnca
rés
?rec
ij,
"ica
iP
riac
P
reci
e;
*al
Sí
-i
En
este
eje
mpl
o, e
l pr
ogra
mad
or p
asa
dos
vari
able
s po
r re
fere
ncia
al
proc
edi-
mie
nto
Cos
teM
asIn
teré
s: P
reci
o y
Tot
al.
La
inte
nció
n de
] pro
gram
ador
era
act
uali
-za
r el
val
or d
e la
var
iabl
e T
otal
y u
tili
zar e
ste
nuev
o va
lor
en e
l m
étod
o Pr
ínt
pero
,po
r de
sgra
cia,
el p
rogr
amad
or p
asó
por
alto
que
la
vari
able
Pre
cio
ve m
odif
icad
o su
valo
ren
un p
aso
inte
rmed
io d
entr
o de
l pro
cedi
mie
nto
(com
o Pr
ecio
ha
sido
pas
ada
por
refe
renc
ia,
los
cam
bios
en
el v
alor
de
la v
aria
ble
Cos
te s
e co
nvie
nen,
aut
omá-
tica
men
te, e
n m
odif
icac
ione
s de
la
vari
able
Pre
cio)
. E
ste
hech
o pr
oduc
e el
sig
uien
-te
res
ulta
do e
rrón
eo c
uand
o se
eje
cuta
el p
rogr
ama:
105
al
5% d
e in
ceré
s es
105
¿a p
alab
ra c
lave
ByV
al
Una
for
ma
obvi
a de
evi
tar
este
pro
blem
a es
no
mod
ific
ar n
unca
el
valo
r de
una
vari
able
que
se
pasa
a u
n pr
oced
imie
nto.
P
ero
esta
sol
ució
n se
pue
de t
rans
form
aren
la
nece
sida
d de
aña
dir
gran
can
tida
d de
cód
igo
a un
pro
gram
a y
pued
e re
sult
arim
prac
tica
ble
si u
sted
for
ma
part
e de
un
equi
po d
e de
sarr
ollo
con
stit
uido
por
var
ios
prog
ram
ador
es.
Un
mej
or m
étod
o es
uti
liza
r la
pal
abra
cla
ve B
y V
al d
entr
o de
la
list
a de
arg
umen
tos
cuan
do s
e de
clar
a e!
pro
cedi
mie
nto.
Est
a pa
labr
a cl
ave
le c
omun
ica
a V
isua
l B
asic
que
deb
e al
mac
enar
una
cop
iade
l arg
umen
to o
rigi
nal y
dev
olve
rlo
sin
mod
ific
ar c
uand
o te
rmin
e el
pro
cedi
mie
nto
(inc
luso
aun
que
el v
alor
de
la v
aria
ble
haya
sid
o m
odif
icad
o de
ntro
del
pro
cedi
-m
ient
o). B
y V
al s
e ut
iliz
a de
ntro
de
una
list
a de
arg
umen
tos
tal y
com
o se
mue
stra
aco
ntin
uaci
ón:
<B-/v
*: c
o«e.
T
eta!
;
ByV
al.
el p
ro»r
a-
100
al
51 d
»
-jora
pas
ar u
na.¿
ríanl
e co
mo
valo
r¿A
terr
ando
te•••
arab
le en
tre
paré
ntes
is.
RE
SU
ME
N
Par
a
EM
PLE
O D
E M
ÓD
UL
OS
Y P
RO
CE
DIM
IEN
TO
S 2
9J
Pas
o de
una
var
iabl
e co
mo
valo
r
Si n
o qu
iere
uti
liza
r la
pal
abra
cla
ve B
yVal
pod
rá u
tili
zar
un m
étod
o al
tcrn
ativ
ipa
ra e
vita
r qu
e el
val
or d
e un
a va
riab
le q
ue h
aya
pasa
do í
e ve
a m
odif
icad
ofo
rma
inad
vert
ida:
pod
rá c
onve
rtir
a l
a va
riab
le e
n un
val
or l
iter
al s
in m
ás q
iuen
cerr
arla
en
tre
paré
ntes
is.
Est
e tr
uco
siem
pre
func
iona
cor
reci
amen
te e
n V
isua
Bas
ic y
. gr
acia
s a
él, e
l pr
oces
.0 d
e ll
amar
a l
os p
roce
dim
ient
os se
con
vier
te e
n un
íta
rea
más
int
uiti
va. S
i esp
ecíf
icam
ente
pas
a un
a va
riab
le c
omo
valo
r to
do e
l mun
d(sa
brá
cuál
es
su i
nten
ción
. Con
esl
e m
étod
o ta
mbi
én p
odrá
pas
ar u
na v
aria
ble
conu
valo
r en
cie
rtas
oca
sion
es.
La
sint
axis
que
deb
erá
util
izar
par
a ll
amar
al
proc
edí
mie
nto
Cos
teM
asIn
teré
s y
pasa
r la
var
iabl
e P
reci
o co
mo
valo
r es
:
Cos
ceM
asIn
seré
s (P
reci
o),
Tot
al
Si e
l pr
ogra
ma
ejem
plo
se i
nvoc
a de
est
a fo
rma,
tam
bién
se
obte
ndrá
ei
resu
lta]
tío c
orre
cto:
100
al
51 <
ie in
ceré
s es
105
En
este
cap
ítul
o ha
apre
ndid
o a
util
izar
var
iabl
es p
úbli
cas,
fun
cion
es y
pro
cedi
-m
ient
os S
ub p
ara
gest
iona
r la
info
rmac
ión
man
ejad
a en
un
prog
ram
a. P
oco
a po
ceir
á ha
cien
do u
so d
e es
te t
ipo
de c
onst
rucc
ione
s cu
ando
sus
pro
gram
as a
lcan
cen
unm
ayor
tam
año.
Con
ell
as p
odrá
aho
rrar
un
tiem
po c
onsi
dera
ble
y vo
lver
a u
tili
zar-
las
en f
utur
os p
roye
ctos
.
Hag
a es
toB
otón
Nom
brar
un
obje
to
Cre
ar u
n nu
evo
mód
ulo
Gua
rdar
un
mód
ulo
Elim
inar
un
mód
ulo
tic u
npr
ogra
ma
Espe
cifi
que
un n
ombr
e ún
ico
en l
a pr
opie
dad
Ñam
e. U
tilic
ela
s co
nven
cion
es d
e de
nom
inac
ión
apro
piad
as p
ara
pode
rid
entif
icar
con
fac
ilida
d el
nom
bre.
Puls
e ei
bot
ón M
ódul
oo se
lecc
ione
la
opci
ón M
ódul
o co
nten
ida
en e
l men
ú In
sert
ar.
Sele
ccio
ne e
l mód
ulo
en l
a ve
ntan
a Pr
oyec
to y
. fi
nalm
eme,
ejec
ute
la o
pció
n G
uard
ar a
rchi
vo c
omo
cont
enid
a en
el
men
ú A
rchi
vo.
Sele
ccio
ne e
l mód
ulo
en l
a ve
ntan
a Pr
oyec
to y
. fi
nalm
ente
,ej
ecut
e la
opc
ión
Elim
inar
arc
hivo
con
teni
da e
n el
men
úA
rchi
vo.
29
4 A
PR
EN
DA
VIS
UA
L B
AS
IC Y
A
Para
Hag
a es
to
Del
men
ú A
rchi
vo, s
elec
cion
e la
opc
ión
Aür
eü;
Cre
ar u
na v
aria
ble
públ
k
Cre
ar u
n pr
oced
imie
nto
Sub
Mai
n pa
ra j
nici
aliz
ar v
aria
bles
y m
ostr
ar e
l fo
rmul
ario
abi
erto
{nec
esar
io e
n pr
ogra
mas
que
cont
iene
n m
ódul
os e
stán
dar)
«reg
ar a
rchi
vo.
Dec
lara
r la
var
iabl
e ut
iliz
ando
la
pala
bra
clav
e l'u
blic
den
tro
de u
n m
ódul
o es
tánd
ar.
Por
ejem
plo:
Pu
bli
c V
enea
sToc
<ile
s A
s In
cege
r
Del
men
ú H
erra
mie
ntas
sel
ecci
one
Opc
ione
s, p
ulse
sob
re l
aet
ique
ta P
roye
cto
y es
peci
fiqu
e la
opc
ión
Sub
Mai
n de
ntro
de!
cuad
ro d
e li
sta
desp
lega
ble
deno
min
ado
Form
ular
ioin
icia
l. E
n la
ven
tana
de
códi
go d
el m
ódul
o es
tánd
ar,
debe
rácr
ear
un p
roce
dim
ient
o Su
b M
ain
que
teng
a un
asp
ecto
sim
ilar
al s
igui
ente
:
Cre
ar u
na f
unci
ón p
úbli
caIn
trod
uzca
las
sem
e :nci
as a
soci
adas
con
la
func
ión
entr
e la
pala
bra
clav
e Fu
ncti
on y
la
pala
bra
clav
e E
nd F
unct
ion.
dent
ro d
e un
mód
ulo
está
ndar
. Po
r om
isió
n, l
as f
unci
ones
son
públ
icas
. Po
r ej
empl
o:
Fun
ctio
n T
asat
Éx
itct
s.In
ten
tos)
A
s S
trin
gP
orc
enta
je
= É
xit
os/
Inte
nto
sT
asa
= F
onna
tíP
orce
ntaj
e.
"0.0
1*'
End
?un
ctio
n
Esc
riba
el
nom
bre
de l
a fu
nció
n y
los
argu
men
tos
nece
sari
osde
ntro
de
las
inst
rucc
ione
s as
ocia
das
en e
l pr
oced
imie
nto
desu
ceso
. P
or e
jem
plo:
IblT
asa.
Cap
ción
=T
asa(
Wur
oÉxi
cos,
U
tiB
lnce
nccs
í
Intr
oduz
ca l
as s
ente
ncia
s as
ocia
das
con
el p
roce
dim
ient
oen
tre
la p
alab
ra c
lave
Sub
y l
a in
stru
cció
n E
nd S
ub d
entr
ode
un
mód
ulo
está
ndar
. Po
r om
isió
n, l
os p
roce
dim
ient
osSu
b so
n pú
blic
os.
Por
ejem
plo:
Sub CosceüasInterés (Cost£. Total»
Cac
ti
= C
oste
•
1.05
Toc
al
= In
cíC
osC
eiSr
.d
Sub
Lla
mar
a u
n pr
oced
imie
nto
Sub
Esc
riba
el
nom
bre
del
proc
edim
ient
o y
cual
quie
r ar
gum
ento
que
sea
nece
sari
o de
ntro
del
pro
cedi
mie
nto
de s
uces
o. P
orej
empl
o:
Lla
mar
a u
na f
unci
ón d
efin
ida
por
el u
suar
io
Cre
ar u
n pr
oced
imie
nto
Sub
Par
aH
aga
esto
EM
PLE
O D
E M
ÓD
ULO
S Y
PR
OC
ED
IMIE
NTO
S
Zí
Bot
ón
Def
inir
o m
ilí/
ar u
na p
ropi
edad
[E
spec
ifiq
ue e
l no
mbr
e de
! fo
rmul
ario
c i
ntro
duzc
a un
tle u
n ob
jeto
en
un p
roce
dim
ient
o pu
nto
I.)
ante
s de
! no
mbr
e de
l ob
jeto
. Po
r ej
empl
o:de
pro
pósi
to u
ener
al'
Pasa
r ar
gum
ento
s co
mo
valo
r E
spec
ifiq
ue c
omo
argu
men
to d
e! p
roce
dim
ient
o el
pro
pio
nom
bre
de l
a va
riab
le e
ncer
rada
ent
re p
arén
tesi
s o
un v
alo
lite
ral.
Por
ejem
plo:
Pasa
r un
arg
umen
to p
orre
fere
ncia
Cal
cula
rín
tere
s 50
0
Esp
ecif
ique
una
var
iabl
e co
mo
argu
men
to d
el p
roce
dim
ient
o
Cal
cula
rIn
teré
s P
reci
o
32
2
APR
END
A V
ISU
AL B
ASIC
YA
RE
SU
ME
N
Par
a H
aga
esto
Proc
esar
los
obj
etos
de
una
cole
cció
n
Mov
er o
bjet
os d
e la
col
ecci
ónC
ontr
ols
por
la p
anta
lla
deiz
quie
rda
a de
rech
a.
Prop
orci
onar
un
trat
amie
nto
espe
cial
a u
n ob
jeto
de
una
cole
cció
n
Cre
ar u
n ai
ra y
púb
lico
Cre
ar u
n ar
ray
loca
l
Asi
gnar
un
valo
r a
un a
rray
Def
inir
la
base
de
todo
s lo
sar
rays
con
teni
dos
en u
npr
ogra
ma
com
o 1
Eli
min
ar l
as i
nstr
ucci
ones
Pri
ntde
un
form
ular
io
Cre
ar u
n ar
ray
diná
mic
o
Esc
riba
un
bucl
e Fo
r E
ach,
..N'e
.tt q
ue h
aga
refe
renc
ia a
cad
a un
o de
los
elem
ento
s in
tlivi
dlta
les
de l
a co
lecc
ión.
Por
eje
mpl
o:
C=
rl.v
isib
le ;
Fai
s-2
Mod
ific
ar l
a pr
opie
dad
Clr
l.L
eft
de c
ada
uno
de l
os o
bjet
ospe
rten
ecie
ntes
a l
a co
lecc
ión
util
izan
do u
n bu
cle
For
Eac
h...N
exr.
Por
ejem
plo:
For
E
acii
c:r
l Jn
Co
ntr
ols
Ctr
l.^
er-
=
C:r
l.-e
f!;
- 2
00
Nex
t C
tri
Def
inir
la
prop
ieda
d T
ag d
e un
obj
eto
asig
nánd
ola
un v
alor
rec
onoc
ible
y, f
inal
men
te, v
erif
icar
ese
val
or d
entr
o de
un
bucl
e F
or E
aeh.
..Nex
t.P
or e
jem
plo:
For
Eac
h ccrl
Ir
. C
on
tro
lsIf
C
trl.
Tag
o
"Boc
ón-
Tlie
nC
trl.
Le
ft
= C
trrl
.Lec
t +
200
Enci I
¿N
exc
ccrl
Dim
ensi
onar
el a
rray
uti
liza
ndo
la p
alab
ra c
lave
Pub
lic
dent
ro d
e un
mód
ulo
está
ndar
. P
or e
jem
plo:
Pub
lic
Em
plea
dos(
91 A
s S
trin
g
Dir
nens
iona
r el
arr
ay u
tili
zand
o la
pal
abra
cla
ve S
tatí
c de
ntro
de
unpr
oced
imie
nto
de s
uces
o. P
or e
jem
plo:
scacic
Em
plea
dos(
9)
As
stri
ag
Esp
ecif
icar
el
nom
bre
del
arra
y, e
l Ín
dice
del
ele
men
to d
e! a
rray
al
que
se d
esea
asi
gnar
un
valo
r y,
fin
alm
ente
, el
pro
pio
valo
r. P
or e
jem
plo:
Em
plea
dos(
5)
= "L
ola"
Intr
oduc
ir l
a in
stru
cció
n O
ptio
n B
ase
en u
n m
ódul
o es
tánd
ar. P
orej
empl
o:
Opc
ión
Sas
e 1
Uti
liza
r el
mét
odo
Cls
.
EMPL
EO D
E C
OLE
CCIO
NES
Y M
ATRI
CES
323
Esp
ecif
icar
e! n
ombr
e y
el t
ipo
del
arra
y en
tie
mpo
de
dise
ño, p
ero
omit
irel
núm
ero
de e
lem
ento
s. C
uand
u su
pro
gram
a se
eje
cute
, es
peci
fiqu
e e!
tam
año
del
arra
y ut
iliz
ando
h i
nstr
ucci
ón R
eDim
. P
or e
jem
plo:
SeD
im T
emce
ir^^
'Jra
s'D
tas)
Hag
a es
to
Proc
esar
los
ele
men
tos
cont
enid
os e
n un
arr
ay
Posí
cion
ar e
l cu
rsor
en
elfo
rmul
ario
(pa
ra u
tili
zar c
onPr
int y
otr
os m
étod
os}
Esc
riba
un
bucl
e Fo
r...N
ext
util
izan
do ¿
1 con
tado
r de
l bu
cle
com
o Ín
dice
del
arra
y. P
or e
jem
plo:
For
ii =
I "
o 7
To
tal!
* T
oo
al!
Uti
lice
las
pro
pied
ades
Citr
rent
.K y
Cur
rent
V e
n el
for
mul
ario
. E
stas
dos
prop
ieda
des
repr
esen
tan,
res
pect
ivam
ente
, las
coo
rden
adas
X e
Y
del
curs
or e
n pu
ntos
.