Puerto Paralelo como Entrada

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



----------------------------------------------------------------------------------------------------------
 
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:

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
Por lo general no deben dejarse al aire, recordá que son entradas. Estas deben setearse a VCC (1) o a GND (0) y enmascarar el resultado de la lectura. Si dejas las entradas al aire, depende de la configuración y estado en que se encuentre dicho puerto, corriendo el riesgo del pasaje de señales espúreas.

- 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
Por lo general solo sirven de Salidas. Sólo los LPT modernos presentan en algunos casos la bidireccionalidad del bus de Datos del LPT.

- 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
No se le envian datos, tan solo se "lee" el estado del bus.

- 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
Esto depende de la computadora, en los hardware nuevos esta opción ya no es necesaria, la selección del modo es dinámica. (ESP/ECP/EPP).

- 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 te mensioné antes esto depende del LPT y su arquitectura en función del tiempo.

********** 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



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

Saludos.
 
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?
 
********** 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.
 
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
 
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 :LOL:), 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.
 
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.
 
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.
 
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.
 
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
 
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
 
Última edición:
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.

Código:
@echo off
wndlpt -bkgnd "1.txt"

Creo un archivo TXT, con el nombre 1.txt, con lo siguiente:
Código:
10000000

Creo un archivo php con el nombre 1.php:
Código:
<?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
 
Atrás
Arriba