Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-04-2006
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 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
  #2  
Antiguo 28-04-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Haber si te entendi bien, quieres hacer una funcion tal que asi:

Código Delphi [-]
procedure SalidaOn(num: Integer);
begin
   bErr := Out32($378, 1 shl (num-1));
end;

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?
Responder Con Cita
  #3  
Antiguo 28-04-2006
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
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


La franja horaria es GMT +2. Ahora son las 02:22:20.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi