Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Bueno es una pregunta que ya me han hecho mucho y he decidido explicarlo en el blog.
Ahora que ya sabemos la dirección de nuestro puerto paralelo, podemos continuar con
el siguiente paso, que es saber la configuración de los puertos del LPT1; tenemos 25
pines en el puerto paralelo, todos funcionan con señales TTL y a continuación se
muestra como están configurados:
Puerto de salida (Puerto 888 ó hexadecimal 378) va del pin 2 hasta el 9, por este
puerto podemos sacar la información que queramos mandar a un circuito desde
el ordenador, para lo cual tenemos 8 bits, el de menor peso es el pin 2 y el de
mayor peso es el 9 siendo así que podemos tener hasta 256 posibles
combinaciones.
Puerto de salida (Puerto 889) son del pin 10 al 13 y 15 (como pueden darse
cuenta son solo 5 pines), por este puerto podemos meter información a nuestra
computadora proveniente del circuito, cabe señalar que los primeros tres bits de
menor peso no existen en este puerto pero son tomados en cuenta a la hora de
tener un valor en la entrada. Por ejemplo, si metemos una entrada por el pin 15
(que es el de menor peso) nuestro programa (que explicare mas adelante) lo
tomara como el valor 8 en el puerto 889.
Puerto de E/S (Puerto 890) y son los pines 1, 14, 16 y 17 este puerto es especial
para mandar datos tanto de entrada como de salida.
En la imagen siguiente se muestra el
puerto paralelo, con sus puertos de entradas y salidas.Ahora que nos queda claro la
configuración del puerto, podemos meternos a lo que les gusta, a programar en C#, para
esto primero tenemos que tener la librería, la cual es: "inpout32.dll", esta librería tienen
que colocarla en 2 direcciones, en System32 y en el lugar donde tendrán su programa
.EXE compilado.
Ahora si en nuestro proyecto podemos crear la clase:
using System;
using System.Runtime.InteropServices;
namespace WindowsApplication1
{
class PortAccess {
}
}
Ok ahora tenemos los dos métodos que nos interesan, para meter y sacar información
por nuestro puerto. El metodo 'Output' maneja dos variables enteras iniciales, la cual es
adress y value; 'adress' es la dirección de nuestro puerto de salida (especificada en la
imagen del puerto paralelo arriba), que en nuestro caso es el 888 (decimal), debido a
que tenemos 8 bits en nuestro puerto de salida es posible manejar cada pin de nuestros
ocho bits de la siguiente manera:
por ejemplo, si queremos una salida en el pin 2 y 3 (b'00000011' <-- en binario así),
pues exacto seria el valor 3 en decimal. Bueno no quiero extenderme mucho ahora
pasamos al puerto de entrada. La entrada es un poco más complicada, ya que solo
tenemos 5 pines con los cuales manejamos valores de 8 bits, ¿como es posible esto?
bueno no se asusten la explicación es que no hay pines para los 3 bits de menor peso,
pero bueno hay que verlo gráficamente para entenderlo:
Con el dibujo anterior ya nos damos una idea de lo que el programa puede leer de estos
pin, pero hay que tener cuidado ya que el pin 11 esta 'negado', esto quiere decir que por
ejemplo si nosotros metemos un 1 lógico por este pin el programa lo leería como 0
lógico y viceversa, de tal forma que si nosotros metemos la siguiente entrada: b'10001'
el programa nos leerá un 8 decimal, que equivale al b'00001000' en binario.
Es cuestión de jugar con los números binarios y decimales para obtener la salida
deseada.
El puerto de entrada es más fácil ya que solo lee, los datos que hay en la entrada
ejemplo:
Con estos ejemplos termina el mini tutorial (la verdad no quería extenderme tanto pero
tenia que explicar todo lo anterior para llegar a estos ejemplos).