OnCartPlayer… funktioniert nicht

Hi Torben,

kann es sein, dass die folgenden OnCartPlayer…-Prozeduren nicht (mehr) funktionieren? Möglicherweise seit der neuen Cartwall?

[tt]// Called when cart player is started
procedure OnCartPlayerStart(PlayerIndex: integer; Item: IPlaylistItem);

// Called when cart player is stopped
procedure OnCartPlayerStop(PlayerIndex: integer; Duration: TTimeValue; Item: IPlaylistItem);

// Called when cart player reaches EOF warning point
procedure OnCartPlayerEOFWarning(PlayerIndex: integer);[/tt]

Ich wollte gerade die EOF-Warnung auswerten und weiterverarbeiten, aber keine der drei Prozeduren wird aufgerufen.
Kannst Du das bei Dir reproduzieren?
Falls sie wirklich nicht mehr funktionieren, könntest Du sie wieder einbauen?

Viele Grüße!

Die Angelegenheit hat sich durch die “multi-tabbed”-Cartwall etwas verkompliziert. Es gibt aktuell nur:

procedure OnCartwallPlayerStateChange(PlayerIndex: integer;
  OldState: TPlayerState; NewState: TPlayerState;
  Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem;
  OnAirMode: TCartwallOnAirMode);
begin
end;

Wobei sich das immer auf die gerade aktive Seite bezieht. Wenn du also von einer Seite mit spielenden Playern auf eine Seite mit nicht spielenden Playern umschaltest, dann wirst du ganz viele Statusänderungen spielt -> stop bekommen. Primär ist die Prozedur dafür gedacht, MIDI-Keypads usw. mit der Anzeige der Cartwall zu synchronisieren.

Workaround, um OnCartPlayerStart und OnCartPlayerStop wieder ans Laufen zu kriegen:

procedure OnCartwallPlayerStateChange(PlayerIndex: integer;
  OldState: TPlayerState; NewState: TPlayerState;
  Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem;
  OnAirMode: TCartwallOnAirMode);
begin
  if NewState = psPlaying then
    OnCartPlayerStart(PlayerIndex, PlaylistItem)
  else if OldState = psPlaying then
    OnCartPlayerStop(PlayerIndex, 0, PlaylistItem);
end;

An die tatsächliche Spiellänge kommt man an der Stelle nicht ran, daher ersatzweise 0 - ich hoffe du wertest sie gar nicht aus :wink:

Ich muss mal schauen, ob ich die alten Prozeduren wieder ans Rennen kriege.

Vielen Dank, Torben.

Play, Stop und die anderen Status werte ich in der Tat bereits durch[tt] OnCartPlayerStateChange [/tt]aus in so ähnlicher Weise, wie Du es beschrieben hast. Das funktioniert auch gut.

Eigentlich wollte ich jetzt nur noch zusätzlich “schnell” :wink: die EOF-Warnung dazubauen, sprich: Ich möchte eine LED blinken lassen, wenn eine Cart den EOF-Warnpunkt erreicht. Bei den Playlist-Playern habe ich das auch über[tt] OnPlayerEOFWarning [/tt]gelöst und wollte es so ähnlich auch für die Cart machen. Erst als ich alles fertig programmiert hatte, habe ich gemerkt, dass die Prozedur gar nicht angesprungen wird.

Die Carts selbst blinken ja bei EOF-Warnung. Kannst Du mit Beginn des Blinkens nicht recht einfach auch wieder[tt] OnCartPlayerEOFWarning [/tt]triggern?

Viele Grüße
Stefan

PS: Bitte markiere doch am besten in [tt] Background Script Template.mls [/tt] die Prozeduren als inaktiv, solange sie nicht mehr funktionieren. Ich schaue da immer mal rein, um zu schauen, ob ich noch von den richtigen Namen (und Parametern :wink: ) ausgehe.

Das stand noch als “to do” bei mir im Sourcecode, daher war es auch nicht aus dem Template entfernt :wink:

Es kommt gleich Build 3158. Testest du das bitte mal für mich? Die neuen Prozeduren lauten:

// Called when cart player is started
procedure OnCartwallPlayerStart(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem);
begin
end;

// Called when cart player is stopped
procedure OnCartwallPlayerStop(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem; Duration: TTimeValue);
begin
end;

// Called when cart player reaches EOF warning point
procedure OnCartwallPlayerEOFWarning(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem);
begin
end;

Genial! Das ging ja mal wieder schnell. :slight_smile:

Es funktioniert:
[tt]19.07.2016 17:57:45 Information (E1) Cart 1 Stopped => Playing Cartplayer-Count: 1
19.07.2016 17:57:46 Information (E1) Cart 6 Stopped => Playing Cartplayer-Count: 2
19.07.2016 17:58:06 Information (9C) Cart-EOF 1 => EOF-Warn EIN Cartplayer-EOF-Count: 1
19.07.2016 17:58:07 Information (9C) Cart-EOF 6 => EOF-Warn EIN Cartplayer-EOF-Count: 2
19.07.2016 17:58:17 Information (9C) Cart-(EOF-)Stop 1 => EOF-Warn EIN Cartplayer-EOF-Count: 1
19.07.2016 17:58:17 Information (E0) Cart 1 Playing => Stopped Cartplayer-Count: 1
19.07.2016 17:58:19 Information (8C) Cart-(EOF-)Stop 6 => EOF-Warn AUS Cartplayer-EOF-Count: 0
19.07.2016 17:58:19 Information (E0) Cart 6 Playing => Stopped Cartplayer-Count: 0
[/tt]

Vielen Dank!

Wie gesagt, stand hier eh auf der To-Do-Liste, ist wohl hinten übergefallen - und die letzten 2 Jahre hat sich noch niemand beschwert :wink: