Ver Mensaje Individual
  #1  
Antiguo 28-04-2006
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Reputación: 20
FGarcia Va por buen camino
Control digital por puerto paralelo LPT

Estoy hecho pelotas!!! Ya no se si voy a la derecha o a la izquierda, una manita por favor!!
Quiero manipular el puerto paralelo LPT para usarlo en control de equipos
electricos desde la PC, esto lo realizare utilizando la dll "InpOut32.dll" de
www.logix4u.net --la version que funciona con XP-- hasta ahi todo bien, ya la probe y me funciona perfectamente. Mi problema ahora es generar un procedimiento que me permita encender varias salidas simultaneamente. Como ejemplo:

Código Delphi [-]
SalidasDigitales : Byte //declaro una variable de tipo byte 0..255
//La funcion de la dll que usare
function Out32(wAddr:word;bOut:byte):byte; stdcall; external 'inpout32.dll';
//Como la llamare
bErr := (Out32($378, SalidasDigitales));
//Valores para encender o apagar cada salida mediante los procedimientos a crear

procedure SalidaOn(num:integer);
procedure SalidaOff(num:integer);
//Como los usaria
SalidaOff(0); // 00000000 ó bErr := (Out32($378, 0)); //apaga todas
SalidaON(1); // 00000001 ó bErr := (Out32($378, 1));
SalidaON(2); // 00000010 ó bErr := (Out32($378, 2));
SalidaON(3); // 00000100 ó bErr := (Out32($378, 4));
SalidaON(4); // 00001000 ó bErr := (Out32($378, 8));
SalidaON(5); // 00010000 ó bErr := (Out32($378, 16));
SalidaON(6); // 00100000 ó bErr := (Out32($378, 32));
SalidaON(7); // 01000000 ó bErr := (Out32($378, 64));
SalidaON(8); // 10000000 ó bErr := (Out32($378, 128));
SalidaON(9); // 11111111 ó bErr := (Out32($378, 255)); // enciende todas





En el ejemplo anterior he sustituido SalidasDigitales por su valor numerico.
Como ven "esta resuelto" la activacion de cada salida, lo que no encuentro es como hacer p.e. que SalidaOn(5) sea equivalente a SalidasDigitales := 16, que pasa si hago:

Código Delphi [-]
SalidaOn(2); //SalidasDigitales := 2
SalidaOn(6); //SalidasDigitales := 32
SalidaOn(8); //SalidasDigitales := 128
//equivale a: SalidasDigitales := 162 por lo tanto:
bErr := (Out32($378, 162));

Espero entiendan lo que quiero hacer, de antemano gracias por la atencion prestada al mensaje y la ayuda que puedan aportar.
Responder Con Cita