![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
Haber si te entendi bien, quieres hacer una funcion tal que asi:
Esto equivale a: SalidaOn(1) -> bErr := Out32($378,1); SalidaOn(2) -> bErr := Out32($378,2); SalidaOn(3) -> bErr := Out32($378,4); Y asi sucesivamente, ¿era eso lo que querias? |
#3
|
|||
|
|||
Tan Facil!!
Gracias Seoane!
Si era eso lo que queria para manejar individualmente cada salida, sin embargo si quieres activar mas de una simultaneamente los valores se deben de sumar o no? es decir si activas la salida (bits) 1 y 2 SalidaOn(1); //00000001 esto es individualmente SalidaOn(2); //00000010 Cuando ambas estan activadas equivaldria a 00000011 o el numero 3 si fuese: SalidaOn(1); SalidaOn(5); SalidaOn(8); eso seria 10010001 que equivaldria a 145. Esto es para activar y para desactivar deberia restar el valor correspondiente: SalidaOff(1); SalidaOn(5); SalidaOn(8); esto seria 10010000 que equivaldria a 144 Gracias por tu ayuda! Voy a investigar mas esto de los operadores logicos. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Puerto paralelo en C | Chase | C++ Builder | 0 | 04-07-2005 12:29:37 |
Puerto Paralelo | jorge | Lazarus, FreePascal, Kylix, etc. | 1 | 20-04-2005 03:25:42 |
Puerto Paralelo | solovaer | Impresión | 0 | 08-03-2005 02:54:54 |
Control del puerto paralelo (DB25) | soul6301 | Varios | 1 | 30-06-2004 20:30:05 |
![]() |
|