ROGERCOM – Curso C/C++ Porta Paralela – www.rogercom.com
COMANDOS EM DELPHI PARA ACESSAR A PORTA PARALELA
(Para aqueles que programam em Delphi)
Na listagem abaixo, estão escritas as duas funções básicas em DELPH I para
enviar e receber sinais através da Porta Paralela, e mais três para conversão de
Byte (8 bits), Word (16 bits) e Dword(32 bits), em string de caracteres.
Em breve estarei disponibilizando mais funções para manipulação de bits.
Funções em DELHPI: Para acesso à Porta Paralela e conversão de números em string binária
//Funções escritas em DELPHI para enviar, receber e conversão
//sinais da Porta Paralela;
//Curso On-line ROGERCOM;
//Copyright(c) 1999-2002 ROGERCOM;
//Todos os direitos reservados;
//www.rogercom.com
//[email protected]
//------------------------------------------------------------------------------------------------------------------------------------unit DB25;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
type TPorta = class(TComponent)
Procedure Envia(PortaEnd:WORD; Valor:BYTE);
Function Recebe(PortaEnd: WORD ):BYTE;
Function ByteParaBin8(Valor: BYTE ):string;
Function WordParaBin16(Valor: WORD ):string;
Function DwordParaBin32(Valor: DWORD ):string;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Porta: TPorta;
const
ENDBASE = $378;
ENDDADOS = ENDBASE + 0;
//$378
ENDSTATUS = ENDBASE + 1;
//$379
ENDCONTROLE = ENDBASE + 2; //$37A
Aula09 - Módulo01 / Página 50
ROGERCOM – Curso C/C++ Porta Paralela – www.rogercom.com
implementation
{$R *.DFM}
//----------------------------------------------------------------------------//Procedure que envia um byte para a Porta Paralela.
//----------------------------------------------------------------------------Procedure TPorta.Envia(PortaEnd:Word; Valor:byte);
begin
asm
mov dx, PortaEnd
mov al,Valor
out dx, al
end;
end;
//--------------------------------------------------------------------//Função que recebe um byte da Porta Paralela.
//--------------------------------------------------------------------Function TPorta.Recebe(PortaEnd: Word ):Byte;
Var
ret:byte;
begin
asm
mov dx, PortaEnd
in al,dx
mov ret,al
end;
Result := ret;
end;
//--------------------------------------------------------------------------------------------------//Função que converte uma variável 8 bits em string binária (8 bits).
//--------------------------------------------------------------------------------------------------Function TPorta.ByteParaBin8(Valor: BYTE ):string;
Var
BitMask:byte;
Var
cont:byte;
Var
StrBin:string;
begin
for cont := 0 to 7 do
begin
BitMask := $80;
//10000000
BitMask := BitMask shr cont;
if (Valor and BitMask) = BitMask then
StrBin := StrBin + '1'
else
StrBin := Strbin + '0';
end;
Result := StrBin;
end;
Aula09 - Módulo01 / Página 51
ROGERCOM – Curso C/C++ Porta Paralela – www.rogercom.com
//-----------------------------------------------------------------------------------------------------//Função que converte uma variável 16 bits em string binária (16 bits).
//-----------------------------------------------------------------------------------------------------Function TPorta.WordParaBin16(Valor: WORD ):string;
Var
BitMask:Word;
Var
cont:byte;
Var
StrBin:string;
begin
for cont := 0 to 16 do
begin
BitMask := $8000;
//10000000-00000000
BitMask := BitMask shr cont;
if (Valor and BitMask) = BitMask then
StrBin := StrBin + '1'
else
StrBin := Strbin + '0';
end;
Result := StrBin;
end;
//-----------------------------------------------------------------------------------------------------//Função que converte uma variável 32 bits em string binária (32 bits).
//-----------------------------------------------------------------------------------------------------Function TPorta.DWordParaBin32(Valor: DWORD ):string;
Var
BitMask:DWord;
Var
cont:byte;
Var
StrBin:string;
begin
for cont := 0 to 32 do
begin
BitMask := $80000000;
//10000000-00000000-00000000-00000000
BitMask := BitMask shr cont;
if (Valor and BitMask) = BitMask then
StrBin := StrBin + '1'
else
StrBin := Strbin + '0';
end;
Result := StrBin;
end;
end. //FIM
Faça download de um projeto exemplo de conversão de string binária:
http://www.rogercom.com/CursoOnline/Modulo01/Exemplo.zip
Aula09 - Módulo01 / Página 52
Download

COMANDOS EM DELPHI PARA ACESSAR A PORTA PARALELA