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