constructor TControlerBoard.create;
var iIndex: integer;
begin
//Protokoll.Protokolleingang('ControlerBoard', 'Create');
digEingaenge_pruefen := TTimer.Create(
Nil);
digEingaenge_pruefen.OnTimer := fdigEingaenge_pruefen;
digEingaenge_pruefen.Enabled := true;
digEingaenge_pruefen.Interval := 30;
for iIndex := 1
to 2
do Diodenhelligkeit[iIndex] := 150;
bKamerabeleuchtung_angeschaltet := false;
end;
function TControlerBoard.DLLHandle_zuweisen: boolean;
begin
//Protokoll.Protokolleingang('ControlerBoard', 'DLLHandle-Fkt');
Fehlermeldung(300);
try
ControlerDLL := TDLL_Datei.create('
K8055D.DLL');
if ControlerDLL.Vorhanden
then
begin
DLL_Handle := ControlerDLL.Handle;
result := true;
end
else
begin
Fehlermeldung(301);
DLL_Handle := 0;
result := false;
end
except
Fehlermeldung(302);
result := false;
end;
//Protokoll.Protokollausgang('ControlerBoard', 'DLLHandle-Fkt');
end;
function TControlerBoard.DLLFunktionen_laden: boolean;
begin
//Protokoll.Protokolleingang('ControlerBoard', 'DLL-Fkt laden');
try
if DLL_Handle <> 0
then
begin
// Es wurde festgestellt, dass nicht alle Funktionen, die in der DLL vorhanden
// sind wirklich für die Umsetzung des Programmes benötigt werden. Deswegen
// werden hier nur die wirklich verwendeten Funktionen eingebunden, um auch die
// Resourcen für das Programm zu beschränken
@OpenDevice := GetProcAddress(DLL_Handle, '
OpenDevice');
@CloseDevice := GetProcAddress(DLL_Handle, '
CloseDevice');
@ClearAllAnalog := GetProcAddress(DLL_Handle, '
ClearAllAnalog');
@ClearAllDigital := GetProcAddress(DLL_Handle, '
ClearAllDigital');
@ClearAnalogChannel := GetProcAddress(DLL_Handle, '
ClearAnalogChannel');
@ClearDigitalChannel := GetProcAddress(DLL_Handle, '
ClearDigitalChannel');
@OutputAnalogChannel := GetProcAddress(DLL_Handle, '
OutputAnalogChannel');
@SetDigitalChannel := GetProcAddress(DLL_Handle, '
SetDigitalChannel');
@ReadDigitalChannel := GetProcAddress(DLL_Handle, '
ReadDigitalChannel');
result := true;
end
else
begin
Fehlermeldung(303);
result := false;
end
except
Fehlermeldung(304);
result := false;
end;
//Protokoll.Protokollausgang('ControlerBoard', 'DLL-Fkt laden');
end;
function TControlerBoard.Initialising:boolean;
begin
try
if (DLLHandle_zuweisen = true)
and (DLLFunktionen_laden = true)
then
begin
OpenDevice(0);
ClearAllDigital;
// Das ControlerBoard schaltet die Stromversorgung für die Tische, das
// Spleißgerät und die Kamera ein. Deswegen muss es in der BedienForm als
// erstes gestartet werden. Wenn es initialisiert wurde, müssen alle
// digitalen und analogen Ausgänge eingeschaltet werden, damit eine
// erfolgreiche Initialisierung der Tische überhaupt möglich ist.
// Ich werde hier aufgrund der einfacheren Wartung für mögliche Nachfolger
// direkte Funktionen zur Verfügung stellen, die genau die richtigen dig.
// und analogen Ausgänge einschaltet. Damit muss sich später keiner mehr
// gedanken machen, welcher Ausgang wohin gehört (Anhalt ist auch die Liste
// im Kopf dieser Unit) und brauch gegebenenfalls nur die Funktionen an der
// gewünschten Stelle aufrufen.
{Liste der einzuschaltenen Geräte per Funktion hier einfügen}
Stromversorgung_Verschiebetische_einschalten;
Spleissgeraet_einschalten;
Kamerabeleuchtung_einschalten;
// Hier wird ein neues Konzept benötigt, welches die Gerätebeleuchtung rot
// belässt und nur grün anzeigt, wenn das Gerät einsatzbereit ist.
Geraetebeleuchtung_schalten(green);
result := true;
end
else
begin
Fehlermeldung(305);
result := false;
end
except
Fehlermeldung(306);
result := false;
end;
end;
Destructor TControlerboard.Destroy;
begin
{Liste der auszuschaltenen Geräte per Funktion hier einfügen}
alle_anaAusgeange_ausschalten;
alle_digAusgang_ausschalten;
digEingaenge_pruefen.Free;
//Protokoll.Protokollausgang('ControlerBoard', 'Destroy');
end;