Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

device

Ler entradas porta paralela com timer

Recommended Posts

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;



Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos.

 

Amigo device, não sei qual o seu propósito, mas eu escolheria trabalhar com a suíte de componentes ACBr, pois os mesmos já possuem uma gama de componentes para uso voltado a automação. O bom é que você pode baixar os fontes e estudar em cima deles. Acredito que isso poderá te auxiliar bastante, ao menos comigo tem me ajudado muito.

 

Até a próxima. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo Eisenheim

Bom dia.

 

O link que passou está corrompido.

Poderia dispor esses componentes?

meu e-mail é malepobox@gmail.com

Agradeço a ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.