ich schreibe Dir später/morgen das Script um. Am Blinken bin ich noch dran.
Eine programmiertechnisch noch unschicke Blinkvariante kann ich Dur schon liefern, die saubere von Torben dauert noch etwas…
[code]procedure OnPlayerStart(PlayerControl: IPlayerControl; Item: IPlaylistItem);
begin
if (PlaylistIndex= 0) and (PlayerIndex= 1) then begin
IOWarriorRemote(0).SetPort(31, true);
end;
end;
begin
if (PlaylistIndex= 0) and (PlayerIndex= 1) then begin
IOWarriorRemote(0).SetPort(31, false);
end;
end;
procedure OnPlayerEOFWarning(PlaylistIndex: integer; Duration: TTimeValue; PlayerIndex: integer);
var
i : integer;
begin
if (PlaylistIndex= 0) and (PlayerIndex= 1) then begin
IOWarriorRemote(0).SetPort(31, true);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(31, false);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(31, true);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(31, false);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(31, true);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(31, false);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(31, true);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(31, false);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(31, true);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(31, false);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(31, true);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(31, false);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(31, true);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(31, false);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(31, true);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(31, false);
[code]procedure OnPlayerStart(PlaylistIndex: integer; PlayerIndex: integer; Duration: TTimeValue; Item: IPlaylistItem);
begin
if (PlaylistIndex= 0) and (PlayerIndex= 0) then begin
IOWarriorRemote(0).SetPort(30, true);
end;
end;
begin
if (PlaylistIndex= 0) and (PlayerIndex= 0) then begin
IOWarriorRemote(0).SetPort(30, false);
end;
end;
procedure OnPlayerEOFWarning(PlaylistIndex: integer; Duration: TTimeValue; PlayerIndex: integer);
var
i : integer;
begin
if (PlaylistIndex= 0) and (PlayerIndex= 0) then begin
IOWarriorRemote(0).SetPort(30, true);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(30, false);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(30, true);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(30, false);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(30, true);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(30, false);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(30, true);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(30, false);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(30, true);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(30, false);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(30, true);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(30, false);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(30, true);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(30, false);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(30, true);
for i := 1 to 5000 do;
Sleep(750);
IOWarriorRemote(0).SetPort(30, false);
[code]procedure OnPlayerStart(PlaylistIndex: integer; PlayerIndex: integer; Duration: TTimeValue; Item: IPlaylistItem);
begin
if (PlaylistIndex= 0) and (PlayerIndex= 0) then begin
IOWarriorRemote(0).SetPort(30, true);
end;
end;
Also das mit dem Sleep ist eine ganz dumme Sache, weil nämlich die gesamte Scriptbearbeitung (auch von anderen Notification Scripts!) so lange hängt.
Timo, was ist denn aus der Sache mit OnTimer geworden, die ich dir geschickt habe?
Hier nochmal für die anderen:
const
PORT_COUNT = 40;
var
PortFlashing: array[0..PORT-COUNT-1] of boolean;
FlashCounter: integer;
procedure OnTimer;
var
i: integer;
begin
inc(FlashTimer);
if FlashCounter = 2 then FlashCounter := 0;
for i := 0 to PORT_COUNT - 1 do
if PortFlashing[i] then
IOWarriorRemote(0).SetPort(i, FlashCounter = 1);
end;
procedure OnLoad;
var
i: integer;
begin
for i := 0 to PORT_COUNT - 1 do
PortFlashing[i] := false;
SetTimer(500);
end;
begin
end.
Einfach PortFlashing[nummer] auf true setzen, dann blinkt es.
@Torben: Ich hab mir das mal angescheut, blick nicht ganz durch wie das ganze funtioniert. Wo gebe ich den port an der blinken soll und wie baue ich das ganze in mein script ein.
Habe das ganze versucht blos bringt er mir den Fehler
24.07.2012 15:31:58 Fehler Fehler beim Laden des Benachrichtigungs-Scripts C:\MLScripts\Playertest.mls: [Error] (12:7): Unknown identifier ‘FlashTimer’
Hier das Script:
[code]const
PORT_COUNT = 32;
var
Portflashing: array[0…PORT_COUNT-1] of boolean;
FlashCounter: integer;
procedure OnTimer;
var
i: integer;
begin
inc(FlashTimer);
if FlashCounter = 2 then FlashCounter := 0;
for i := 0 to PORT_COUNT -1 do
if PortFlashing[i] then
IOWarriorRemote(0).SetPort(i, FlashCounter = 1);
end;
procedure OnLoad;
var
i: interger;
begin
for i:= 0 to PORT_COUNT -1 do
Portflashing[i] := false;
SetTimer(500);
end;
procedure OnPlayerStart(PlaylistIndex: integer; PlayerIndex: integer; Item: IPlaylistItem);
begin
if (PlaylistIndex= 0) and (PlayerIndex= 0) then begin
IOWarriorRemote(0).SetPort(30, true);
end;
if (PlaylistIndex= 0) and (PlayerIndex= 1) then begin
IOWarriorRemote(0).SetPort(31, true);
end;
end;
begin
if (PlaylistIndex= 0) and (PlayerIndex= 0) then begin
IOWarriorRemote(0).SetPort(30, false);
end;
if (PlaylistIndex= 0) and (PlayerIndex= 1) then begin
IOWarriorRemote(0).SetPort(31, false);
end;
end;
procedure OnPlayerEOFWarning(PlaylistIndex: integer; PlayerIndex: integer);
var
i : integer;
begin
if (PlaylistIndex= 0) and (PlayerIndex= 0) then begin
PortFlashing[30] := true;
end;
if (PlaylistIndex= 0) and (PlayerIndex= 1) then begin
PortFlashing[31] := true;
end;
end;
auch dann will es nich gehen, hab ich das genaz eigentlich richtig eingebaut??
Eskommt nun dieser Fehler:
25.07.2012 10:52:06 Fehler Fehler beim Laden des Benachrichtigungs-Scripts C:\MLScripts\Playertest.mls: [Error] (12:20): Type mismatch
[code]const
PORT_COUNT = 32;
var
Portflashing: array[0…PORT_COUNT-1] of boolean;
FlashCounter: integer;
procedure OnTimer;
var
i: integer;
begin
inc(FlashCounter);
if FlashCounter = 2 then FlashCounter := 0;
for i := 0 to PORT_COUNT -1 do
if PortFlashing[i] then
IOWarriorRemote(0).SetPort(i, FlashCounter = 1);
end;
procedure OnLoad;
var
i: interger;
begin
for i:= 0 to PORT_COUNT -1 do
Portflashing[i] := false;
SetTimer(500);
end;
procedure OnPlayerStart(PlaylistIndex: integer; PlayerIndex: integer; Item: IPlaylistItem);
begin
if (PlaylistIndex= 0) and (PlayerIndex= 0) then begin
IOWarriorRemote(0).SetPort(30, true);
end;
if (PlaylistIndex= 0) and (PlayerIndex= 1) then begin
IOWarriorRemote(0).SetPort(31, true);
end;
end;
begin
if (PlaylistIndex= 0) and (PlayerIndex= 0) then begin
IOWarriorRemote(0).SetPort(30, false);
end;
if (PlaylistIndex= 0) and (PlayerIndex= 1) then begin
IOWarriorRemote(0).SetPort(31, false);
end;
end;
procedure OnPlayerEOFWarning(PlaylistIndex: integer; PlayerIndex: integer);
var
i : integer;
begin
if (PlaylistIndex= 0) and (PlayerIndex= 0) then begin
PortFlashing[30] = true;
end;
if (PlaylistIndex= 0) and (PlayerIndex= 1) then begin
PortFlashing[31] = true;
end;
end;
var
Portflashing: array[0…PORT_COUNT-1] of boolean;
FlashCounter: integer;
procedure OnTimer;
var
i: integer;
begin
FlashCounter:= FlashCounter+1;
if FlashCounter = 2 then FlashCounter := 0;
for i := 0 to PORT_COUNT -1 do
if PortFlashing[i] then
IOWarriorRemote(0).SetPort(i, FlashCounter = 1);
end;
procedure OnLoad;
var
i: integer;
begin
for i:= 0 to PORT_COUNT -1 do
Portflashing[i] := false;
EnableTimer(500);
end;
procedure OnPlayerEOFWarning(PlaylistIndex: integer; PlayerIndex: integer);
var
i : integer;
begin
if (PlaylistIndex= 0) and (PlayerIndex= 0) then begin
PortFlashing[18] := true;
end;
if (PlaylistIndex= 0) and (PlayerIndex= 1) then begin
PortFlashing[19] := true;
end;
end;
procedure OnPlayerStart(PlaylistIndex: integer; PlayerIndex: integer; Item: IPlaylistItem);
begin
if (PlaylistIndex= 0) and (PlayerIndex= 0) then begin
PortFlashing[18] := false;
IOWarriorRemote(0).SetPort(18, true);
end;
if (PlaylistIndex= 0) and (PlayerIndex= 1) then begin
PortFlashing[19] := false;
IOWarriorRemote(0).SetPort(19, true);
end;
end;
begin
if (PlaylistIndex= 0) and (PlayerIndex= 0) then begin
PortFlashing[18] := false;
IOWarriorRemote(0).SetPort(18, false);
end;
if (PlaylistIndex= 0) and (PlayerIndex= 1) then begin
PortFlashing[19] := false;
IOWarriorRemote(0).SetPort(19, false);
end;
end;
begin
end.
[/code]
Gibt es eigentlich irgendwie eine Übersicht der Scriptbefehle??
Würde auch gerne ein wenig rumprobieren und ein paar Fuktionen einbauen. Aber dazu muss man erst mal wissen was es für Befehle gibt und was Sie zurückliefern.