Background Script - Cartwall EOF Warnung geht nicht

Hallo,
bevor ich hier loslege wollte ich mich erstmal kurz vorstellen. Also ich bin der Frank aus der Nähe von Düsseldorf, 55 Jahre jung und Elektroniker. Ich habe hier im Forum schon oft gesucht und bin bis jetzt auch immer fündig geworden, dafür vielen Dank und auch für die vielen interessanten Beiträge, die ich hier gelesen habe. Tolles Forum mit kompetenter Hilfe.
Nun zu meinem (kleinen) Problem. In der Suche bin ich zur 5er Version fündig geworden, allerdings geht das in meiner 6.2.1 Build 4117 Version leider nicht. Ich habe im Background Script 3 Aufrufe zur Cartwall, die nicht gehen:

// Called when cart player is started
procedure OnCartwallPlayerStart(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem);
begin
   COMPORT('COM1').SendStr('4'); //01.04.2020
end;

// Called when cart player is stopped
procedure OnCartwallPlayerStop(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem; Duration: TTimeValue);
begin
    COMPORT('COM1').SendStr('d'); // Cart Player stopp 01.04.2020
end;

// Called when cart player reaches EOF warning point
procedure OnCartwallPlayerEOFWarning(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem);
begin
    COMPORT('COM1').SendStr('D'); //01.04.2020
end;

Alternativ bin ich ausgewichen auf folgenden Aufruf, das geht auch mit Start / Stopp, aber die EOF Warnung fehlt mir leider:

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

Gibt es da irgendeine Möglichkeit, die ich vielleicht übersehen habe?
Danke.

LG Frank


EDIT by Mod - Code formatiert. Bitte das Formatierungszeichen </> im Editfenster benutzen. Das erhöht die Lesbarkeit.
Danke. :slightly_smiling_face:

Moin Frank,

damit müßte es folgendermaßen aussehen:

procedure OnCartwallPlayerStateChange(PlayerIndex: integer;
  OldState: TPlayerState; NewState: TPlayerState;
  Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem;
  OnAirMode: TCartwallOnAirMode);
begin
  if NewState = psPlaying then
  begin
    ComPort('COM1').SendStr('4');
  end
  else if NewState = psStopped then
  begin
    ComPort('COM1').SendStr('d');
  end
  else if NewState = psFlashEOF then
  begin
    ComPort('COM1').SendStr('D');
  end;
end;

begin
end.


Angewandte Grüße

TSD


Nicht nur das: Der Code wird auch nicht beschädigt (Einrückungen, Satzzeichen usw.).

Hallo,

erstmal Danke für die schnelle Hilfe und für die Hinweise zur Lesbarkeit, ich versuche sie zu beherzigen. :grinning:
Ich habe das gerade probiert, aber geht leider nur mit Einschränkungen. Start + Stopp gehen, Blinken macht er leider nicht. Hab die Abfrage zum Blinken mal zum Testen in die Mitte verschoben, hat aber nicht funktioniert. Dann habe ich mal die ASCII Zeichen, die über die COM geschickt werden vertauscht, um sicher zu gehen dass das Kommando “Blinken” (D) an sich von der dahinter liegenden Schaltung auch richtig umgesetzt wird, das hat dann funktioniert.
Sieht so aus, als ob psFlashEOF nicht unterstützt wird.
Kurze Frage dazu, gibt es irgendwo eine Übersicht dazu, also welche “Zustände” in den Prozeduren unterstützt werden?

LG

Verständnisfrage: Blinkt es nicht oder reagiert das Skript nicht auf Blinken? Im ersten Fall bitte prüfen, ob Endblinken überhaupt eingeschaltet ist:



Aktivierte Grüße

TSD

Hallo Tondose,

die Einstellungen die Du hier als Screenshoot abgelegt hast, sind bei mir genauso, nur die EOF Warnung steht auf 10S (Standard). Haken bei "während EOF-Warnung blinken" ist gesetzt (Standard).
Mairlist GUI blinkt auch, aber das Script reagiert leider nicht.
Gruß Frank

OnCartwallPlayerEOFWarning ist richtig, war aber offenbar kaputt. Ich lade gerade Snapshot Build 4177 von 6.2 noch, bitte schau mal, ob es da wieder geht. Fließt dann automatisch auch mit in die 6.3 ein.

Dann reiche ich das mal weiter @Torben.

Ratlose Grüße

TSD


Ach ja, PlayerStates gibt es in dieser nicht eben einleuchtenden Hilfedatei:

mAirListScript.chm.mls (615,8 KB)

(Weil das Forum beim Hochlad meckert, bitte im Dateinamen das .mls löschen.)

Prima,

werde ich heute Abend probieren und Feedback geben, muss nun zur Arbeit.

Vielen Dank an euch 2, für die Unterstützung.

LG Frank

Boah, überschneidet sich das hier! :upside_down_face:

Noch bezüglich der Player-Zustände:

TPlayerState = (
  psEmpty,
  psLoading,
  psLoaded,
  psPlaying,
  psFading,
  psEOF,
  psError,
  psPaused,
  psStopped,
  // virtual states
  psPFL,
  psFlashEOF,
  psNext,
  psPlayed,
  psSkipped,
  psOverflow,
  psUnderrun,
  psRegion,
  psOffAir // for cartwall
);

Alle von “psPFL” abwärts sind “virtuelle” Zustände; die kommen in der Realität (OnPlayerStateChange etc.) nicht vor. Sie sind nur als TPlayerState modelliert, weil so das Auslesen und Verarbeiten der skin.ini vereinfacht wird. Ihr könnt sie in euren Scripts einfach ignorieren.

1 Like

Das heißt,

if NewState = psFlashEOF then …

hätte nicht funktioniert?

Unsichere Grüße

TSD

Genau. Bitte einfach ignorieren.

Hallo,
habe es ausprobiert und kann sagen, dass nun die 3 Aufrufe funktionieren, super :+1:
Getestet mit Snapshot Build 4177 von Version 6.2.

Preformatted text// Called when cart player is started
procedure OnCartwallPlayerStart(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem);
begin
   COMPORT('COM1').SendStr('4'); //01.04.2020
end;

// Called when cart player is stopped
procedure OnCartwallPlayerStop(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem; Duration: TTimeValue);
begin
    COMPORT('COM1').SendStr('d'); // Cart Player stopp 01.04.2020
end;

// Called when cart player reaches EOF warning point
procedure OnCartwallPlayerEOFWarning(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem);
begin
    COMPORT('COM1').SendStr('D'); //01.04.2020
end;

Vielen Dank für die Hilfe und für die Übersicht der einzelnen Player-Zustände.
LG Frank