So Leute langsam geht’s los und ich werde Euch wohl wieder ausgiebig beanspruchen.
Den Anfang macht ein Script für eine 10er Cartwall in Verbindung mit einem IOWarrior 40. Ich bin bis zu einem gewissen Punkt gekommen und ja ich weiß das geht an der einen oder anderen Stelle noch eleganter.
Wo ich jetzt aber einen Blackout habe (fragt mich bitte nicht warum), ist die Start/Stop-procedure vermutlich raucht mir gerade nur der Schädel zu sehr und die Lösung ist mal wieder näher als ich denke. Aber vielleicht kann mir hier jemand bei der Start/Stop-procedure helfen?
const
PORTS = 40;
PLAYERS = 10;
var
CwPorts: array [0..2, 0..9] of float;
blinkflag: boolean;
// XXXXXXXXXXXXXXXXXXXX OnLoad XXXXXXXXXXXXXXXXXXXX
procedure OnLoad;
var
i, j: integer;
begin
CwPorts[0,0]=0.0; CwPorts[1,0]=1.2; CwPorts[2,0]=2.4;
CwPorts[0,1]=0.1; CwPorts[1,1]=1.3; CwPorts[2,1]=2.5;
CwPorts[0,2]=0.2; CwPorts[1,2]=1.4; CwPorts[2,2]=2.6;
CwPorts[0,3]=0.3; CwPorts[1,3]=1.5; CwPorts[2,3]=2.7;
CwPorts[0,4]=0.4; CwPorts[1,4]=1.6; CwPorts[2,4]=3.0;
CwPorts[0,5]=0.5; CwPorts[1,5]=1.7; CwPorts[2,5]=3.1;
CwPorts[0,6]=0.6; CwPorts[1,6]=2.0; CwPorts[2,6]=3.2;
CwPorts[0,7]=0.7; CwPorts[1,7]=2.1; CwPorts[2,7]=3.3;
CwPorts[0,8]=1.0; CwPorts[1,8]=2.2; CwPorts[2,8]=3.4;
CwPorts[0,9]=1.1; CwPorts[1,9]=2.3; CwPorts[2,9]=3.5;
EnableTimer(300);
blinkflag = true;
end;
// XXXXXXXXXXXXXXXXXXXX OnTimer XXXXXXXXXXXXXXXXXXXX
procedure OnTimer;
// XXXXXXXXXXXXXXXXXXXX PlayerStart/Stop XXXXXXXXXXXXXXXXXXXX
procedure SetButton(PlayerIndex: integer; cTButtonState);
var
begin
end;
// XXXXXXXXXXXXXXXXXXXX StateCahnge XXXXXXXXXXXXXXXXXXXX
procedure OnCartwallPlayerStateChange(PlayerIndex: integer; OldState: TPlayerState; NewState: TPlayerState);
var
i, j: integer;
begin
for j := 0 to 9 do begin
if (PlayerIndex = [j]) and (NewState = psLoaded) then begin
IOWarriorRemote(0).SetPort(CwPorts[1,j] = true);
end;
if (PlayerIndex = [j]) and (NewState = psEmpty) then begin
IOWarriorRemote(0).SetPort(CwPorts[1,j] = false);
end;
end;
end;
// XXXXXXXXXXXXXXXXXXXX OnStart XXXXXXXXXXXXXXXXXXXX
procedure OnCartwallPlayerStart(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem);
var
i, j : integer;
begin
for j := 0 to 9 do begin
if (PlayerIndex = [j]) then begin
IOWarriorRemote(0).SetPort(CwPorts[1,j] = false);
IOWarriorRemote(0).SetPort(CwPorts[2,j] = true);
end;
end;
end;
// XXXXXXXXXXXXXXXXXXXX OnStop XXXXXXXXXXXXXXXXXXXX
procedure OnCartwallPlayerStop(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem; Duration: TTimeValue);
var
i, j : integer;
begin
for j := 0 to 9 do begin
if (PlayerIndex = [j]) then begin
IOWarriorRemote(0).SetPort(CwPorts[2,j] = false);
IOWarriorRemote(0).SetPort(CwPorts[1,j] = true);
end;
end;
end;
// XXXXXXXXXXXXXXXXXXXX OnEOF XXXXXXXXXXXXXXXXXXXX
procedure OnCartwallPlayerEOFWarning(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem);
var
i, j : integer;
begin
for j := 0 to 9 do begin
if (PlayerIndex = [j]) then begin
if blinkflag = true then begin
IOWarriorRemote(0).SetPort(CwPorts[2,j] = false);
else begin
IOWarriorRemote(0).SetPort(CwPorts[2,j] = true);
end;
end;
end;
begin
end.