C/Visual C - sacar datos por el puerto paralelo

 
Vista:

sacar datos por el puerto paralelo

Publicado por Jose Luis (1 intervención) el 23/10/2005 21:39:57
hola, soy estudiante y necesito saber como puedo sacar datos por el puerto paralelo del pc, me han dicho que necesito hacerlo mediante un controlador en windows XP pero no se como hecrlo, les agradesco cualquer ayuda que puedan brindarme.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Sergio Castillo

RE:sacar datos por el puerto paralelo

Publicado por Sergio Castillo (47 intervenciones) el 27/10/2005 02:30:44
Hola, mira si estás en Win XP depende del compilador que uses, si me dices qué compilador usas y el SO te puedo ayudar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:sacar datos por el puerto paralelo

Publicado por JUAN GARCES (1 intervención) el 29/10/2005 03:22:39
Yo tenía problemas al intentar mandar salidas al puerto paralelo en una ventana de XP OUTP ( ) no hacia nada en el puerto al mandar un numero solo algunas veces i con mucho retardo, con un bucle que repita baria veces OUTP la respuesta es de inmediato y segura

/**********************************************************
* puerto2.c *
* Escribe datos al puerto paralelo de la PC *
* (c)1999, Virgilio Gómez Negrete *
**********************************************************/

#include <stdio.h>
#include <dos.h>

int puerto(int direcc);
int seleccion;

int main()
{
unsigned int __far *puntero_a_direccion;
int i, direccion[3]={0,0,0}, disponible[3]={0,0,0};

puntero_a_direccion = (unsigned int __far *)0x00000408;

printf("Seleccione el puerto:\n");
/* ¿Cuantos puertos existen? */
for (i=0; i<3; i++)
{
if (*puntero_a_direccion == 0)
printf("Puerto LPT%d...............no disponible\n", i+1);
else
{
disponible[i] = 1;
direccion[i] = *puntero_a_direccion;
printf("Puerto LPT%d...............%d\n", i+1, i+1);
}
puntero_a_direccion++;
}
printf("Salir del programa........0\n");
scanf("%d", &seleccion);

do
{
switch(seleccion)
{
case 0: /* Salir del programa */
printf("Adios!!!\n"); /* return 0; */
break;

case 1:/* Puerto LPT1 */
if(disponible[0]==1)
puerto(direccion[0]);
else
{
printf("ERROR: PUERTO NO DISPONIBLE\n");
return 0;
}
break;

case 2: /* Puerto LPT2 */
if(disponible[1]==1)
puerto(direccion[1]);
else
{
printf("ERROR: PUERTO NO DISPONIBLE\n");
return 0;
}
break;
case 3: /* Puerto LPT3 */
if(disponible[2]==1)
puerto(direccion[2]);
else
{
printf("ERROR: PUERTO NO DISPONIBLE\n");
return 0;
}
break;
default:
printf("ERROR: OPCION INCORRECTA!\n");
break;
}
if(seleccion!=0)
{
printf("Seleccione otra opcion\n");
scanf("%d", &seleccion);
}
}
while(seleccion!=0);

return 0;
}

int puerto(int direcc)
{
unsigned int valor; /* Solo valores entre 0 y 255 */
int rep ,sal=1;
printf("Ahora puede escribir cualquier valor\n");
printf("entre 1 y 255, > 255 para terminar el programa\n");
do
{
printf("Valor al puerto?\n");
scanf("%d", &valor); /* variable de salida a P.Parlelo */
if ( valor > 255 ) sal =0;
if ( valor > 255 ) break; /* El programa original */
for ( rep =0; rep < 10 ; rep++ ) /* a mi NO me funciona en */
{ /* DOS-WINDOWS_XP sin el bucle */
outp (direcc, valor); /* que repite varias */
outp (direcc, valor); /* veces OUTP ( ) */
} /* */
/* ¿ si sabes como controlar el */
/* */
/* puerto serie en DOS->WIN_XP */
/* o algo mejor para el P. Paral. */
/* mandame algo a */
/* [email protected] */
/* */
printf("Se ha escrito %d al puerto\n", valor);
}
while(sal!=0);
return seleccion=0;
}

/*

MASA RESISTENCIAS LEDS P.PARALELO SALIDAS
390 OMS * 8 PIN

___________/\/\/\/\/\______|/_________ D0 - 2
| |\
|
|__________/\/\/\/\/\_______|/_________ D1 - 3
| |\
|
|__________/\/\/\/\/\_______|/_________ D2 - 4
| |\
|
|__________/\/\/\/\/\_______|/_________ D3 - 5
| |\
|
|__________/\/\/\/\/\_______|/_________ D4 - 6
| |\
|
|__________/\/\/\/\/\_______|/_________ D5 - 7
| |\
|
|__________/\/\/\/\/\_______|/_________ D6 - 8
| |\
|
|__________/\/\/\/\/\_______|/_________ D7 - 9
| |\
|
|______________________________________ MASA - 18 A 25

*/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Sergio

RE:sacar datos por el puerto paralelo

Publicado por Sergio (47 intervenciones) el 01/11/2005 21:52:36
Hola, si miren que a mi me pasaba lo mismo y es por el modo protegido del XP, pero se arregla al correr el programa en un bucle o de manera constante y mientras ningun otro programa este usando el puerto, sin embergo el XP no te da acceso a los bits de control del PP, por tanto se pega. Mi consejo es que no usen el puerto desde XP si no es con un compilador adecuado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar