# Puerto Paralelo como Entrada



## Fercho3333 (Jun 18, 2006)

Me resultó raro que no se trate especificamente este tema en algún foro.

Esto es información que les deposito. A su vez, necesito que me desmientan lo que voy a escribir, respondan si es correcto o si no es correcto:

PUERTO PARALELO COMO ENTRADA

********** Parametros eléctricos

- Los pines que se encuentran como de entradas NO tienen impedancia alta

- Los pines de entrada necesitan aproximadamente unos 2mA para cambiarlos de estado alto a bajo (si aplico 5V --> 0 mA aprox. , si aplico 0V --> 2mA)

- Si dejo al aire (sin conexión) a las entradas, estas se mantendran en estado alto

- Existe los pines de DATOS, ESTADO, CONTROL (DATA, STATUS, CONTROL) y masas.

********** Parametros internos del puerto

- Los pines de DATOS sirven como entradas o como salidas, y para enviarle datos hay que hacerlo mediante el puerto 888 (decimal) para el caso de LPT1

- Los pines de ESTADO solo sirven como entradas, es su única función, y para enviarle datos hay que hacerlo mediante el puerto 889 (decimal) para el caso de LPT1

- Los pines de CONTROL sirven como entradas o como salidas, y para enviarle datos hay que hacerlo mediante el puerto 890 (decimal) para el caso de LPT1. Por defecto estos pines solo pueden usarse como salida. Si se desea que se usen como entrada, hay que setearlo en la BIOS

- PARA SETEAR los pines de DATOS como entrada hay que cambiar C5 (C0, C1, ..., C7 de CONTROL) a un estado alto, y si se quieren como salida, C5 tendría que estar bajo.

********** Como cambiar/saber el estado de los puertos

NO IMPORTA EL LENGUAJE QUE SE UTILICE

- Para cambiar el estado de DATOS o CONTROL (no se puede cambiar ESTADO ya que solo es entrada) hay que mandarle un número de 0 a 255 a un puerto determinado (888 - DATOS o 890 - CONTROL)

Ej (función VB) :

'LlamarFuncion SETPORT (Puerto, ValorATomar)
CALL SETPORT (888, 254)

en la salida del puert puerto habrá, 11111110 binario (1 = 5V, 0 = GND)

- Para saber el estado de DATOS, ESTADO o CONTROL (es indiferente si está trabajando como entrada o como salida) hay que almacenar en una variable lo que devuelve el valor de una función en un determinado puerto (888 - DATOS, 889 ESTADO, 890 - CONTROL)

* Cuidado con setear C5

Ej (función VB) :

'Variable <-- GETPORT (Puerto)
X = GETPORT (888)

x tomara el valor decimal de el valor habrá en el puerto determinado en binario



----------------------------------------------------------------------------------------------------------


----------



## MaMu (Jun 18, 2006)

Fercho3333 dijo:
			
		

> Me resultó raro que no se trate especificamente este tema en algún foro.
> 
> Esto es información que les deposito. A su vez, necesito que me desmientan lo que voy a escribir, respondan si es correcto o si no es correcto:
> 
> ...



Saludos.


----------



## Fercho3333 (Jun 18, 2006)

Gracias, sos un capo de verdad.

¿Cómo es el tema de setear dinamicamente el puerto de CONTROL por medio de ESP/ECP/EPP? ¿Hacia donde tiene que apuntar mi programa?


----------



## spinaker (Ene 19, 2008)

********** Parametros internos del puerto 

- Los pines de DATOS sirven como entradas o como salidas, y para enviarle datos hay que hacerlo mediante el puerto 888 (decimal) para el caso de LPT1 

- Los pines de ESTADO solo sirven como entradas, es su única función, y para enviarle datos hay que hacerlo mediante el puerto 889 (decimal) para el caso de LPT1 

- Los pines de CONTROL sirven como entradas o como salidas, y para enviarle datos hay que hacerlo mediante el puerto 890 (decimal) para el caso de LPT1. Por defecto estos pines solo pueden usarse como salida. Si se desea que se usen como entrada, hay que setearlo en la BIOS 

- PARA SETEAR los pines de DATOS como entrada hay que cambiar C5 (C0, C1, ..., C7 de CONTROL) a un estado alto, y si se quieren como salida, C5 tendría que estar bajo.

-----------------------------------------------------------------------------------------------------------------------

Dices como hacer que los pines de datos sean de entrada, pero no dices como hacer que los pines de control lo sean.

Si alguien pudiera decirme como se hace me haria un favor.


----------



## Bas (Abr 8, 2009)

saludos, soy un poco nuevo en esto y tengo que trabajar el puerto paralelo, y me gustaria saber como hago par enviarlo impulsos electricos a las entradas del LPT, es que el problema que tengo es q necesito determinar cuando una puerta se cierra, entonces mi idea es hacer llegar voltaje del LPT hasta la puerta, y cuando la puerta se cierra hace contacto y deja pasar la corriente y la llevo hasta una entrada del LPT, entonces en concreto mi pregunta es si puedo hacer esto, tomar una salida y tras completar el circuito cuando la puerta se cierra llevarla como entrada, no se me daña el LPT al hacer esto? o hay alguna otra forma de poder hacer esto que necesito?

Disculpen mi ignorancia pero la verdad soy muy novato en esto y nose el resultado de lo q planie
Ojala me puedan ayudar de verdad se los agradeceria!
Saludos


----------



## laluchi (Abr 8, 2009)

una pregunta...
si los pines de entrada reciben 2V, me lo toma como  un 1 o como un 0 ?


gracias


----------



## karl (Abr 15, 2009)

lachui, los pines del puerto paralelo se ajustan al protocolo TTL (transistor transistor logic), que dice que de 4 a 5 volts (creo) se toma como positivo o 1, y de 0 a 1 volt se toma como 0, se que la zona de 2 volt son "espacio prohibido", y lo que hacen es que un circuito TTL "tartamudee", brincando erraticamente entre 0 y 1.

Una nota adicional (aprendida por experiencia dolorosa), el puerto LPT es fragil, cualquier sobrevoltaje o corto va a matarlo, y con ello la computadora, por ello siempre de los siempres pongan resistencias de protección en las salidas y si es posible, una fuente regulada independiente y optoaislada a las entradas.

En los sistemas mas nuevos como el windows XP y peores el sistema se porta muy payaso con los perifericos (quesque por seguridad, no vaya algún hacker malevolo a imprimir algo desde un virus ), por lo que ya no se pueden usar cosas como el VB o para los mas viejos el Qbasic para manejar el puerto (windows 98 si deja hacer eso, mi robot Pinzas funciona bajo 98), si quieren hacerlo sobre una plataforma mas nueva, necesitan una libreria especial, y hay que buscarla en la red.


----------



## masterk (May 24, 2009)

hola amigos del foro tengo un problema yo ya configure el puerto de datos como entrada colocando c5=1, pero el problema yace en que intento meter un 0 o 1 por medio de un resistencia y no da nada, pero cuando lo conecto directamente a 5v 0 gnd todo va cool, quisiera que me ayuden como arreglar este problema, yo pense que era por la corriente  ya que utilizaba como interface bidireccional un 74ls245 y la tension para 1 logico cae hasta 2v, por favor estoy desesperado.


----------



## jesul17 (Jun 18, 2009)

Hola soy nuevo en el foro, estudio Ing electroinia en la universidad nacional de Piura peru, saben quisiera si alguien me puede ayudar a diseañar un codigo fuente creado en visual  que dea ordenes directas directas a un cirduito de alarmas mediante el puerto paraleo, tengo un pra de ideas pero quisiera escuchar las recomendaciones de un experto. gracias.


----------



## karl (Jun 19, 2009)

tanto asi como experto no soy, pero se que para enviar la información necesitas una libreria (o hacer un modulo en basic normal, y convertirlo en herramienta), dependiendo del windows que tengas.

Si tienes 98 o anterior, haces un modulo en qbasic, usando las instrucciones inp y out, un ejemplo  es:
leer datos:

a = inp(889)
donde 889 es la dirección decimal de 379hex, el registro de entrada de la computadora

sacar datos:

out(888) b
donde 888 es 378hex, el registro de salida de la computadora y b es el valor decimal que quieres enviar

si tienes windows me o superior, necesitas una libreria especifica, cada libreria tiene sus instrucciones redactadas de una forma distinta, por lo que necesitas estudiarlas.


----------



## lepre3 (Ene 31, 2010)

Saludos, tengo una duda, si quiero enmascarar una entrada logica de una compuerta AND, con enmascarar quiero decir que sin importar si una entrada de  la  compuerta cambia la salida siempre es la misma, ¿Cómo es que la debo conectar?

Gracias


----------



## antiworldx (Feb 1, 2010)

lepre3 dijo:


> Saludos, tengo una duda, si quiero enmascarar una entrada logica de una compuerta AND, con enmascarar quiero decir que sin importar si una entrada de  la  compuerta cambia la salida siempre es la misma, ¿Cómo es que la debo conectar?
> 
> Gracias



No comprendo lo que quieres hacer... Al parecer quieres solo un buffer. Que una entrada nada mas sea la que determine la salida de la compuerta?
Un poco mas clara tu explicacion me ayudaria a darte la conexion... o en su defecto la tabla de verdad que quieres... Gracias


----------



## davideg87 (Feb 6, 2010)

aca tienen buena informacion sobre el puerto 
http://www.epanorama.net/circuits/parallel_output.html
para que el puerto reciba datos aca esta 
http://perso.wanadoo.es/luis_ju/puerto/port04.html
en algunos lados vi que ponen un 7805 para regular la entrada y en otros un74xx244o 245 ,no se cual es la diferencia entre estos dos
 y esta pagina http://64.233.169.132/search?q=cach...elo&hl=es&ct=clnk&cd=2&gl=ar&client=firefox-a pero parece que murio


----------



## W S N (Abr 9, 2010)

Hola, por aqui estoy liado con el puerto paralelo, en este caso, manejo solo las salidas desde una pagina php, tambien con los correspondientes registros a una db de MySql.

El caso es que acabo de lograr que todo funcione bien en lo que a salidas se refiere.
Ahora le toca a la parte de las entradas.

Para el tema de las salidas estoy usando un pequeño programa compatible con sistemas de 32 bit y 64 bit, este se llama WndLpt y a su vez este utiliza las librerias de Winring0 siendo este el motor (driver).

En la web de WndLpt estan los esquemas, en el readme.txt que está dentro de wndlpt_v0_2_5_full.exe puedes encontrar la información mas basica para manejar desde consola, aunque en la web mas información interesante.

Por si a alguien le interesa les pongo los codigos que estoy usando en este mini-proyecto.

Tal como lo tengo, estoy usando 3 archivos para activar una salida y otros 3 para desactivarla, para manejar las 8 salidas, un minimo de 48 archivos, mas dos, uno para apagar todo y otro para encender todo.

Empiezo con encender la salida 1:

Un archivo .bat, con este codigo de ejemplo.


```
@echo off
wndlpt -bkgnd "1.txt"
```

Creo un archivo TXT, con el nombre 1.txt, con lo siguiente:

```
10000000
```

Creo un archivo php con el nombre 1.php:

```
<?Php
$file="1.bat";
$call = $file;
pclose(popen('start /b '.($call).'', 'r'));
?>
<script language="JavaScript">
window.self.location="http://localhost/index.php ";
</script>
```

Puedes crear un archivo index.php si no lo tienes ya, y poner un enlace a 1.php para probar la salida nº 1.

Está claro que para ejecutar este codigo hay que tener un servidor web con php instaladado y operativo!

Yo estoy usando W7 Ultimate edition 64 bit  con Xampp 1.7.3, como framework php estoy usando MonoWeb.

Si a alguien le interesa les posteo tambien la parte de MySql, db, codigo php, no es que sea una maravilla pero a mi me funciona todo de lujo.

Saludos


----------



## Matias Alberto (Jul 6, 2010)

alguien sabra como utilizar los pines de control como entradas al puerto paralelo?¿?¿?¿


----------



## internete (May 17, 2011)

Hola: 

Aqui teneis un programa de ejemplo para entrada y salida por puerto paralelo,
en linux:

http://www.alargador.org/pport.c

Incluye comentarios, mapa del conector y de los puertos, y funciones basicas
de ejemplo (parpadeo de leds y lectura constante).

Salud y buenos alimentos

internete
1234567


----------

