Tema destacado: Entra al canal IRC oficial de #elhacker.net
Autor
|
Tema: Controlar Puerto Paralelo (Leído 7,976 veces)
|
fdsigu
Desconectado
Mensajes: 7
|
Amigos como estan, estoy haciendo unprogramita en c# para controlar el puerto paralelo, uso lalibrelia inpout32.dll, ya se como enviar los datos del puerto, pero lo que no se como leer e interpretar los datos que recibo, uso este codigo para la lectura?
//Llama a la función de entrada del archivo dll. [DllImport("inpout32.dll", EntryPoint="Inp32")] public static extern int Entrada(int direccion);
El puerto paralelo tiene los pines de entrada (pin 15,10,11,12,13) Entonces cuando leo el puerto 889 como se que esta en cada pin, por decir algocuando este con 1 el pin 15 que valor debo tener?? igual para el resto de pines, de igual forma si esta con 1 el pin 15 y el 10 como se que valor debe darme cuando leo el puerto 889.
Ademas de esto necesito hacer uso del puerto de entrada y salida, es decir tengo que leer cuando esta con 1 o 0 el pin1, aqui igual tengo que leer el puerto 890 pero que valor me deberia dar cuando tiene 1 el pin1 y que valor cuando tiene 0 este pin1.
Espero me puedan ayudar.
|
|
|
|
|
En línea
|
|
|
|
|
|
fdsigu
Desconectado
Mensajes: 7
|
Amigo muchas gracias por el enlace, pero mas que nada de como leer el valor del puerto es saber como interpretar o saber que valores me da cuando leo el puerto 379 y 390 del puerto paralelo, los pines de status son Pin 10: S6 Pin 11: S7 Pin 12: S5 Pin 13: S4 Pin 15: S3
por ejemplo cuando el pin10, tiene un uno que valor deberia tener en decimalo binario? cuando tiene un 0 igual, para el resto de pines de igual manera y las combinaciones por ejemplo si el pin10 y 11 esta con el valor de uno que valor deberia tener, porfa alguien que mepueda ayudar porque estoy bien confundido con esto.
|
|
|
|
|
En línea
|
|
|
|
|
Mr.Blue
|
bueno aver si entendi bien que es lo que queres. ya habia respondido o habia creado un post, pero no recuerdo. te doy un ejemplo en c++ que es el luenguaje quue mas manejo para que te des una idea. outportb (0x378,2); //Esta linea apunto al puerto de salida 0x378, el 2 indica que led tengo q prender, tene encuenta esto que explico despues delay (1000);// tiempo que qeda prendido. Bueno, como funciona ese 2 que te dije. Supongamos esto, en un puerto LPT son 8 pines que se pueden usar con leds, entonces como saber como prender el led que queremos, de la sigiente forma: 128 64 32 16 8 4 2 1 // aca son valores que sumados podemos formar cualquier numero desde el 0 hasta el 255 entonces 128 64 32 16 8 4 2 1 LEDs 1 2 3 4 5 6 7 8 queremos prender el led 4 seria igual a 00010000 (binario) = 16 (decimal) el led 1 3 5 7 seria igual a 10101010 = 170 en el ejemplo en c++ q di prenderia el led 7 Espero q te sea de ayuda. Saludos
|
|
|
|
« Última modificación: 13 Julio 2010, 20:41 por Sr.Blanco »
|
En línea
|
Las ciencias tienen las raíces amargas, pero muy dulces las frutas (Aristóteles)
|
|
|
fdsigu
Desconectado
Mensajes: 7
|
Gracias amigo por la respuesta pues si algo asi es lo que queria, pero lo que me indicas es para los pines de salida, ahora como seria para los pines de status o de entrada y los de control???
Gracias ojala y mepuedas ayudar.
|
|
|
|
|
En línea
|
|
|
|
|
|
fdsigu
Desconectado
Mensajes: 7
|
Gracias Sr Blanco pero no me ayudo mucho esa web, esperare a ver si me puedes ayudar con una breve descripcion asi como lo hiciste de los pines de salida ahi si entendi pero ahora el problema es con los de entrada y control
Saludos
|
|
|
|
|
En línea
|
|
|
|
|
Mr.Blue
|
Bueno, el pueto paralelo LPT consta de tres registros: Estado , de datos y de control los de estado: es un reguistro de entradas de 5 bits, i trabajan con la direccion 0x379 (LPT1) los de datos: consta de 8 bits, es bidireccional, y su direccion es 0x378 (LPT1) Los de control: Tambien son bidireccional de 4 bits, y su direccion es 0x37A (LP1) DATOS: Como ves el de datos que es el que te explique anteriormente trabaja con 8 bit, de 0 a 7 binario (2e3) 255 conbinaciones posibles. Estado: Son 5bits, de 0 a 4, osea 2e2, 31 conbinaciones posibles. El registro de estado indical la situacion actual de la impresora conectada al puerto, segun los niveles de tencion, ACK, BSY, PAP y OF/ON, lo que permite controlar el comportamiento de la impresora, es un regustro de entrada (Lectura) de informacion. Se compone de los pines (10,11,12,13,15). Si te fijas en la web que te deje en el cuadro que dice Lectura: Entrada de datos Coresponden a estos: Aclaracion D3,...,D7, indica el bit, osea bit 3 a 7 # D3: state of pin 15 (ERROR) inverted -> Si esta en 0, indica que se ah producido un error. # D4: state of pin 13 (SELECTED), -> Este es de OF/ON, si esta en 1 la impresora no esta en linea. # D5: state of pin 12 (PAPER OUT) -> Si esta en 1, significa que falta papel. # D6: state of pin 10 (/ACK) -> Indica que se producio una transferencia correcta, Trabaja con estados alto-bajo, si se transfiere un byte a la impresora, esta activa la line ACK de reconocimiento de caracter,en este momento pasa a estado bajo, si el ACK esta en niven alto significa que la impresora esta ocupada, y no se pueden realizar envios. # D7: state of pin 11 (/BUSY) inverted -> Inpresora ocupada. Los bit 0,1 y 2 no se usan. Control: Son 4 bit, igual q antes 2e2, 15 conbinaciones posibles. Este registro permite controlar las transferencias de informacion con la impresora, y tiene acceso de Lectura y escritura, como dije su direccion es 0x37A (LPT1). Corresponden a los pines 1,14,16,17 Los bit de este registro son: # D4: state of ping 2-9 (Son los de datos) (IRQ) # D3: state of ping 17 *(DSL) # D2: state of ping 16 (/INI) # D1: state of ping 14 *(ALF) # D0: state of ping 1 *(STR) Notas: 1- La / indica bit activo a nivel bajo 2- El * indica que son invertidos por el Hardware por lo tanto. Bit 4 (IRQ): Permite controlar las interrupciones de tipo hardware, si el bit esta en 1 corresponde con la interrupcion 0x0Fh (Creo) para procesador x86. Bit 3 (DSL): Esta es activada con un pulsador produce la iniciacion de la impresora. Bit 1 (ALF): Esta en nivel alto y cuando se produce un carry CR produce un cambio de linea. Bit 0 (STR) Controla la linea, y permite validar el dato exitente en el registro de datos, En 1 en el bit STR indica que el caracter es valido y se debe aceptar Fuente: http://mimosa.pntic.mec.es/~flarrosa/puerto.pdf Lo que te deje esta resumidamente, de esa fuente ya q no me acuedo de todo. Aclaracion importante. Al trabajar con todo el puero paralelo, te recomiendo, si estas trabajando en una placa madre unboard, comprar aparte el pueto paralelo LPT para hacer experimentos y trabajar con ese ya que si quemas el puerto LPT de la placa madre queda inutilizable, y su arreglo puede llegar a ser muy costoso, y talves te sea mas barato comprar una placa madre nueva.Otra cosa, seria de mas utilidad si expones el circuito y/o que trabajo queres hacer con el puerto, brindarte mas ayuda.
|
|
|
|
« Última modificación: 14 Julio 2010, 03:43 por Sr.Blanco »
|
En línea
|
Las ciencias tienen las raíces amargas, pero muy dulces las frutas (Aristóteles)
|
|
|
andres_5
Desconectado
Mensajes: 198
|
Una duda por mi parte, como se desbloquea el puerto paralelo desde el Windows 7 de 64 bits ?? he provado haciendo mi aplicación y usando ya programas ya creados, y ningun avance ... gracias y saludos
|
|
|
|
|
En línea
|
|
|
|
fdsigu
Desconectado
Mensajes: 7
|
Gracias Sr blanco po la informacion, pero queria saber si no es mucha molestia, asi como lo hiciste con el ejemplo de los pines de datos explicarme con los pines de control, osea en terminos mas comprensibles para el comun de los usuarios jeje, Por ejemplo Pin 10: S6 cuando tine 1 que valor en decimal es igual cuando tiene 0 Pin 11: S7 cuando tine 1 que valor en decimal es igual cuando tiene 0 Pin 12: S5 cuando tine 1 que valor en decimal es igual cuando tiene 0 Pin 13: S4 cuando tine 1 que valor en decimal es igual cuando tiene 0 Pin 15: S3
Como me indicaste 128 64 32 16 8 4 2 1 LEDs 1 2 3 4 5 6 7 8
Aqui si esta claro, pero ya para los pines de entrada no, lo que tengo que hacer es un programita que envie datos al puerto y prenda leds, dependiendo de lo que el profe pida, con lo que me indicaste ya lo tengo claro, ademas de esto debo leer el puerto y ver que datos tiene y segun los datos que tenga debo decir por ejemplo S6 cuando este con 1 activo cuando este con 0 desactivado. S7 activo o desactivo (si es 1 o 0)
y asi con todos los pines, para enviar estos datos uso un pulsante.
Saludos y gracias por la ayuda
|
|
|
|
|
En línea
|
|
|
|
|
Mr.Blue
|
Bueno, el pueto paralelo LPT consta de tres registros: Estado , de datos y de control los de estado: es un reguistro de entradas de 5 bits, i trabajan con la direccion 0x379 (LPT1) los de datos: consta de 8 bits, es bidireccional, y su direccion es 0x378 (LPT1) Los de control: Tambien son bidireccional de 4 bits, y su direccion es 0x37A (LP1) Se trabaja de igual forma. dijimos que para lo registros de datos eran 8 bit 128 64 32 16 8 4 2 1 1 2 3 4 5 6 7 8 bits Para los registros de estado: 16 8 4 2 1 1 2 3 4 5 bits Para los registros de control 8 4 2 1 1 2 3 4 bits Bueno en cada caso ya sabes que sucede si la entrada esta en 1 o en 0, (impresora ocupada, sin papel, error, etc). trabaja de la misma forma que en los datos con la diferencia que son distintas direcciones de registro y con distinta cantidad de bits, En el ejemplo que me decis Gracias Sr blanco po la informacion, pero queria saber si no es mucha molestia, asi como lo hiciste con el ejemplo de los pines de datos explicarme con los pines de control, osea en terminos mas comprensibles para el comun de los usuarios jeje, Por ejemplo Pin 10: S6 cuando tine 1 que valor en decimal es igual cuando tiene 0 Pin 11: S7 cuando tine 1 que valor en decimal es igual cuando tiene 0 Pin 12: S5 cuando tine 1 que valor en decimal es igual cuando tiene 0 Pin 13: S4 cuando tine 1 que valor en decimal es igual cuando tiene 0 Pin 15: S3
Estas hablando del registro de estado, que va de 10-15, Ahi te puse como trabaja con estados altos, y bajos, y funciona de la misma manera pero la diferencia que aca no mandas informacion al puerto si no que lee. entonces. vos sabes que son 5 bits 1 2 3 4 5 bits 1 2 4 8 16 ---> que pasa cuando en el bit 1 y 4 hay tencion osea que esta en "1" te fijas en lo que puse en el post anterior, ERROR y TRANSFERENCIA CORRECTA (/ACK) Entonces resumen. Este registro lo controloas vos con tu circuito dependiendo del estado que aya en cada pin la maquina debe leer ese estado y interpretarlo vos con la programacion, dependiendo que estado tengas, haras las funciones que necesites. El de Control, de igual forma, son 4 bits 1 2 3 4 bits 1 2 4 8 --> que pasa cuando el bit 4 esta en "1", (DSL) produce la iniciacion de la impresora atraves de un pulsador Es este ultimo son 4 bits pero como es bidireccional, podes trabajar tambien con los pines del registro de datos. Espero que sea esto lo que queres saber. Vuelvo a citar Por ejemplo Pin 10: S6 cuando tine 1 que valor en decimal es igual cuando tiene 0 Pin 11: S7 cuando tine 1 que valor en decimal es igual cuando tiene 0 Pin 12: S5 cuando tine 1 que valor en decimal es igual cuando tiene 0 Pin 13: S4 cuando tine 1 que valor en decimal es igual cuando tiene 0 Pin 15: S3
Pin 10 11 12 13 15 1 1 1 1 1 ---> todos en 1 es igual a 31 "La suma da 31" 1 2 4 8 16 Pin 10 11 12 13 15 0 0 0 0 0 ---> todos en 0 es igual a 0. 1 2 4 8 16 Reitero, dependiendo del estado en cada pin, tenes q mirar lo que quiere decir un "1" o un "0" en lo que escribi en el anterior post Saludos PD: Revisa el link que te deje anteriormente. Andres_5 Eso que mencionas me ah pasado, si no me equivoco el problema arranca apartir de windows xp, necesitas un programa, pero no recuerdo cual en este momento, fijate por google que creo aver visto alguna aplicacion, pero no te aseguro de que sirva para windows 7 no lo eh probado todavía, si lo encuentro dejo un link.
|
|
|
|
« Última modificación: 14 Julio 2010, 19:55 por Sr.Blanco »
|
En línea
|
Las ciencias tienen las raíces amargas, pero muy dulces las frutas (Aristóteles)
|
|
|
andres_5
Desconectado
Mensajes: 198
|
muchisimas gracias, llevo unas semana comentando en todo los lado y nadie, y digo nadie, me ha brindado la menor ayuda, por eso de nuevo te doy las gracias, almenos ya se que mi problema es comun, lo buscare personalmente si lo encuentro lo posteare, agradecezco tu apoyo... saludos 
|
|
|
|
|
En línea
|
|
|
|
JCCC
Desconectado
Mensajes: 17
|
no puedo ayudar en mucho... deje de usar el puerto paralelo cuando me dejaron solo con la portatil.... cambiate a usar el Puerto USB, es mas comodo... si te animas pasate pro san google, tienes bastante informacion para seven especialmente...
|
|
|
|
|
En línea
|
|
|
|
andres_5
Desconectado
Mensajes: 198
|
me estoy pensando seriamente pasarme a USB, aunque si me ha sido imposible programarlo para el puerto paralelo imaginense para USB. Si no fuese mucho pedir, me ayudaria notablemente que me intrudujerais algunos terminos para buscar en san google. he empezado buscando cosas como, controlar led con usb, tutorial control usb con VB.net y nada de nada, sigo sabiendo lo mismo que antes (nada) saludos y muchas gracias...
|
|
|
|
|
En línea
|
|
|
|
JCCC
Desconectado
Mensajes: 17
|
mmmm en san google muchotrasto... te llevara a otros lugares... la pagina de microchip.... Matlab o Visual para los programas en la PC o cualquier otro programa pero esos son los q use... por ahi labview... veras q es sencillo si eres bueno en programacion... es mi talon de aquiles XD
|
|
|
|
|
En línea
|
|
|
|
|
|