62302158 control de puertos paralelos con visual basic

48
Curso Básico VISUAL BASIC VISUAL BASIC VISUAL BASIC VISUAL BASIC CONTROL DE PUERTOS DE CONTROL DE PUERTOS DE CONTROL DE PUERTOS DE CONTROL DE PUERTOS DE COMPUTADORA COMPUTADORA COMPUTADORA COMPUTADORA USANDO USANDO USANDO USANDO VISUAL BASIC VISUAL BASIC VISUAL BASIC VISUAL BASIC LEONARDO MEJIA R. ING. EN MECATRONICA UNIVERSIDAD DE PAMPLONA 2007

Upload: exeluc75

Post on 31-Jul-2015

114 views

Category:

Documents


23 download

TRANSCRIPT

Page 1: 62302158 Control de Puertos Paralelos Con Visual Basic

Curso BásicoVISUAL BASICVISUAL BASICVISUAL BASICVISUAL BASIC

CONTROL DE PUERTOS DE CONTROL DE PUERTOS DE CONTROL DE PUERTOS DE CONTROL DE PUERTOS DE COMPUTADORACOMPUTADORACOMPUTADORACOMPUTADORA

USANDOUSANDOUSANDOUSANDO

VISUAL BASICVISUAL BASICVISUAL BASICVISUAL BASICLEONARDO MEJIA R.

ING. EN MECATRONICAUNIVERSIDAD DE PAMPLONA

2007

Page 2: 62302158 Control de Puertos Paralelos Con Visual Basic

Curso BásicoVISUAL BASICVISUAL BASICVISUAL BASICVISUAL BASIC

PUERTO PARALELOPUERTO PARALELOPUERTO PARALELOPUERTO PARALELO

LEONARDO MEJIA R.

ING. EN MECATRONICAUNIVERSIDAD DE PAMPLONA

2007

– 1. &H378 8 BIT INPUT/OUTPUT I / O = d 888 (A0 - A7)

– 2. &H37A 4 BIT I/O = d 890 (B0 - B3)

– 3. &H379 5 BIT INPUT = d 889 (C3 - C7)

Page 3: 62302158 Control de Puertos Paralelos Con Visual Basic

Curso BásicoVISUAL BASICVISUAL BASICVISUAL BASICVISUAL BASIC

LEONARDO MEJIA R.

ING. EN MECATRONICAUNIVERSIDAD DE PAMPLONA

2007

Page 4: 62302158 Control de Puertos Paralelos Con Visual Basic

Curso BásicoVISUAL BASICVISUAL BASICVISUAL BASICVISUAL BASIC

LIBRERIAS DE ENLACE DINAMICOLIBRERIAS DE ENLACE DINAMICOLIBRERIAS DE ENLACE DINAMICOLIBRERIAS DE ENLACE DINAMICO

LEONARDO MEJIA R.

ING. EN MECATRONICAUNIVERSIDAD DE PAMPLONA

2007

Biblioteca de vBiblioteca de vBiblioteca de vBiblioteca de víííínculos dinnculos dinnculos dinnculos dináááámicos. micos. micos. micos. Para enviar y recibir datos al puerto paralelo de comunicaciones del computador es necesario disponer de un grupo de instrucciones en lenguaje assemblerassemblerassemblerassembler (ensamblador) ) ) ) los cuales suelen implementarse en una clase especial de archivos compilados denominados dlldlldlldll....Dll es la sigla de ‘‘‘‘biblioteca de vbiblioteca de vbiblioteca de vbiblioteca de víííínculos dinnculos dinnculos dinnculos dináááámicosmicosmicosmicos’’’’ (dynamic link library). Es un archivo con extensión dlldlldlldll el cual contiene una o más funciones que son compiladas, vinculadas y cargadas independientes al proceso que la ha invocado. Usualmente se guardan en el directorio Windows/System, de tal forma que el sistema conozca de antemano la ubicación donde buscarla.

Page 5: 62302158 Control de Puertos Paralelos Con Visual Basic

Curso BásicoVISUAL BASICVISUAL BASICVISUAL BASICVISUAL BASIC

PROGRAMA PARA CONTROL LPTPROGRAMA PARA CONTROL LPTPROGRAMA PARA CONTROL LPTPROGRAMA PARA CONTROL LPT

LEONARDO MEJIA R.

ING. EN MECATRONICAUNIVERSIDAD DE PAMPLONA

2007

Page 6: 62302158 Control de Puertos Paralelos Con Visual Basic

Curso BásicoVISUAL BASICVISUAL BASICVISUAL BASICVISUAL BASIC

PROGRAMA PARA CONTROL LPTPROGRAMA PARA CONTROL LPTPROGRAMA PARA CONTROL LPTPROGRAMA PARA CONTROL LPT

DECALRACION DE INSTRUCCIONES DECALRACION DE INSTRUCCIONES DECALRACION DE INSTRUCCIONES DECALRACION DE INSTRUCCIONES IO.DLLIO.DLLIO.DLLIO.DLL

LEONARDO MEJIA R.

ING. EN MECATRONICAUNIVERSIDAD DE PAMPLONA

2007

Page 7: 62302158 Control de Puertos Paralelos Con Visual Basic

Curso BásicoVISUAL BASICVISUAL BASICVISUAL BASICVISUAL BASIC

PROGRAMA PARA CONTROL LPTPROGRAMA PARA CONTROL LPTPROGRAMA PARA CONTROL LPTPROGRAMA PARA CONTROL LPT

LEONARDO MEJIA R.

ING. EN MECATRONICAUNIVERSIDAD DE PAMPLONA

2007

Page 8: 62302158 Control de Puertos Paralelos Con Visual Basic

Curso BásicoVISUAL BASICVISUAL BASICVISUAL BASICVISUAL BASIC

PUERTO SERIALPUERTO SERIALPUERTO SERIALPUERTO SERIAL

LEONARDO MEJIA R.

ING. EN MECATRONICAUNIVERSIDAD DE PAMPLONA

2007

Page 9: 62302158 Control de Puertos Paralelos Con Visual Basic

Curso BásicoVISUAL BASICVISUAL BASICVISUAL BASICVISUAL BASIC

PUERTO SERIALPUERTO SERIALPUERTO SERIALPUERTO SERIAL

LEONARDO MEJIA R.

ING. EN MECATRONICAUNIVERSIDAD DE PAMPLONA

2007

Page 10: 62302158 Control de Puertos Paralelos Con Visual Basic

Curso BásicoVISUAL BASICVISUAL BASICVISUAL BASICVISUAL BASIC

PUERTO SERIALPUERTO SERIALPUERTO SERIALPUERTO SERIAL

LEONARDO MEJIA R.

ING. EN MECATRONICAUNIVERSIDAD DE PAMPLONA

2007

Page 11: 62302158 Control de Puertos Paralelos Con Visual Basic

Curso BásicoVISUAL BASICVISUAL BASICVISUAL BASICVISUAL BASIC

PUERTO SERIALPUERTO SERIALPUERTO SERIALPUERTO SERIAL

LEONARDO MEJIA R.

ING. EN MECATRONICAUNIVERSIDAD DE PAMPLONA

2007

Page 12: 62302158 Control de Puertos Paralelos Con Visual Basic

Curso BásicoVISUAL BASICVISUAL BASICVISUAL BASICVISUAL BASIC

PUERTO SERIALPUERTO SERIALPUERTO SERIALPUERTO SERIAL

LEONARDO MEJIA R.

ING. EN MECATRONICAUNIVERSIDAD DE PAMPLONA

2007

Page 13: 62302158 Control de Puertos Paralelos Con Visual Basic

Curso BásicoVISUAL BASICVISUAL BASICVISUAL BASICVISUAL BASIC

PUERTO SERIALPUERTO SERIALPUERTO SERIALPUERTO SERIAL

LEONARDO MEJIA R.

ING. EN MECATRONICAUNIVERSIDAD DE PAMPLONA

2007

Page 14: 62302158 Control de Puertos Paralelos Con Visual Basic

Curso BásicoVISUAL BASICVISUAL BASICVISUAL BASICVISUAL BASIC

PUERTO SERIALPUERTO SERIALPUERTO SERIALPUERTO SERIAL

LEONARDO MEJIA R.

ING. EN MECATRONICAUNIVERSIDAD DE PAMPLONA

2007

Page 15: 62302158 Control de Puertos Paralelos Con Visual Basic

Control Por Puerto Paralelo Con Visual Basic

Antes que otra cosa, cabe aclarar que el objetivo de este articulo es implementar una interfaz en Visual Basic 6 para el manejo del puerto paralelo, ya que lidiar con el modo consola es engorroso, ademas de que en el curso de Aplicaciones De Adquisición De Datos que se imparte a los alumnos de la Ingeniería En Informática de la UPIICSA se enseña a programar el puerto paralelo con lenguaje C.

El lenguaje C fue diseñado para acceder al hardware de la computadora en forma directa, es por eso que cuenta con instrucciones para la comunicación con los puertos a muy bajo nivel, algo que no ocurre en el caso de Visual Basic, sin embargo existen varios mecanismos para poder controlar el puerto paralelo desde VB, uno de ellos podria ser el generar un ejecutable de C para cada operación especifica sobre el puerto, por ejemplo un ejecutable que encienda el bit 1 del paralelo, otro que lo apague, y así para cada bit del puerto, si bien esto no es lo más apropiado, podriamos facilmente invocar al ejecutable desde VB utilizando la sentencia “SHELL”, por ejemplo, Shell “enviar_un_1_al_bit_1.exe” y así para cada operación sobre los bits del puerto, esto tambien funciona para Macromedia Flash, ya que en ActionScript, tampoco existen sentencias para el control del puerto paralelo, sin embargo con la misma idea podriamos tener un impresionante desfile multimedia con la posibilidad de controlar el puerto paralelo.

Existe tambien la posibilidad de accesar al puerto paralelo por medio del DEBUG de Windows, sencillamente se crearia un archivo de procesamiento por lotes, y se invocaria desde VB.

Una de las formas más sencillas y más limpia de controlar el puerto paralelo es con una librería de enlace dinámico (DLL) escrita en lenguaje C en la que se implementen las funciones necesarias para la comunicación con el puerto paralelo, posteriormente se declararia dicha librería en VB, y entonces ya podriamos tener acceso desde VB a las funciones que controlen el puerto previamente escritas en C. Sin embargo existe aun una forma más sencilla y ordenada de controlar el puerto paralelo con VB, y es mediante un control ActiveX, que encapsule todas las declaraciones y funciones importadas y nos presente una forma más amigable de controlar el puerto, esto lo abordaremos al final, pues primero explicare como se importan las funciones de C a VB por medio de una DLL, la literatura necesaria para crear una DLL se encuentra más que difundida en internet, y en realidad nos tomaria otro articulo sobre programación de DLLs en C, así que no nos interesa profundizar en ello, porque en realidad ya existen muchas librerias listas para utilizarse en VB. En conjunto con este articulo se anexan varias librerias, que nos permitiran utilizar sus funciones desde VB de varias maneras. Sin embargo en este articulo unicamente describire las funciones de una de ellas, que es quizás la más elaborada, ya que no requerimos de enviar o recibir los datos de la función en numeración hexadecimal como sucede con otras.

Antes de continuar, es conveniente echar un vistazo al puerto paralelo. La siguiente figura muestra el diagrama de un puerto paralelo estándar, el dibujo muestra la salida del puerto tal y como se ve al estar viendo a la computadora desde atrás, como puedes ver, está específicamente diseñado para la impresora. Las flechas que salen del puerto son los comandos que se envían a ésta (salto de hoja, inicialización, selección, habilitación), y tiene una entrada para cada señal que la impresora puede mandar: error, impresora no seleccionada, impresora ocupada, sin papel, y "reconocimiento" (ACK). Esto nos da un total de doce bits de salida y cinco bits de entrada, así como 8 conexiones a tierra.

Tierras

Registro de estadoLineas de datos

INSTITUTO POLITÉCNICO NACIONALUNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS

INGENIERÍA EN INFORMÁTICA

Page 16: 62302158 Control de Puertos Paralelos Con Visual Basic

Para conocer la dirección del puerto paralelo de tu computadora ve a :Panel de control>Sistema>Hardware>Administradir de dispositivos>Puertos(COM & LPT1>Puerto de impresora>Recursos

Generalmente la dirección es 378 hexadecimal y 888 decimal, aunque puede variar de computadora a computadora, quizas sea 273 o 3BC.

INSTITUTO POLITÉCNICO NACIONALUNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS

INGENIERÍA EN INFORMÁTICA

Page 17: 62302158 Control de Puertos Paralelos Con Visual Basic

Ahora que ya conocemos el puerto paralelo podemos pasar a las instrucciones en lenguaje C para el control del puerto.

Para establecer el valor se utiliza outportb(Dirección, valor);Para leer el valor del puerto se utiliza inportb(Dirección);Estas funciones estan definidas en la librería dos.h

/* Ejemplo de E/S digital mediante el puerto paralelo, en mi computadora la dirección es 0x378 pero esto puede variar */

#include <stdio.h>/* Funciones de E/S directa por puertos */#include <dos.h>

void main ()

/* Aquí se guardará el valor de las lineas de estado */int byte;

/* Enciende el LED al activar la primera línea de datos (pin nº 2) */outportb(0x378, 1);

/* Bucle que lee un byte de las líneas de estado */ do byte = inportb(0x379); printf ("El valor leído es %i\n", byte);

/* Repite hasta que se pulsa una tecla */ while( !kbhit() );

/* Apaga el LED */outportb(0x378, 0);

En Win 2000, NT, y XP no se permite acceder al puerto paralelo, por lo cual se requiere de despreteger el puerto antes de probar este programa, esto se puede hacer con algunos programas como AllowIO que se pueden encontrar libremente en internet. Ahora es el momento de utilizar estas funciones de C en VB.

Ahora bien, nos evitamos todo el rollo para crear DLLs, lo que haremos sera utilizar las funciones de una de las librerias incluidas en esta descarga, la IO.DLL, hay otras, pero esta es la que más prestaciones tiene.

Lo que haremos sera declarar la librería en un modulo de VB, y despues ya podremos utilizarla en algun formulario, siempre hay que tratar de meter todo el código dentro de un modulo, ya que un programa con el codigo directamente en el formulario es mucho más lento que un programa con el codigo en uno o varios modulos, sobre todo cuando se trata de vectores, matrices y gráficos.

Aquí menciono la descripción de cada una de las funciones de esta librería, aunque en realidad no no será necesario utilizar todas.

PortOut Envia un byte por el puerto indicadoPortWordOut Envia una palabra de 16 bits al puerto indicadoPortDWordOut Envia una palabra de 32 bits al puerto indicadoPortIn Lee un byte del puerto indicadoPortWordIn Lee una palabra de 16 bits del puerto indicadoPortDWordIn Lee una palabra de 32 bits del puerto indicadoSetPortBit Envia un 1 lógico por el bit del puerto indicadoClrPortBit Envia un 0 lógico por el bit del puerto indicadoNotPortBit Invierte el estado del bit del puerto indicadoGetPortBit Regresa el estado del bit del puerto indicadoIsDriverInstalled Regresa un 0 si la librería IO.DLL esta instalada y funcionando.

INSTITUTO POLITÉCNICO NACIONALUNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS

INGENIERÍA EN INFORMÁTICA

Page 18: 62302158 Control de Puertos Paralelos Con Visual Basic

Aquí muestro como se declaran estas funciones para ser accesibles desde VB:Option ExplicitPublic Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)Public Declare Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Integer)Public Declare Sub PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Long)Public Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As BytePublic Declare Function PortDWordIn Lib "IO.DLL" (ByVal Port As Integer) As LongPublic Declare Sub SetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)Public Declare Sub ClrPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)Public Declare Sub NotPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)Public Declare Function GetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) As BooleanPublic Declare Function IsDriverInstalled Lib "IO.DLL" () As Boolean

' La siguientes 2 variables pueden tomar cualquier nombre, no son parte de la DLL.Public Dir_Lectura As Integer ' En esta variable se almacena la dirección de lectura del puertoPublic Dir_Escritura As Integer ' En esta varibale se almacena la direccion de escritura del puerto

Esto debe ir en un modulo, el nombre del modulo no importa, ya que pudes mandar a llamar las funciones directamente por su nombre, sin embargo la primera vez sería conveniente que las mandaras a llamar haciendo referencia al modulo de esta forma “Module1.” asi VB te mostrará todas las funciones de esta librería, además de los parametros que requiere.

Hasta aquí de esta DLL, para entender como funciona por completo solo hace falta ver el ejemplo que se anexa junto con la DLL, pero con esto ya no tendran problemas, solo recuerden tener la IO.DLL en el mismo directorio donde esta el ejecutable de VB.

Comentaba que la forma más sencilla de controlar el puerto paralelo es con un control ActiveX, un control ActiveX es un pedazo de software reutilizable, algo así como una version primitiva de una clase, ya que se puede instanciar y utilizar sus propiedades y métodos en un formulario e incluso en paginas web. Para que quede más claro un ejemplo de un control ActiveX es el TEXTBOX, o un LABEL, un PICTUREBOX de VB. Es decir, son componentes que podemos agregar a un formulario y ya podremos utilizarlos sin preocuparnos de todo el código que hay adentro del control. En realidad estoy seguro de que el control por puerto paralelo es un medio y no un fin, creo que les seria util un control ActiveX que nos permitiera enviar datos por el puerto y realizar lecturas de los bits de estado incluso a una velocidad de 50 milisegundos por lectura, esto me parece más sencillo, porque es un control que podemos insertar en cualquier formulario, no importando de que proyecto se trate, no hace falta hacer declaraciones de funciones, unicamente lo insertamos y comenzamos a utilizarlo, aunque obviamente si se requiere de la DLL instalada en el equipo.

Me di a la tarea de construir un ActiveX para el control del puerto paralelo, y me parece que logre simplificar la tarea, veamos un ejemplo.

Si aun no lo has hecho, bajate el archivo SWF (zip) que acompaña a esta descarga, en el encontraras una carpeta llamada ActiveX, entra y verás un archivo llamado PuertoParalelo.ocx, y un archivo llamado UPIICSA_VB.DLL, el OCX es nuestro control del puerto paralelo y la DLL es la librería con funciones en C, copia la DLL a la raiz de tu unidad C, la ruta del archivo debe ser “C:\UPIICSA_VB.dll”.

Copia el archivo PuertoParalelo.OCX a tu directorio de sistema, generalmente System32. Ahora ya puedes utilizar el control del paralelo desde cualquier proyecto de visual basic, esto de copiar los archivos obviamente solo es necesario hacerse una vez por máquina.

INSTITUTO POLITÉCNICO NACIONALUNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS

INGENIERÍA EN INFORMÁTICA

Page 19: 62302158 Control de Puertos Paralelos Con Visual Basic

Abrimos el Visual Basic y escogemos un EXE estandar.

Cuando ya se muestre el formulario entonces vamos al menu PROYECTOy escogemos la opción COMPONENTES, se nos mostrara un dialogo, da clic en el boton EXAMINAR y busca el archivo PuertoParalelo.ocx, si mehas hecho caso debe estar en tu directorio de sistema, localizalo, abreloy acepta, ahora el control UPIICSAPP se encuentra al final de tu barrade controles.

INSTITUTO POLITÉCNICO NACIONALUNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS

INGENIERÍA EN INFORMÁTICA

Page 20: 62302158 Control de Puertos Paralelos Con Visual Basic

Agrega al formulario un par de botones, un label y un UPIICSAPP, no importa donde los coloques, esto solo es una demostración.

El Boton 1 (command1) es el que manipulara el bit 2 del paralelo, el boton2 (command2) lo que hara es realizar una lectura del bit 2 del registro de estado.

Por ahora copia el siguiente texto, es lo que hace funcionar nuestro control, como veras es muy sencillo.

Option Explicit

'Cuando presionamos el boton se envia un 1 al bit 2 del puerto paraleloPrivate Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)UPIICSAPP1.Encender_Bit (2)End Sub

'Cuando liberamos el boton se envia un 0 al bit 2 del puerto paraleloPrivate Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)UPIICSAPP1.Apagar_Bit (2)End Sub

' Cuando hacemos clic sobre el boton 2 se hace una lectura y se muestra en el label el valor del bit 1 del registro de estado Private Sub Command2_Click()UPIICSAPP1.Realizar_lecturaLabel1.Caption = UPIICSAPP1.Leer_Estado_Bit1End Sub

' Cuando se carga el formulario se establece que la dirección de nuestro puerto paralelo es la 378Private Sub Form_Load()UPIICSAPP1.Establecer_Dirección_0x378End Sub

Debes conectar un led al puerto al que vayas a enviar el 1 lógico para poder ver que realmente funciona, o de lo contrario usa un multimetro. Si no pasa nada quizas en tu máquina la dirección sea otra, no te preocupes ya me he encargado de eso, solo debes cambiar esta instrucción :

UPIICSAPP1.Establecer_Dirección_0x378

por alguna de estas dos :

UPIICSAPP1.Establecer_Dirección_0x278UPIICSAPP1.Establecer_Dirección_0x3BC

Para ver todas la funciones que trae el control recuerda el punto, osea “UPIICSAPP1.” y VB te mostrara todo lo que te ofrece este control, por supuesto si detestas la UPIICSA o a tu servidor, puedes poner la propiedad “visible” del control a “false”. Sientete libre de usar este control y redistribuirlo, ojalá que te haya servido, si tienes alguna duda o comentario este es mi mail [email protected]

Nuestro control de puertoparalelo

INSTITUTO POLITÉCNICO NACIONALUNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS

INGENIERÍA EN INFORMÁTICA

Page 21: 62302158 Control de Puertos Paralelos Con Visual Basic

Indiciándose en la Programación y simulación con el Puerto Paralelo

Yoel Ocmín FIE-UNMSM –Lima-Perú http://Yoelocmin.tk http://proyectosfie.tk [email protected]

1

Comenzando con el Puerto Paralelo Uso, Aplicación y Simulación

Descripción: Bueno, este es el primer tutorial que escribo de cómo usar el Puerto Paralelo. En casi todas las Pc’s que conozco hay un solo puerto y tiene como Registro Base 378H (Así q por ahora lo tomaré como un Standard). Para poder acceder al Puerto, se usaría fácilmente en C o en Asm Inxx(Port) y Outxx(Port,Dato). Pero actualmente los sistemas operativos son mezquinos así q para poder acceder a ellos debemos hacerlo mediante Drivers. (ver Aquí) Pero para no preocuparnos por eso. Yo voy a usar la DLL InpOut32.Dll que mediante 2 rutinas Inp32 y Out32, Resuelve el problema. Además aquí voy a usar 3 tipos de codificación: Assembler, C++ y Visual Basic. TERMINOLOGIA: A lo largo de este tutorial, voy a ser uso de ciertos términos que considero que seria muy bueno que se conocieran antes. Bit ‘1’ : Significa que la salida de esta puerta es 5V. Bit ‘0’ : Significa que la salida es 0v. Bit ‘X’ : Significa que no importa el valor de este bit, puede ser ‘1’ o ‘0’ Bit ‘~X’ : Significa que este dato es negado. Registro: Arreglos de 8 Bits, que sirven para la configuración del Puerto Paralelo

Un Poco de Teoría. Algo de Logica: And, Or, Xor: Para comenzar, Estas operaciones son muy importantes, ya que nos permiten el manejo del Puerto, cambiar Bits, invertirlos, enmascaralos. Como se vera a continuación: And: Dato = Op1 And Op2 = Op1 & Op2 En pocas palabras, si Op2=’1’, no importa como sea Op1=’X’, la respuesta seria Dato=’X’ ; Ahora si Op2=’0’ el dato=’0’ Es decir que si tenemos un Byte=(D7) (D6) (D5) (D4) (D3) (D2) (D1) (D0). Y queremos quedarnos con el dato D7, D5, y D4. y que el resto sea ‘0’. Lo que tendríamos que hacer es:

Result=Byte And 10110000b;// Result = Byte & B0; Y nos quedaria:

Byte = D7 D6 D5 D4 D3 D2 D1 D0 Operador 1 0 1 1 0 0 0 0 & = And

Result = D7 0 D5 D4 0 0 0 0 //Muy interesante Es decir que nos sirve para colocar los bits que deseamos a ‘0’

Page 22: 62302158 Control de Puertos Paralelos Con Visual Basic

Indiciándose en la Programación y simulación con el Puerto Paralelo

Yoel Ocmín FIE-UNMSM –Lima-Perú http://Yoelocmin.tk http://proyectosfie.tk [email protected]

2

Or: Dato = Op1 Or Op2 = Op1 | Op2 En pocas palabras, si Op2=’1’ , no importa como sea Op1=’X’, la respuesta seria Dato=’1’ ; Ahora si Op2=’0’ el dato=’X’ Es decir que si tenemos un Byte=(D7) (D6) (D5) (D4) (D3) (D2) (D1) (D0). Y queremos que D7,D6, D4,D2 sean ‘1’ y el resto quede igual tendríamos que hacer:

Result=Byte or 11010100b;// Result= Byte | 0xD4 Y nos quedaría:

Byte = D7 D6 D5 D4 D3 D2 D1 D0 Operador 1 1 0 1 0 1 0 0 | = or

Result = 1 1 D5 1 D3 1 D1 D0 //Muy interesante Es decir, que mediante una Or podemos obligar a que la respuesta sea ‘1’. Xor: Dato = Op1 Xor Op2 = Op1 ^ Op2 En pocas palabras, si Op2=’1’ , no importa como sea Op1=’X’, la respuesta seria Dato=’~X’ ; Ahora si Op2=’0’ el dato=’X’. Es decir que invierte el Bit donde encuentra Op=’1’ Es decir que si tenemos un Byte=(D7) (D6) (D5) (D4) (D3) (D2) (D1) (D0). Y queremos invertir D7, D5, y D4. lo que tendríamos que hacer es:

Result = Byte Xor 10110000b;// Result = Byte ^ B0 Y nos quedaria:

Byte = D7 D6 D5 D4 D3 D2 D1 D0 Operador 1 0 1 1 0 0 0 0 ^ =Xor

Result = ~D7 D6 ~D5 ~D4 D3 D2 D1 D0 //Muy interesante Es decir, nos permite invertir el Bit donde esta con ‘1’ Bueno, Espero que este claro lo de las operaciones lógicas. Si no revisen su libro de principios de sistemas digitales. :D ;) Aprendiendo como funciona mi Puerto Paralelo: Aquí, no voy a redundar en los pines, es decir, no voy a detallar cuales son y su numeración, por que de eso ya hay bastante en la Web, y ya he puerto información en la sección Puertos de mi web. Bueno, para manejar el puerto paralelo, hay q saber acerca de sus registros. Que Son 3 Base, Estado y Control. La dirección de la mayoría de Pc’s q conozco, esta en 378h. Aunque puede variar dependiendo del SO q uses. Yo lo voy ha usar como un Estándar para este tutorial.

Page 23: 62302158 Control de Puertos Paralelos Con Visual Basic

Indiciándose en la Programación y simulación con el Puerto Paralelo

Yoel Ocmín FIE-UNMSM –Lima-Perú http://Yoelocmin.tk http://proyectosfie.tk [email protected]

3

Descripción de Registros: Registro de Datos. (Su dirección es 378h = Dirección Base).

D7 D6 D5 D4 D3 D2 D1 D0 Este registro es de 8 bits. Es por aquí q enviamos la información hacia el exterior. Ejm Activamos un Led, un Relé, Motores DC, Motores a pasos. Una Alarma. Lo q nos imaginemos. O también recibimos datos. Ejm: Señal de un ADC para digitalizar una señal externa. Por defecto, solo funciona como Salidas, pero es posible Hacerla funcionar como entrada. Para esto hay q modificar en Bit 5 del Registro de Control. Esto se explica mas abajo con mucho mas cuidado Dependiendo del lenguaje de programación q uses, la sintaxis es : Outxxx (378h,Dato). Ejemplo en C++ Usando la Librería InpOut32.dll #include "stdafx.h" #include "Iostream.h" //Definimos los prototipos de nuestras funciones //Recuerdese q se debe agregar a la etapa de Link, el archivo InpOut32.lib short _stdcall Inp32(short PortAddress); void _stdcall Out32(short PortAddress, short data); void main(void) short data; data=Inp32(0x378); cout<<"El Registro Estado es: "<<data<<"\n"; return; Ejemplo en Assembler – Para DOS .model small .code mov al,11111111b; Mandamos q todas las salidas sean ‘1’ mov dx,378h in dx,al mov ah,4ch int 21h end Registro de Estado (Su dirección es 379h) (Dirección Base +1).

~S7 S6 S5 S4 S3 X X X

Este registro es de solo Entradas, pero solo es de 5 Bits. Donde: ~S7 :Significa que este dato esta invertido. X :Significa que su valor es indeterminado.

Page 24: 62302158 Control de Puertos Paralelos Con Visual Basic

Indiciándose en la Programación y simulación con el Puerto Paralelo

Yoel Ocmín FIE-UNMSM –Lima-Perú http://Yoelocmin.tk http://proyectosfie.tk [email protected]

4

Para obtener el Valor Real de Este registro, tenemos que enmascarlo, Haciendo un Xor con 128 o su equivalente 80h ó 0x80 para C o &H80 en Basic o en binario 10000000b , donde se observa q el bit a cambiar debe ser el 8vo. Y luego un And por 248=0xF80=11111000b (En este ultimo se observa que los valores con los que te debes quedar son los 5 ultimos). Este Registro lo podemos usar por ejemplo para ver la entrada de sensores. Donde para obtener el valor Real su Sintaxis seria:

Estado = Inxxx(379H) Xor 0x80 And 0xF8. En C: Estado = (Inp32(0x379) ^ 0x80) & 0xF8 Ejemplo en C para obtener: Valor Real del Registro de Datos #include "stdafx.h" #include "Iostream.h" //observar que se debe agregar al Link el archivo InpOut32.lib short _stdcall Inp32(short PortAddress); void _stdcall Out32(short PortAddress, short data); void main(void) short estado; estado=Inp32(0x379); //Este codigo es el Equivalente en Asm para // Estado = (Inp32(0x379) ^ 0x80) & 0xF8 _asm xor estado,10000000b _asm and estado,0xF8 cout<<"El Registro Estado es: "<<estado<<"\n"; return; Registro de Control. (37Ah) (Dirección Base +2)

Este registro, es bidireccional. Sus datos son X X X X ~C3 C2 C1 C0

Ahora para invertir las señales C3, C1 y C0 Tenemos que hacerle un xor con 00001011b y para quedarnos con el dato valido, le hacemos un And con 0xF=00001111b Ejm: control = (Outxx(37AH) Xor 1011b ) And 0xF. En C: control = (Out32(37AH) ^0x0B ) & 0xF.

Este Registro es muy importante, ya nos permite colocar al puerto paralelo en modo Bidireccional. Es decir se puede tambien recibir datos por el Registro de Datos. Por ahora siempre lo mandare a 0, es decir q sea Salida. Pero si quisiera hacerlo entrada, tendría q colocar el Bit5 equivalente a C5 en ‘1’. La Sintaxis para hacerlo Bidireccional es:

Int Caso=1 o 0 ;Según quiera 1=Input, 0=Output control= Outxx(0x37A,((caso <<5) or (Inxxx(0x37A) And 11011111)

En C: control =Out32(0x37A,((caso<<5) | (Inp32(0x37A) & 0xDF Con caso<<5, significa rotamos 5 veces a la Izq a caso .

Page 25: 62302158 Control de Puertos Paralelos Con Visual Basic

Indiciándose en la Programación y simulación con el Puerto Paralelo

Yoel Ocmín FIE-UNMSM –Lima-Perú http://Yoelocmin.tk http://proyectosfie.tk [email protected]

5

//Ejemplo en C para Obtener el Valor, que tiene el Registro de Control. #include "stdafx.h" #include "Iostream.h" //observar que se debe agregar al Link el archivo InpOut32.lib short _stdcall Inp32(short PortAddress); void _stdcall Out32(short PortAddress, short data); void main(void) short control; control=Inp32(0x37A); //El codigo que viene es Equivalente // control = (Out32(37AH) ^0x0B ) & 0xF _asm xor control,1011b _asm and control,0xF //Para Quedarnos con los 4 Primeros Bits cout<<"El Registro Control es: "<<control<<"\n"; return; Prueba del Puerto de cómo hacerlo Bidireccional, este programa te mostrara como queda el control si lo pones en modo Bidireccional. No hace el cambio por obvios motivos. Pero si lo quieres probar, al final coloca Out32(0x37A,control); Y ya estara en modo Bidireccional: // bidire.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "Iostream.h" //observar que se debe agregar al Link el archivo InpOut32.lib short _stdcall Inp32(short PortAddress); void _stdcall Out32(short PortAddress, short data); void main(void) short caso,control; caso=1;//Suponiendo q lo quiero hacer Bidireccional // Dato= Outxx(0x37A,((caso <<5) or (Inxxx(0x37A) And 11011111) control=Inp32(0x37A); cout<<"Tenemos en Control: "<<control<<"\n"; _asm and control,11011111b _asm rol caso,5 //caso=caso>>5; //Roto caso 5 bits _asm mov ax,caso //control =control or caso _asm or control,ax cout<<"Lo que enviariamos seria: "<<control<<"\n"; return; Mas información de esto lo puedes encontrar en mi web, o puedes escribirme a mi e-Mail : [email protected] http://proyectosfie.tk

Page 26: 62302158 Control de Puertos Paralelos Con Visual Basic

Indiciándose en la Programación y simulación con el Puerto Paralelo

Yoel Ocmín FIE-UNMSM –Lima-Perú http://Yoelocmin.tk http://proyectosfie.tk [email protected]

6

Haciendo lo que vinimos: Para comenzar, he hecho un pequeño programa. En visual Basic. Pero como!!! Bueno, Sabemos que Visual Basic no permite manejar el Puerto Paralelo, pero nuestra DLL Sí, ES por eso que lo adjuntaremos, mediante un archivo obj: InpOut32.bas 'Declaramos las Variables de la Dll 'Aquí declaramos como función a Inp32 'Ya q lo que hace es devolvernos el valor q indica la dirección que se le Asigne. Public Declare Function Leer Lib "Inpout32.dll" _ Alias "Inp32" (ByVal PortAddress As Integer) As Byte 'Aquí declaramos como una Subrutina a Out32 'Ya que no devuelve ningun valor. Public Declare Sub Escribir Lib "Inpout32.dll" _ Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Byte) 'Aquí estoy declarando esta Api de Windows, para usarlo en los retardos. Public Declare Sub Sleep Lib "Kernel32.dll" (ByVal PortAddress As Integer) Nuestro Programita tiene la Forma:

Las caracteristicas basicas de los controles son: Control Nombre Caption Form FrmLeds Prendiendo Leds

Button CmdD0 D&0 Button CmdD1 D&1 Button CmdD2 D&2 Button CmdD3 D&3 Button CmdD4 D&4 Button CmdD5 D&5 Button CmdD6 D&6 Button CmdD7 D&7 Button CmdEfe1 &Derecha Button CmdEfe1 &Izquierda Button CmdAbout &About

Page 27: 62302158 Control de Puertos Paralelos Con Visual Basic

Indiciándose en la Programación y simulación con el Puerto Paralelo

Yoel Ocmín FIE-UNMSM –Lima-Perú http://Yoelocmin.tk http://proyectosfie.tk [email protected]

7

Donde su Código Correspondiente es: Form1.frm 'Declaramos las variables generales Dim Dato As Byte 'Dato es usado por todos las Subrutinas Private Sub CmdAbout_Click() 'Muestro Mensaje en Pantalla: el vbCrLf es equivalente a ENTER MsgBox "Prendiendo Leds " + vbCrLf + vbCrLf + " por:" + vbCrLf + " Yoel Ocmin " + vbCrLf + vbCrLf + "[email protected]" + vbCrLf + "http://proyectosfie.tk", vbQuestion, "Acerca..." End Sub Private Sub CmdD0_Click() Dato = Leer(&H378) Xor &H1 'Cambio el Bit 1=Lsb=D0 Envia End Sub Private Sub CmdD1_Click() Dato = Leer(&H378) Xor &H2 'Cambio el Bit 2 Envia End Sub Private Sub CmdD2_Click() Dato = Leer(&H378) Xor &H4 'Cambio el Bit 3 Envia End Sub Private Sub CmdD3_Click() Dato = Leer(&H378) Xor &H8 'Cambio el Bit 4 Envia End Sub Private Sub CmdD4_Click() Dato = Leer(&H378) Xor &H10 'Cambio el Bit 5 Envia End Sub Private Sub CmdD5_Click() Dato = Leer(&H378) Xor &H20 'Cambio el Bit 6 Envia End Sub Private Sub CmdD6_Click() Dato = Leer(&H378) Xor &H40 'Cambio el Bit 7 Envia End Sub Private Sub CmdD7_Click() Dato = Leer(&H378) Xor &H80 'Cambio el Bit 8 =MsB=D7 Envia End Sub Private Sub CmdEfe1_Click() 'Efecto '1': 'Rotamos un Bit del LSB -> MSB 'VB, no tiene la funcion rotar Bit, haci que lo q 'Colocar en Dato=00000001 y multiplicarlo por 2

Page 28: 62302158 Control de Puertos Paralelos Con Visual Basic

Indiciándose en la Programación y simulación con el Puerto Paralelo

Yoel Ocmín FIE-UNMSM –Lima-Perú http://Yoelocmin.tk http://proyectosfie.tk [email protected]

8

' Dato=00000010 ->Roto un Bit 'Si lo multiplico nuevamente. ' Dato=00000100 ->Roto un Bit 'Y asi sucesivamente hasta q llega al Octavo Bit. Dato = 1 While Dato < &H80 Envia Sleep 250 'Ocaciono un retardo de 250 milisegundos Dato = Dato * 2 Wend Envia ' como no se envio el ultimo bit se lo envia recien Sleep 250 ' Dato = 0 'Reseteamos el Puerto. Envia Sleep 250 End Sub Private Sub CmdEfe2_Click() 'Efecto '2': 'Rotamos un Bit del MSB -> LSB 'VB, no tiene la funcion rotar Bit, haci que lo q 'Colocar en Dato=10000000 y Dividimos por 2 ' Dato=01000000 ->Roto un Bit 'Si lo multiplico nuevamente. ' Dato=00100000 ->Roto un Bit 'Y asi sucesivamente hasta q llega al Primer Bit. Dato = &H80 While Dato > &H1 Envia Sleep 250 Dato = Dato / 2 Wend Envia Dato = 0 Sleep 250 Envia Sleep 250 End Sub Private Sub Form_Load() 'Al iniciar a cargar el Form, reiniciamos el Puerto Escribir &H378, 0 End Sub Private Sub Envia() 'Solo envia el Dato al Pueto Paralelo Escribir &H378, Dato End Sub Bueno Eso es Todo con Respecto a Visual Basic.

Page 29: 62302158 Control de Puertos Paralelos Con Visual Basic

Indiciándose en la Programación y simulación con el Puerto Paralelo

Yoel Ocmín FIE-UNMSM –Lima-Perú http://Yoelocmin.tk http://proyectosfie.tk [email protected]

9

Simulación: Bueno ahora, vamos a Hacer un Circuito y simular el programa. Como!!! Bueno, uno puede simular el programa hecho en Visual Basic, con otro programa. Yo voy a usar el Proteus Lite – Isis. Para ello voy a necesitar la librería y modelo Respectivo. Se llaman Modelo : Port.dll y Library: Lpt02.lib Se supone que debe estar junto a este archivo, en al versión comprimida, pero si no es así bajatela de la seccion Proteus de mi pagina web. http://proyectosfie.tk OJO: Esa Librería y Modelo son de mi cosecha. Otra cosa. El Esquemático que acompaña el archivo fue hecho con la versión 6.3 sp1, que la puedes descargar del enlace q’ indica mi Web en la sección Proteus Si te bajas esa versión no te olvides colocarle los 2 parches respectivos para su buen funcionamiento. Por Ahora, creo que con poner el Esquema es Suficiente, para la simulación usa las Librerías: ACTIVE: LED-YELLOW :Led amarillo ACTIVE: RES :Resistencia de 330 LPT02:LPT02 :Puerto Paralelo Virtual Ahora, no es necesario que explique el circuito, porque creo q con el esquema es mas que suficiente.

Page 30: 62302158 Control de Puertos Paralelos Con Visual Basic

Indiciándose en la Programación y simulación con el Puerto Paralelo

Yoel Ocmín FIE-UNMSM –Lima-Perú http://Yoelocmin.tk http://proyectosfie.tk [email protected]

10

Ahora dale a simular y Ejecuta el programa de prueba: Y Ya Esta:

Page 31: 62302158 Control de Puertos Paralelos Con Visual Basic

Facultad de Ingeniería - Universidad Rafael Landívar Boletín Electrónico No. 06

URL_06_MEC02.doc 1 de 9

CONTROL DEL PUERTO PARALELO: CONTROL EN APLICACIONES DE ELECTRÓNICA - PARTE 1

Por Ing. José Luís Ola García, [email protected]

RESUMEN En la actualidad, muchos circuitos robóticos usan el PC como medio sencillo y flexible para programarlos de manera rápida y segura o como control y procesamiento del sistema, evitando circuitos complementaria y de todos aquellos otros, que por su complejidad en instalación y control, es necesario buscar formas más fáciles y sencillas de controlar y operar. DESCRIPTORES Transmisión paralelo. Transmisión en serie. Puerto paralelo. Bits de datos. Strobe. Conector hembra. Conector macho. Handshaking. Protección de puerto paralelo. Conector DB25. Modo Nibble. Debug. LPT1. ABSTRACT Actually, most of robotic circuits use PC to programming them in a simple, safe and flexible way. Also used like control and processing systems, this avoids extra complementary circuits. It reduces installations’ complexity and provides required controls in easy way to operate. KEYWORDS Parallel transmission. Serial transmission. Parallel port. Data bits. Strobe. Female connector. Male connector. Programming. Handshaking. Parallel port protection. DB25 connector. Nibble mode. Debug. LPT1. .

Page 32: 62302158 Control de Puertos Paralelos Con Visual Basic

Facultad de Ingeniería - Universidad Rafael Landívar Boletín Electrónico No. 06

URL_06_MEC02.doc 2 de 9

CONTROL DEL PUERTO PARALELO: CONTROL EN APLICACIONES DE ELECTRÓNICA. Parte 1 INTRODUCCIÓN El presente articulo presenta temas necesarios para quien este interesado en conocer mas sobre la computadora o para proyectos de electrónica desde una PC y a la vez pueda trabajar fácilmente, sin tener que pensar demasiado, por ejemplo, como controlar y enviar datos o recibir datos, controlar dispositivos electrónicos, mecanismos, y/o proyectos de universidad como brazo mecánicos, prototipo de carritos todo terreno y control de dispositivos en general hasta proyectos que el profesor deja desarrollar a los alumnos, en este documento no se pretende ser exhaustivo tendrá que investigar un poco mas pero las bases necesarias están puestas. PUERTO PARALELO: ¡PRECAUCIONES! Si desea conectar dispositivos al puerto paralelo de su PC, tome en cuenta que esto implica el riesgo de daños permanentes a la tarjeta madre y debe tener presente que aún los profesionales cometen errores, por lo tanto no está de más recomendarle extremo cuidado al trabajar en el puerto paralelo. Se recomiendan conocimientos básicos en electrónica y programación para manipular el puerto paralelo. Este artículo tiene carácter informativo sobre como trabaja el puerto paralelo, no asumo ninguna responsabilidad por el mal uso o errores que usted pueda cometer en su instalación, diseño y puesta en marcha de este articulo. Debo mencionar que me ha funcionado la modalidad empleada en el documento empleando mi PC personal. Los puertos de comunicación de la PC son de particular interés para el estudioso de la electrónica y aquellos aventureros que les guste experimentar con nuevos conocimientos, la razón es que el puerto paralelo de una PC normal suele ser utilizado para controlar todo tipo circuitos electrónicos, principalmente, en actividades de automatización de procesos, para obtener datos o enviar datos desde o hacia el puerto, para tareas repetitivas y otras actividades que demandan precisión. Éste artículo es el primero que presento para todos aquellos estudiantes de las carreras de Ingeniería en Sistemas o Ingeniería en electrónica o Ingeniería en Electricidad que mucho de esto han de necesitar para sus mas grandes retos, sus proyectos de fin de curso.

No queda ahí el estudio del puerto paralelo sino también podemos utilizarlo para comunicarnos entre dos PC. PRINCIPIOS Conceptos básicos Existen dos métodos básicos para transmisión de datos en las computadoras modernas. Transmisión de datos en serie y transmisión de datos en paralelo, el primero es un

Page 33: 62302158 Control de Puertos Paralelos Con Visual Basic

Facultad de Ingeniería - Universidad Rafael Landívar Boletín Electrónico No. 06

URL_06_MEC02.doc 3 de 9

dispositivo capaz de enviar datos a otro dispositivo a razón de un bit a la vez a través de un solo cable. Por otro lado, en un paralelo un dispositivo envía datos a otro dispositivo a una tasa de n número de bits a través de n número de cables al un mismo tiempo.

Figura 1. TRANSMISIÓN EN PARALELO

Figura 2. TRANSMISIÓN EN SERIE

Sería fácil pensar que un sistema en paralelo es n veces más rápido que un sistema en serie, pero, básicamente hay un impedimento principal que puede presentar un poco desventaja, el tipo de cable que se utiliza para interconectar los equipos. Un sistema de comunicación en paralelo utiliza para transmitir datos ocho líneas de datos para transmitir un byte a la vez, los datos que puede manejar con su puerto paralelo son 8 como máximo y de su habilidad en la electrónica dependerá que pueda manipular dispositivos que necesiten mas de 8 datos de entrada, pero aquí solo nos limitamos a la transmisión de 8 datos. Hay excepciones como el estándar SCSI1 que nos permite la transferencia de datos en esquemas que van desde los ocho bits y hasta los treinta y dos bits en paralelo. En éste artículo nos concentraremos en transferencias de ocho bits ya que ésta es la configuración del puerto paralelo de una PC. Un típico sistema de comunicación en paralelo puede ser unidireccional) o de dos direcciones llamado bidireccional. El más simple mecanismo utilizado en un puerto paralelo de una PC es de tipo unidireccional y es el que analizaremos en primer lugar. Distinguimos dos elementos: la parte transmisora y la parte receptora, como puede ver en la figura 1 y 2 (como T/R) La parte transmisora coloca la información en las líneas de datos e informa a la parte receptora que la información (los datos) está disponible; entonces la parte receptora lee la información en las líneas de datos e informa a la parte transmisora que ha tomado la información (los datos). (Revise nuevamente estas líneas) Aquí en la transmisión ambas partes sincronizan su respectivo acceso a las líneas de datos, el receptor no podrá leer las líneas de datos hasta que la parte transmisora no se lo permita o indique y de la misma forma la parte transmisora no colocará nueva información en las líneas de datos hasta que la parte receptora quite la información y le indique a la parte

Page 34: 62302158 Control de Puertos Paralelos Con Visual Basic

Facultad de Ingeniería - Universidad Rafael Landívar Boletín Electrónico No. 06

URL_06_MEC02.doc 4 de 9

transmisora que ya ha tomado los datos y enviado a otro punto, a ésta coordinación de operaciones se le llama acuerdo ó entendimiento. La coordinación de operaciones entre la parte transmisora y la parte receptora se le llama handshaking, que en español es el acto con el cual dos partes manifiestan estar de acuerdo, es decir, se dan un apretón de manos. El handshaking Para implementar el handshaking se requieren dos líneas adicionales. La línea de strobe es la que utiliza la parte transmisora para indicarle a la parte receptora la disponibilidad de información. La línea de admisión (acknowledge) es la que utiliza la parte receptora para indicarle a la parte transmisora que ha tomado la información (los datos) y que está lista para recibir más datos. El puerto paralelo provee de una tercera línea llamada busy (ocupado), ésta la puede utilizar la parte receptora para indicarle a la parte transmisora que está ocupada y por lo tanto la parte transmisora no debe intentar colocar nueva información en las líneas de datos. Una típica sesión de transmisión de datos se parece a lo siguiente:

Parte transmisora: 1. La parte transmisora checa la línea busy para ver si la parte receptora está ocupada.

Si la línea busy está activa, la parte transmisora espera en un bucle hasta que la línea busy esté inactiva.

2. La parte transmisora coloca la información en las líneas de datos. 3. La parte transmisora activa la línea de strobe. 4. La parte transmisora espera en un bucle hasta que la línea acknowledge está activa. 5. La parte transmisora inactiva la línea de strobe. 6. La parte transmisora espera en un bucle hasta que la línea acknowledge esté

inactiva. 7. La parte transmisora repite los pasos anteriores por cada byte a ser transmitido.

Parte receptora: 1. La parte receptora inactiva la línea busy (asumiendo que está lista para recibir

información). 2. La parte receptora espera en un bucle hasta que la línea strobe esté activa. 3. La parte receptora lee la información de las líneas de datos (y si es necesario,

procesa los datos). 4. La parte receptora activa la línea acknowledge. 5. La parte receptora espera en un bucle hasta que esté inactiva la línea de strobe. 6. La parte receptora inactiva la línea acknowledge. 7. La parte receptora repite los pasos anteriores por cada byte que debe recibir.

Tanto la parte transmisora como la receptora coordinan sus acciones de tal manera que la parte transmisora no intentará colocar varios bytes en las líneas de datos, en tanto que la

Page 35: 62302158 Control de Puertos Paralelos Con Visual Basic

Facultad de Ingeniería - Universidad Rafael Landívar Boletín Electrónico No. 06

URL_06_MEC02.doc 5 de 9

parte receptora no debe leer más datos que los que le envíe la parte transmisora, un byte a la vez. El hardware del puerto paralelo El puerto paralelo de una típica PC utiliza un conector hembra de tipo DB de 25 patitas (DB-25), el caso más común, sin embargo el estándar IEEE 1284 va más allá de describir nuevos modos de transferencia de datos, y de hecho define la interfase mecánica y las propiedades eléctricas de un puerto paralelo compatible. Muchos de los problemas asociados con los dispositivos conectados al puerto paralelo surgen del hecho de que no existe un estándar para la interfase eléctrica para el puerto paralelo. El conector hembra DB25 tipo A se ha vuelto el estándar para la PC o el conector anfitrión, el comité IEEE 1284 sintió que era prioritario definir estas propiedades y tener 3 conectores estándar (el primero es DB25 tipo A) según la aplicación y cumplir con los siguientes objetivos:

1. Asegurar la compatibilidad eléctrica entre todos los dispositivos compatibles con IEEE 1284.

2. Asegurar que las interfases IEEE 1284 operarían con los periféricos, adaptadores y puertos existentes. Asegurar la operación y la integridad de los datos a las radios de transferencia más altos.

3. Extender la operación a 30 pies, o 10 metros. El IEEE 1284 Tipo A tiene el patillaje de la siguiente forma

Figura 3. CONECTOR IEEE 1284 TIPO A

La siguiente tabla describe la función de cada patita del conector 1284 tipo A:

Page 36: 62302158 Control de Puertos Paralelos Con Visual Basic

Facultad de Ingeniería - Universidad Rafael Landívar Boletín Electrónico No. 06

URL_06_MEC02.doc 6 de 9

Tabla 1. General del puerto paralelo DB25 Señal Registro Tipo Activo Descripción Sentido

1 Salida 0 C0- Salida Bajo Strobe Invertido 2 Dato 0 D0 Salida Alto Salida de Datos directo 3 Dato 1 D1 Salida Alto Salida de Datos directo 4 Dato 2 D2 Salida Alto Salida de Datos directo 5 Dato 3 D3 Salida Alto Salida de Datos directo 6 Dato 4 D4 Salida Alto Salida de Datos directo 7 Dato 5 D5 Salida Alto Salida de Datos directo 8 Dato 6 D6 Salida Alto Salida de Datos directo 9 Dato 7 D7 Salida Alto Salida de Datos directo

10 Estado 6 S6+ Entrada Alto Línea acknowledge (activa cuando el sistema remoto toma

datos)

directo

11 Estado 7 S7- Entrada Bajo Línea busy (si está activa, el sistema remoto no

acepta datos)

Invertido

12 Estado 5 S5+ Entrada Alto Línea Falta de papel (si está activa, falta papel en la

impresora)

directo

13 Estado 4 S4+ Entrada Alto Línea Select (si está activa, la impresora se ha

seleccionado)

directo

14 Control 1 C1- Salida Bajo Línea Autofeed (si está activa, la impresora inserta una

nueva línea por cada retorno de carro)

Invertido

15 Estado 3 S3+ Entrada Alto Línea Error (si está activa, hay un error en la

impresora)

directo

16 Control 2 C2+ Salida Alto Línea Init (Si se mantiene activa por al menos 50

micro-segundos, ésta señal autoinicializa la impresora)

directo

17 Control 3 C3- Salida Bajo Línea Select input (Cuando está inactiva, obliga a la

impresora a salir de línea)

Invertido

18-25 Tierra Tierra del puerto

El segundo conector se llama 1284 tipo B que es un conector de 36 patitas de tipo centronics y lo encontramos en la mayoría de las impresoras; el tercero se denomina 1284 tipo C, se trata de un conector similar al 1284 tipo B pero más pequeño. Para cumplir estos objetivos, el estándar define los conectores, interfase eléctrica, y los requerimientos de cableado. El estándar identifica 3 tipos de conectores:

IEEE 1284 Tipo A: 25 pines DB25 IEEE 1284.

Page 37: 62302158 Control de Puertos Paralelos Con Visual Basic

Facultad de Ingeniería - Universidad Rafael Landívar Boletín Electrónico No. 06

URL_06_MEC02.doc 7 de 9

IEEE 1284 Tipo B: 36 Conductores, Conector tipo Champ de Línea central de 0.085 con seguros (Centronics).

IEEE 1284 Tipo C: 36 Conductores, Conector tipo mini Champ de Línea central de 0.050 con seguros de clip (mini Centronics).

Y el IEEE 1284 B tiene el siguiente patillaje

Figura 4. CONECTOR IEEE 1284 TIPO B

Ahora identifiquemos directamente en el LPT1 el patillaje

Figura 5. CONECTOR LPT1

Observe que el puerto paralelo tiene 12 líneas de salida (8 líneas de datos, strobe, autofeed, Init, y Select Input) y 5 de entrada (acknowledge, busy, falta de papel, select y error). Nos interesa para estudiar las líneas de datos Salidas 2 a 9 así como el Strobe Salida 1, no debemos olvidar la salidas de tierra pata 18 a 25. Nos enfocamos en el estudio de estas, nuestro objetivo es únicamente para salidas de datos, en un articulo futuro tomare en cuenta como ingresar datos y como el puerto paralelo puede leerlo. Este modo de trabajo es llamado MODO COMPATIBLE. En una computadora se pueden tener hasta 3 puertos paralelo, cada uno controlado por distinto código o registro, estos registros son direcciones de cada puerto y así es como la PC los reconoce, estas direcciones son base y no modificables (hasta lo que he visto ahora) que son: puerto paralelo LPT1 con

Page 38: 62302158 Control de Puertos Paralelos Con Visual Basic

Facultad de Ingeniería - Universidad Rafael Landívar Boletín Electrónico No. 06

URL_06_MEC02.doc 8 de 9

dirección: 0x3BCh, Puerto paralelo LPT2 con dirección 0x378h y LPT3 con dirección 0x278h. Pero antes de cualquier cosa es necesario conocer la dirección base asignada al puerto paralelo de su PC, esta la asigna la BIOS y para conocerla puede seguir los siguientes pasos, vamos al menú inicio, seleccionamos y busca el modo DOS o MS-DOS para abrir una ventana de Símbolo. . Estando en modo DOS teclear debug, el programa responde colocando un signo de menos - para luego teclear sin espacios de por medio d040:08L8 y enter, entonces el programa debug.exe nos indica en una serie de números todos los puertos disponibles en su PC, la siguiente imagen la he extraído de la mi PC personal.

Figura 6. Pantalla de en una PC en modo Debug DOS

Observe a la izquierda de la pantalla una serie de números de dos dígitos (ocho en total), son los números del volcado de memoria que empieza en la dirección 0040:0000. Mas a la derecha los seis pares de números representa la dirección base para el puerto paralelo de mi PC, y que esta en la dirección 0x378h (BC 03 78). Luego cerramos el programa Debug.exe simplemente tecleando la letra q y presionando la tecla entrar. Para cerrar la ventana de Símbolo de MS-DOS tecleamos la palabra exit y presionamos la tecla entrar. Una vez haya comprendido este primer articulo continuaremos en una segunda parte en donde se incluye un proyecto realizado por alumnos de Universidad.

Page 39: 62302158 Control de Puertos Paralelos Con Visual Basic

Facultad de Ingeniería - Universidad Rafael Landívar Boletín Electrónico No. 06

URL_06_MEC02.doc 9 de 9

CONCLUSIÓN

Por demás está decir que en estos últimos tiempos la computadora a sido una gran ayuda en todos los campos de la humanidad, desde su invención con la ENIAC al realizar unos cuantos cientos de cálculos hasta las supercomputadora Mainframe de las grandes industrias.

La PC normal o la portátil ha sido un medio sencillo y óptimo para todo alumno en su etapa educativa. El desarrollo de sus habilidades va ahora acompañado con el desarrollo y resolución de tareas de una forma fácil y semi-automatizada en procesos de reales tomados de la industria.

Desde otro punto de vista, el objetivo siempre ha sido el mismo, la búsqueda de la automatización del proceso enseñanza-aprendizaje.

BIBLIOGRAFÍA BOYLESTAD, ROBERT & NASHELKY, LOUIS. (2003). Electrónica: Teoría de Circuitos. Thomson Editores. 8ª Edición. México. ENGDAHL, TOMI. (1996). Parallel port interfacing made easy. ePanorama.net. Consultado en: http://www.epanorama.net/circuits/parallel_output.html INICIAte- 2002-2007. Conexión de dos ordenadores mediante un Cable Paralelo. Consultado en: http://pio9.com/22conexparalelo.htm MICROSOFT. Cómo obtener acceso a los puertos serie y paralelo usando Visual Basic .NET. Ayuda y Soporte Técnico. Consultado en: http://support.microsoft.com/kb/823179/es MILLÁN. A.J.. La Interfaz SCSI. ZATOR Systems - Tecnología del PC. Consultado en: http://www.zator.com/Hardware/H6_3.htm OLA GARCÍA, JOSE LUIS. Prácticas de Electrónica, Circuitos Eléctricos. Facultad de Ingeniería USAC. 3ª Edición. Guatemala. TOCCI, RONALD. Arquitectura de Computadoras. Editorial McGraw Hill, 5ª Edición. México. WIKIPEDIA. Placa de pruebas. Consultado en: http://es.wikipedia.org/wiki/Placa_de_pruebas

Page 40: 62302158 Control de Puertos Paralelos Con Visual Basic

Facultad de Ingeniería - Universidad Rafael Landívar Boletín Electrónico No. 07

URL_07_MEC01.pdf 1 de 9

CONTROL DEL PUERTO PARALELO, CONTROL EN APLICACIONES DE ELECTRÓNICA. PARTE 2

Por Ing. José Luis Ola García, [email protected]

RESUMEN En este artículo el autor ilustra la forma de construir una interfase para poder a través del puerto paralelo dirigir las acciones de un móvil robótico. Se trabaja la computadora en modo Normal SPP por ser el más elemental y el que provee la escritura (salida de datos) del conector DB-25 del puerto paralelo desde el cual se puede controlar todo tipo de dispositivo electrónico o eléctrico. Es necesario escribir un programa en lenguaje de programación C++, Basic, Pascal, Delphi o Visual Basic y crear un circuito electrónico que utiliza una etapa de optoacopladores para evitar sobre cargas que puedan dañar la tarjeta madre de la computadora. DESCRIPTORES Puerto paralelo. Optoacopladores. Programación de puertos. Móvil robótico. ABSTRACT In this article author shows how to build an inter phase with parallel port for robotic mobile control. He suggests to work in SPP normal computer mode and through DB-25 connector of parallel port. It is necessary to create a computer program in C++ or Visual Basic y build electronic circuit including optocouplers to avoid electrical over exposure with several damages to computer motherboard. KEYWORDS Parallel port. Optocoupler. Programming parallel ports. Robotic mobile.

Page 41: 62302158 Control de Puertos Paralelos Con Visual Basic

Facultad de Ingeniería - Universidad Rafael Landívar Boletín Electrónico No. 07

URL_07_MEC01.pdf 2 de 9

CONTROL DEL PUERTO PARALELO, CONTROL EN APLICACIONES DE ELECTRÓNICA PARTE 2 INTERFAZ PARA EL PUERTO PARALELO Todos los puertos de la PC son de tipo llamado multimodal configurados por la BIOS de la máquina. Opciones de trabajo son Modo Normal (SPP), Modo Bidireccional, EPP y ECP. En este artículo trabajaremos en modo Normal (SPP) por ser el más elemental y el que nos provee lo necesario para nuestro estudio permitiendo la escritura (salida de datos) en los pines 2 al 9 del conector DB-25 del puerto paralelo. La facilidad en el manejo del puerto es que se puede controlar todo tipo de dispositivo electrónico o eléctrico si sabemos extrae los datos TTL que se obtienen, pero, también debemos saber como extraerlos porque el puerto paralelo se puede dañar y dejar daños irreparables en la Tarjeta Madre, se debe proteger el puerto paralelo adecuadamente para no tener que comprar una nueva PC, el hardware del puerto paralelo está muy limitado en cuanto a su capacidad de manejo de corriente y debemos cuidar la elevación de la misma. Puede usar el integrado 74LS244 que ayuda a aislar el puerto y no permite retorno de corriente dañina o superior a las que maneja el puerto paralelo que son unos cuantos miliamperios. Ahora bien, una forma de proteger el puerto es utilizando el anterior integrado que consigue en cualquier electrónica de la ciudad, opciones hay muchas, les presente es una que me ha funcionado y a la vez con seguridad

Figura 5. Control del Puerto Paralelo con Opto-acopladores

Page 42: 62302158 Control de Puertos Paralelos Con Visual Basic

Facultad de Ingeniería - Universidad Rafael Landívar Boletín Electrónico No. 07

URL_07_MEC01.pdf 3 de 9

Como puede observarse, se utiliza una etapa de optoacopladores que no permite el retorno de corriente alguna hacia LPT1. La razón es que el optoacoplador está formado por un diodo emisor de luz y un transistor tipo NPN. La conducción de corriente nunca dará retorno al LPT1. Pero aun resta por amplificar la señal del LPT1 ya que éste solo entrega rangos de voltaje de 2.5 a 3 volts y el Optoacoplador (pata No. 4) devuelve estos mismos voltajes. Si queremos utilizar el LPT1 como salida TTL debemos colocar una etapa más pero de amplificadores, según se muestra en la siguiente figura.

Figura 6. Amplificación de Señal de LPTL

Ahora bien, ¿no les parece que sería bueno verificar su correcto funcionamiento? Utilizando protoboard es lo más adecuado. Puede proceder a conectar los anteriores circuitos como se indica y luego a la salida del transistor (Figura 6 Salida TTL 5 V) debe colocar un juego de LEDS y proceder a colocar el puerto paralelo (Figura 5). En este procedimiento no se preocupe, ya que los LEDS no pueden dañar el puerto paralelo (Figura 5 entrada de LPT1) y observe si se encienden (recuerde que tienen polaridad y debe probar todos). Si es así, ya tiene el primer paso. Por cierto, no olvide conectar juntas (en el BNC 25) las pines 18 a 25 que son la tierra y estas a la vez a la tierra de la fuente de 5V que alimenta los LEDS (Figura 7). Se preguntará, ¿Cómo envío datos por el puerto? ¿Que debo hacer? Esto se detalla más adelante. Antes de esto deberá construir el conector adecuado para el LPT1 con el conector BNC 25 Macho (Figura No. 3 y No. 8) o bien puede comprarlo (Figura No. 9).

Page 43: 62302158 Control de Puertos Paralelos Con Visual Basic

Facultad de Ingeniería - Universidad Rafael Landívar Boletín Electrónico No. 07

URL_07_MEC01.pdf 4 de 9

Figura No. 7. LED y Puerto Paralelo

Figura No. 8. BNC 25

Figura No. 9. BNC 25 MACHO

Con ocho bits podemos escribir en el puerto un total de 256 valores diferentes (8 salidas TTL a 5V) cada uno de éstos representa un byte de información y cada byte puede representar una acción concreta que podemos definir de acuerdo a nuestras necesidades. Para ello es necesario realizar un programa en el lenguaje de programación que más se le facilite: C++, Basic, Pascal, Delphi Visual Basic etc. De su habilidad dependerá cual se le hace mas sencillo. El programa debe permitir escribir un número cualquiera entre 0 y 255 (como tiene 8 bits tiene 2n posibles combinaciones o 28 = 256) de tal manera que sea posible visualizar el valor en formato binario a la salida de datos D0 a D7

Page 44: 62302158 Control de Puertos Paralelos Con Visual Basic

Facultad de Ingeniería - Universidad Rafael Landívar Boletín Electrónico No. 07

URL_07_MEC01.pdf 5 de 9

ENVIANDO DATOS POR LPT1 A continuación se incluye un programa escrito en C++ para ver si lo pueden implementar, el cual está tomado de la página www.r-luis.xbot.es. Existe la posibilidad de que pueda tener falla en algún punto, por eso usted debe revisar las líneas de programación y ver si envía correctamente los datos. Otra forma de obtener un software (ya probado por mi persona) es consultar en la dirección de Internet mencionada.

/*Programa que envía señales al puerto de datos ingresando un número decimal*/ #include<dos.h> #include<stdio.h> #include<conio.h> int a; /*variable, valor que enviare al puerto*/ void main() a=0; /*asignando 0 a la variable a*/ outp(888,a); /*apago todos los LED's */ clrscr(); /*limpio la pantalla*/ printf("Ingrese el número en decimal para enviar al puerto.\n"); printf("El número máximo permitido es 255:\n"); scanf("%d",&a); /*tomo el valor y se lo paso a "a"*/ outp(888,a); /*lo envío al puerto de datos*/ printf("tachannnn... Dato enviado...!!!\n\n"); printf("Se acabó, presione una tecla para salir"); getch(); /*...y hasta luego*/ outp(888,0); /*apago todos los LED's*/

Si quiere mejorar el programa puede trabajar en Visual Basic y consultar la bibliografía 4. Me resta indicar que lo mínimo que necesita para trabajar con el puerto paralelo ya está dado, solo resta su habilidad para programar el puerto y hacer un programa o software para el envío de datos. Recuerde que debe saber cual es la dirección del puerto paralelo a través de debug.exe o incluso para enviar datos por medio del DOS puede teclear “ ? ” en el símbolo MS-DOS y buscar el parámetro Output de puerto. En la próxima edición de Ingeniería primero se mostrarán un par de proyectos que se han desarrollado con alumnos de la Universidad Rafael Landívar y podrán ver que su implementación, lejos de ser difícil, es enriquecedora en conocimientos.

Page 45: 62302158 Control de Puertos Paralelos Con Visual Basic

Facultad de Ingeniería - Universidad Rafael Landívar Boletín Electrónico No. 07

URL_07_MEC01.pdf 6 de 9

PROYECTO: CREACIÓN DE UN MÓVIL CONTROLADO DESDE EL PUERTO PARALELO DE LA PC CONSTRUCCIÓN DEL MÓVIL Para la construcción del móvil se colocaron las dos ruedas delanteras para hacer los giros delanteros, y en la parte trasera las ruedas y el motor que controla la tracción y el retroceso. En la parte superior se coloco una lámina acrílica y sobre esta el circuito con todos los componentes

MATERIALES USADOS Para la creación de la placa base del

móvil se utilizaron los siguientes componentes:

Para el móvil se utilizó:

Una placa perforada de material aislante. 4 resistores de 330 Ω 4 resistores de 4.7 K Ω 4 resistores de 100 Ω 4 resistores de 4 Diodos tipo led 4 relees de 24 voltios 4 transistores Q2 BC548 4 optocopladores 1 puerto paralelo

2 motores de 5 Voltios 4 ruedas Un lamina acrílica (Figura No. 2) 4 baterías de 1.5 Voltios para el movimiento de los motores. 1 fuente de poder de 24 Voltios

Figura No.10. Móvil a Controlar

El circuito utilizado controla las señales digitales emitidas por el puerto paralelo de la computadora, este se muestra en la figura No.11. El puerto paralelo de la computadora posee 8 líneas de datos, 4 líneas de control y 5 líneas de estado (como ya he mencionado anteriormente) las cuales se manejan

Page 46: 62302158 Control de Puertos Paralelos Con Visual Basic

Facultad de Ingeniería - Universidad Rafael Landívar Boletín Electrónico No. 07

URL_07_MEC01.pdf 7 de 9

independientemente y se les nombra como puerto de datos (data port), puerto de control (control port) y puerto de estado (status port).

Figura No. 11. Circuito de control

CONCEPTOS GENERALES EL OPTOACOPLADOR El Optoacoplador es un dispositivo que se compone de un diodo LED y un fototransistor, de manera de que cuando el diodo LED emita luz, ésta ilumine el fototransistor y conduzca. Estos dos elementos están acoplados de la forma más eficiente posible. La corriente de salida IC (corriente de colector del fototransistor) es proporcional a la corriente de entrada IF (corriente en el diodo LED). La relación entre estas dos corrientes se llama "razón de transferencia de corriente" (CTR) y depende de la temperatura ambiente. A mayor temperatura ambiente, la corriente de colector en el fototransistor es mayor para la misma corriente IF (la corriente por el diodo LED) La entrada (circuito del diodo) y la salida (circuito del fototransistor) están 100% aislados y la impedancia de entrada es muy grande (1013 ohms típico) El optoacoplador es un dispositivo sensible a la frecuencia y el CTR disminuye al aumentar ésta.

Page 47: 62302158 Control de Puertos Paralelos Con Visual Basic

Facultad de Ingeniería - Universidad Rafael Landívar Boletín Electrónico No. 07

URL_07_MEC01.pdf 8 de 9

Este elemento puede sustituir a elementos electromecánicos como relés, conmutadores. De esta manera se eliminan los golpes, se mejora la velocidad de conmutación y casi no hay necesidad de mantenimiento. RELÉ El relé es un dispositivo de conmutación activado por señales. En la mayoría de las veces, se utiliza una pequeña tensión o corriente para conmutar tensiones o corrientes mayores; puede ser de tipo electromecánico o totalmente electrónico, en cuyo caso carece de partes móviles. Es un sistema mediante el cuál se puede controlar una potencia mucho mayor con un consumo en potencia muy reducido. Están formados por una bobina y unos contactos los cuales pueden conmutar corriente continua o bien corriente alterna TRANSISTOR El transistor es un dispositivo electrónico semiconductor que se utiliza como amplificador o conmutador electrónico, una pequeña corriente o tensión aplicada a uno de los terminales controla o modula la corriente entre los otros dos terminales. Tiene de cambiar la resistencia al paso de la corriente eléctrica entre el emisor y el receptor. El transistor tiene tres partes. Una que emite electrones (emisor), otra que los recibe o recolecta (colector) y otra con la que se modula el paso de dichos electrones (base). La aplicación para el control a través de la interfase se realizo en Visual Basic 6.0. Ver las Figuras No.12 y No. 13 El proceso principal de diseño es más extenso. Por razones de espacio no ha sido colocado aquí, pero quien este interesado puede contactarme y con gusto atenderé sus inquietudes. Figura No.12. Aplicación del programa para control del móvil

Page 48: 62302158 Control de Puertos Paralelos Con Visual Basic

Facultad de Ingeniería - Universidad Rafael Landívar Boletín Electrónico No. 07

URL_07_MEC01.pdf 9 de 9

Figura No. 13. Móvil construido BIBLIOGRAFÍA 1. ZATOR SYSTEMS. Tecnología del PC: 6.3 La Interfaz SCSI. Consultado en:

http://www.zator.com/Hardware/H6_3.htm

2. OLA GARCÍA, JOSE LUIS. Prácticas de Electrónica: Circuitos Eléctricos. Sin Editorial, 3ª Edición

3. WIKIPEDIA. Placa de pruebas. Consultado en: http://es.wikipedia.org/wiki/Placa_de_pruebas

4. MICROSOFT. Cómo obtener acceso a los puertos serie y paralelo usando Visual Basic .NET. Soporte Técnico. Consultado en: http://support.microsoft.com/kb/823179/es

5. TOCCI, RONALD. Arquitectura de Computadoras. Editorial McGraw Hill, 5ª Edición

6. BOYLESTAD, ROBERT & NASHELKY, LOUIS. Electrónica: Teoría de Circuitos. Thomson Editores, 8ª Edición

7. ENGDAHL, TOMI. (1996-2006). Parallel port interfacing made easy: Simple circuits and programs to show how to use PC parallel port output capabilities. Consultado en: http://www.epanorama.net/circuits/parallel_output.html