Ganz, ganz schlechte Idee! Damit schickst du das Script in eine Endlosschleife, in der unaufhörlich der Zustand der Encoder-Verbindung abgefragt wird, ohne Pause dazwischen. Achte mal auf die CPU-Auslastung von mAirList, die dürfte kräftig nach oben gehen!
Ich würde das folgendermaßen lösen: Mach dir eine globale Variable “wasDisconnected” vom Typ boolean, in der gespeichert ist, ob die Verbindung zwischenzeitlich getrennt war. Nur wenn das der Fall ist wird das Script im Timer aktiv.
var
wasDisconnected: boolean;
procedure OnLoad;
begin
wasDisconnected := true;
EnableTimer(1000);
end;
procedure OnTimer;
begin
if wasDisconnected and (Encoder.GetConnections.GetItem(1).GetState = ecsConnected) then begin
ExecuteCommand('AUTOMATION 1 ON');
ExecuteCommand('AUTOMATION 1 PLAY');
ExecuteCommand('AUTOMATION 1 OFF');
wasDisconnected := false;
end
else if Encoder.GetConnections.GetItem(1).GetState = ecsDisconnected then
wasDisconnected := true;
end;
begin
end.