Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Parallelport unter XP ansteuern (https://www.delphipraxis.net/108675-parallelport-unter-xp-ansteuern.html)

Landfloh 17. Feb 2008 17:18


Parallelport unter XP ansteuern
 
Hallo

Ich bin noch jung programmiere aber sehr gerne in Delphi. :coder:
Jetzt habe ich einen Roboter gebaut und würde in gerne (unter XP) mit Delphi über den Parallelport ansteuern.
In der Programmiersprache QickBasic unter Dos habe ich es schon geschafft nur denke ich das Delphi sehrviel ausgearbeiteter ist.
Nur weiß ich noch garnicht wie ich das anstellen soll :wall: .

Kann mir jemand helfen? :roll:

Gruß Landfloh

dominikkv 17. Feb 2008 17:28

Re: Parallelport unter XP ansteuern
 
Hallo Landfloh

Such mal nach ComPort

ich2 17. Feb 2008 17:29

Re: Parallelport unter XP ansteuern
 
Liste der Anhänge anzeigen (Anzahl: 1)
willkommen in der Delphi-Community!

also ich hatte mal ein kleines Programm geschrieben, um einige LED's zum blinken zu bringen!
Dazu hatte ich damals eine fertige DLL verwendet: INPOUT32.DLL

damit konnte mal daten senden und empfangen!

mfg

Landfloh 17. Feb 2008 17:43

Re: Parallelport unter XP ansteuern
 
Danke Muss ich dann alles gleichzeitig starten?
Die Ausführung Projekt1.exe funktioniert.
Aber wenn ich Unit1 lade dann kommt diese Fehlermeldung: [i][Fataler Fehler] Ausgabedatei 'C:\Dokumente und Einstellungen\Soz1L\Eigene Dateien\Delphi Programme aus Internet\LPT_Port\Project1.exe' kann nicht erstellt werden :wiejetzt:

Danke aber für die schnellen Antworten! :angel:

ich2 17. Feb 2008 17:55

Re: Parallelport unter XP ansteuern
 
...vielleicht irgendwo ein schreibschutz drinnen?

aber die wichtigsten Dinge sind ja nachvollziehbar:

Delphi-Quellcode:
..
var
..
  BasAdr: Integer = $378;
..

implementation

{$R *.dfm}

{Funktionen aus "inpout32.dll" laden:}
procedure Out32 ( Addresse: Integer; Wert: byte ); stdcall; export; external 'INPOUT32.DLL';
function Inp32 ( Addresse: Integer ): Byte; stdcall; export; external 'INPOUT32.DLL';

..
function Init_LPT_Port: Boolean;
begin
  try
   {Alle Bits im Daten-Register setzen:}
   Out32 ( BasAdr, 255 ); {alle Datenausgänge high}
   {Um die 4 Steuerausgänge zu setzen, müssen Bit0,
    Bit1, Bit3 gelöscht und Bit2 gesetzt werden.
    Außerdem wird Bit4 (Interrupt enable) gesetzt
    und Bit5 (bidirektional) gelöscht. Bit6, Bit7
    sind ohne Bedeutung:}
   Out32 ( BasAdr+2, 20 ); {alle Steuerausgänge high}

    {Registerinhalte einlesen und anzeigen:}
    gelesen := Inp32(BasAdr);
    Form1.ListBox1.Items.Add ( 'Parallelport-Daten-Register' );
    Form1.ListBox1.Items.Add ( IntToStr ( gelesen ) );
    gelesen := Inp32(BasAdr+2);
    Form1.ListBox1.Items.Add ( 'Parallelport-Steuer-Register' );
    Form1.ListBox1.Items.Add ( IntToStr ( gelesen ) );

    result := true;
  except
    result := false;
  end;
end; // <- Init_LPT_Port

function Destroy_LPT_Port: Boolean;
begin
  try
   {Alle Bits im Daten-Register löschen:}
   Out32(BasAdr, 0); {alle Datenausgänge low}
   {Um die 4 Steuerausgänge zu setzen, müssen Bit0,
    Bit1, Bit3 gelöscht und Bit2 gesetzt werden.
    Außerdem wird Bit4 (Interrupt enable) gesetzt
    und Bit5 (bidirektional) gelöscht. Bit6, Bit7
    sind ohne Bedeutung:}
   Out32(BasAdr+2, 27); {alle Steuerausgänge low}
   {Registerinhalte einlesen und anzeigen:}
   gelesen := Inp32(BasAdr);
   Form1.ListBox1.Items.Add ( 'Parallelport-Daten-Register' );
   Form1.ListBox1.Items.Add ( IntToStr(gelesen) );
   gelesen := Inp32(BasAdr+2);
   Form1.ListBox1.Items.Add ( 'Parallelport-Steuer-Register' );
   Form1.ListBox1.Items.Add ( IntToStr(gelesen) );

    result := true;
  except
    result := false;
  end;
end; // <- Destroy_LPT_Port

..

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Out32 ( BasAdr, 255 ); {alle Datenausgänge high}
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin

  case blink of
    0..130: begin
              if blink mod 2 = 1 then
                Out32 ( BasAdr, 255 )
              else
                Out32 ( BasAdr, 0 );

              Inc ( Blink );
            end;
    131: begin
           Out32 ( BasAdr, 255 );
           Form1.Timer2.Enabled := false;
           Form1.Timer1.Enabled := true;
         end;
  end;

end;

..

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Out32(BasAdr, 0); {alle Datenausgänge low}
  Destroy_LPT_Port;
end;
mfg

Landfloh 17. Feb 2008 18:05

Re: Parallelport unter XP ansteuern
 
Danke
Ich arbeite mich jetzt mal durch den Quelltext.

Gruß Landfloh :xmas:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz