Foros de daboweb

MULTIMEDIA, Video digital, Grabación, Diseño gráfico, Diseño web, Programación => Webmasters - Diseño Web - Programación - Diseño gráfico => Mensaje iniciado por: likuid en 01 de Junio de 2004, 10:31:47 pm

Título: Introduccion de datos medianet puerto paralelo
Publicado por: likuid en 01 de Junio de 2004, 10:31:47 pm
Alguien puede ponerme el codigo fuente de como hacerlo? serían 8 entradas de datos lo que necesito, doy mi vida por ello!  :lol:

[LiKuiD]
Título: Introduccion de datos medianet puerto paralelo
Publicado por: ALP en 01 de Junio de 2004, 11:55:15 pm
Hola de nuevo.

Si lo que necesitas es leer el puerto paralelo, lo puedes hacer utilizando las funciones de entrada/salida de ficheros. Por ejemplo:

Código: [Seleccionar]
HANDLE lpt;
char byte;
DWORD leidos;

lpt = CreateFile("lpt1",GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
while(1) {
   ReadFile(lpt, &byte, 1, &leidos, NULL);
   if (leidos > 0) {
      ....
      /* tratamiento del carácter leido */
      ....
   }
}

CloseHandle(lpt);


Si lo que necesitas es "controlar a saco" el puerto paralelo, el tema es un poco más complejo.

Un saludo.
Título: Introduccion de datos medianet puerto paralelo
Publicado por: likuid en 02 de Junio de 2004, 12:22:15 am
Pues mas bien a saco si...  xD
Título: Introduccion de datos medianet puerto paralelo
Publicado por: ALP en 02 de Junio de 2004, 12:32:39 am
Dale un vistazo a esta página, te explican por encima el funcionamiento del puerto paralelo, y también hay algún ejemplo de cómo leer y escribir en el puerto.

http://www.ctv.es/pckits/tutorial.html#parallel

actualizado
Quizás esta clase te ayude más...

http://www.geocities.com/agutierrezf/practica3.html

un saludo.
Título: Introduccion de datos medianet puerto paralelo
Publicado por: likuid en 02 de Junio de 2004, 09:58:06 am
Muchas gracias me han venido de lujo, dos preguntitas:

1) Las direcciones fisicas de memoria donde residen los datos, el control y el estado del puerto son 0x378,0x379 y 0x37a, pero no tengo ni idea de cual es cual.

2) Debo introducir 8 bits de datos por el puerto, cuando este solo posee 5 bits de datos direccion impresora --> ordenador, la solución es usar el byte de datos ke generalmente se usa en dirección ordenador --> impresora (D0-D7) que van desde el pin 1 al 9, para ello tendría que variar un bit del byte de control, pero como ya he dicho no se cual es el byte de control y menos aun que bit debería modificarle...

[LiKuiD]

Al final con la tonteria me voy a aficcionar a esto del C  :roll:
Título: Introduccion de datos medianet puerto paralelo
Publicado por: ALP en 02 de Junio de 2004, 10:21:02 pm
Hola de nuevo.

Respecto a las direcciones:

0x378 es la dirección del puerto 1 (LPT1)

DATOS  = base + 0 = 0x378
STATUS =  base + 1 = 0x379
CONTROL = base + 2 = 0x37a

respecto a la segunda pregunta,quizás esta página te ayude:

http://www.beyondlogic.org/spp/parallel.htm

(mira el enlace "Using the Parallel Port to Input 8 Bits")

no tengo nada para conectar al paralelo, así que no puedo hacer pruebas...

un saludo.
Título: Introduccion de datos medianet puerto paralelo
Publicado por: likuid en 02 de Junio de 2004, 10:30:59 pm
Soy muy pesado lo se... algo que se escapa a mi persona:

printf ("%x",inp(0x37a)); --------> e7

outp (0x37a,0xc7); ----------> y se me mete en el registro ec! porque?

/*------------------------------------------------------*/

Por otra parte si lo hago haciendo la comparacion bit a bit con and:

outp (ox37a,0xe7&0xdf);

Haciendo esa comparacion bit a bit deberia quedarse en ese registro c7 (que es lo que quiero meter), pero se queda ec igualmente.

 :evil:

[LiKuiD]
Título: Introduccion de datos medianet puerto paralelo
Publicado por: likuid en 02 de Junio de 2004, 10:37:06 pm
Vale acabo de comprobar que el problema no esta en el código, si pruebo con cualquier otra direccion de memoria me deja, pero la que necesito cambiar es la  del byte de control del LPT1 (0x37a), alguna idea de porque no puedo?
Título: Introduccion de datos medianet puerto paralelo
Publicado por: ALP en 02 de Junio de 2004, 11:16:54 pm
¿Podría ser por una cuestión de tiempos de espera?
¿Qué tienes conectado al puerto?

He estado rebuscando, y he encontrado esta dirección:
http://www.cpr2valladolid.com/tecno/cyr_01/control/index.htm

En el frame de la izquierda, en el último enlace (Y, ...¿en el aula?) hay un enlace a un programa del mismo autor, LPTPanel, que podría servirte de ayuda. Más rápido por aquí:

http://www.cpr2valladolid.com/tecno/cyr_01/soft.htm#LPTPanel

un saludo.
Título: Introduccion de datos medianet puerto paralelo
Publicado por: likuid en 02 de Junio de 2004, 11:28:16 pm
Aun no he conectado el dispositivo al puerto, el tema es que ese es el byte de control, la configuracion del puerto, no debería ser necesario tener nada enchufado para poder variarlo, el caso es que le meto unos datos y el introduce lo que le da la real gana.
Título: Introduccion de datos medianet puerto paralelo
Publicado por: ALP en 03 de Junio de 2004, 02:46:05 am
He estado haciendo las pruebas que comentas, y obtengo los mismos resultados. Es posible que el driver de la impresora se meta por medio. Habría que probar si cargar windows, a ver qué pasa.
Por cierto... qué es lo que pretendes hacer?
Sigo pensando que con WriteFile() y ReadFile() no deberías tener problemas para leer y escribir en el puerto.