Porta Paralela no Lazarus

Iniciado por athlon128b, 23 de Outubro de 2007, 17:03

tópico anterior - próximo tópico

athlon128b

     Sempre desenvolvi pequenas automações com a porta paralela no Windows com o Delphi,
Depois de alguns anos que migrei para o Gnu/Linux , senti falta de uma IDE que trouxesse a mesma simplicidade de programar e de distribuir o executável gerado ,pois a maioria das IDEs no linux que trabalham com a linguagem C++ precisam de makefiles , etc..    Já com o Lazarus basta compilar o projeto e rodar o programa em qualquer outra distribuição.
     Gostaria de compartilhar com o pessoal os camandos e funções do Lazarus para ter acesso á porta paralela:

Segue abaixo um exemplo da minha Unit.pas

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Ports,
  StdCtrls, ExtCtrls, Buttons;  //usei a  Ports

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{ TForm1 }

// Funcao para carregar o ioperm a partir da libc
function ioperm(from: Cardinal; num: Cardinal; turn_on: Integer): Integer; cdecl; external 'libc';

procedure TForm1.FormCreate(Sender: TObject);
begin
  ioperm($378, 3 ,1); // se o ioperm retorna -1 acesso negado     se retorna 0 OK
  If (ioperm($378, 3 ,1) ) = -1 then
   showmessage('Voce nao tem acesso aos recursos do sistema , peca ao administrador do sistema para executar o programa');
  If (ioperm($378, 3 ,1) ) = 0 then
  port[$378] := 0; // com este comando você aciona os pinos de saída da porta paralela.
end;