Relaiskarte über LPT ansteuern (Delphi)

Wer eine günstige Möglichkeit sucht um Geräte mit dem PC ein- und ausschalten zu können, wird sich für Relaiskarten interessieren. Sie sind bereits für 25 Euro als Bausatz zu haben und reichen für viele kleine Aufgaben, etwa dem zeitgesteuerten Einschalten verschiedener Lichtquellen oder gar Wasserpumpen während des Urlaubs, vollkommen aus.

Ich habe mich für eine Relaiskarte von Kemo entschieden. Diese wird via LPT mit dem PC verbunden und kann anschließend mit der mitgelieferten Software (DOS – Windows XP) bzw einer Eigenentwicklung angesteuert werden.

Da mir die Software, die der Relaiskarte beilag, für meine Zwecke ungeeignet erschien, entschloss ich mich für letzeres. Besonders einfach lässt sich der LPT-Port, an dem die Relaiskarte hängt, mit Delphi ansteuern. Am leichtesten geht dies mit der DLL inpout32.dll, die auf logix4u.net zum Download bereitsteht. Der folgende Code binded inpout32.dll in ein Delphi Programm ein:

procedure Out32(wAddr:word;bOut:byte); stdcall; external ‘inpout32.dll’
function Inp32(wAddr:word):integer; stdcall; external ‘inpout32.dll’

Um anschließend einen Wert an den LPT-Port zu senden genügt Out32($378,$02); – mit diesen Parametern wird z.B. eine 2 an den 1. LPT-Port gesendet. Um von dem LPT zu lesen benutzt man Inp32($378).