C/Visual C - lectura de puerto paralelo.

 
Vista:

lectura de puerto paralelo.

Publicado por Oliver++ (339 intervenciones) el 14/10/2002 17:15:00
despues de leer datos del puerto paralelo (D0-D7) y almacenarlos en una variable del tipo indicado, como obtengo los valores individuales de los bit D0-D7?.
lo que quiero decir es como descomponer la variable de lectura.
estoy usando la libreria inpout32.dll con c++
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

RE:lectura de puerto paralelo.

Publicado por Alvaro (122 intervenciones) el 14/10/2002 17:31:31
No se sobre el puerto paralelo, pero creo que lo que necesitas es hacer operaciones de bits con la bariable.
para obtener el primer bit de una bariable le haces un & con 0x00000001. si es así, puedes definir una macro de la siguiente forma.
#define getbit(var, nbit) ((var >> nbit) & 0x00000001)
Espero haberte ayudado.
Suerte.
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:lectura de puerto paralelo.

Publicado por Armando Nava (127 intervenciones) el 15/10/2002 04:04:39
Tienes entonces que convertir tu variable a binario y almacenar cada resultado independientemente. En este ejemplo tendras que invertir el array para obtener los valores correctos.

unsigned int variable /*Almacena el bit*/
int dato[100], res,i;

do {

res=variable%2
variable=variable/2
dato[i]=res;
i++;
}while(variable!=1);
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:lectura de puerto paralelo.

Publicado por Alvaro (122 intervenciones) el 15/10/2002 15:42:06
¿Como es posible ?
Los datos ESTAN en binario en el computador y si haces eso, claro, es binario, pero solo para entendimiento humano.
Para obtener un bit de cualquier variable entera, caracter, o puntero (no float ni double) debes hacer un AND (&) con un valor que solo tenga activos los bits que quieres obtener.
Ej:
para obtener el primer bit de un entero i dices:
bit = i & 0x00000001;
Para obtener el segundo bit dices:
bit = (i & 0x00000002) >> 1;
Para obtener el tercer bit dices:
bit = (i & 0x00000004) >> 3;
Para obtener el primer y segundo bit dices:
bits = (i & 0x00000003);
Etc...
Si ya los tienes en memoria ¿Para que los almacenas, utilizando mas memoria?
Que desperdicio de espacio !! un int (32 bits) para guardar un bit que ya está en memoria...
Así no se puede...
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