Ler entradas porta paralela com timer
Olá pessoal.
Bom dia...
Busquei na internet e achei muita matéria a respeito de portas paralela.
Quanto ao acionar e desacionar saídas, tudo certo.
Sei que as 5 entradas da porta estão sempre para nivel1. (+5) e para mudar de stado, basta aplicar GND.
Estou precisando colocar um timer que fica varrendo constantemente o estado dessas portas e mostre em um edit seu estado.
O timer precisa somar essas entradas em decimal e dependendo do valor que estiver, sei qual (quais) entradas foram para GND.
Vi pessoas usando o endereço $378
Mas pelo que vi na internet seria $379 para ler as entradas
Minha rotina é essa abaixo.... Tenho constantes já indicando os bits para pos pinos D0 à D7 (saídas)
Aqui está funcionando...
O código está abaixo...
Podem ajudar como posso fazer para ler as entradas?
Grde abraço e grato pela resposta
ROTINAS
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, ComObj, DB, DBClient;
Const
BIT0 = $01; // 0000-0001
BIT1 = $02; // 0000-0010
BIT2 = $04; // 0000-0100
BIT3 = $08; // 0000-1000
BIT4 = $10; // 0001-0000
BIT5 = $20; // 0010-0000
BIT6 = $40; // 0100-0000
BIT7 = $80; // 1000-0000
PortIn = $379;
PortOut = $378;
type
TForm1 = class(TForm)
var
Form1: TForm1;
valInputs: integer;
implementation
{$R *.dfm}
{Definição das funções da DLL.}
function inportb(EndPorta: Integer): BYTE stdcall; external 'inpout32.DLL' name 'Inp32';
procedure outportb(EndPorta: Integer; Valor:BYTE); stdcall; external 'inpout32.DLL' name 'Out32';
procedure Tform1.OnD0;begin
outportb(PortOut,BIT0); // 0000-0001
end;
procedure Tform1.OnD1;begin
outportb(PortOut,BIT1); // 0000-0010
end;
//Isso até D7, mudando o BIT
Para desacionar as saídas, vai de uma só vez.
procedure Tform1.Off_D0D7;
begin
outportb($378,0); //Desliga todos os pinos do Registro de Dados.
end;
// Evento Timer
procedure TForm1.Timer1Timer(Sender: TObject);
var
valor: Byte;
begin
// Aqui preciso mandar para um edit a soma em decimal do estado das entradas.
//Se puder dar uma explicação, aí posso entender como isso funciona.
end;
Discussão (2)
Carregando comentários...