PAL wacht niet bij WaitForTime

Voor vragen over Playlist Automation Language.
Gesloten
GZO Den Helder

PAL wacht niet bij WaitForTime

Ongelezen bericht door GZO Den Helder »

Hallo denkers,

ik wil een mp.3 om 00:30:00 starten. Niet zo bijzonder toch??
Het PAL script heb ik bijgevoegd, kijk maar eens.
Bij mij wacht ie niet bij WaitForTime , waardoor de Queue volloopt.

heb ik iets over het hoofd gezien?
Graag uw advies
Groet

GZO
Wouter
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
drOhimself

Re: PAL wacht niet bij WaitForTime

Ongelezen bericht door drOhimself »

Je hebt dit staan :

Code: Selecteer alles

var OldTime: DateTime;
OldTime:=Now;
PAL.Loop:=True;
PAL.WaitForTime('00:30:00');
queue.addfile('E:\SAM muziek\Doornroosje\Gemini Doornroosje.mp3',iptop);
Volgens mij moet je altijd

Code: Selecteer alles

PAL.Loop:=True;
bovenaan zetten.

Tenzij je het eenmalig wilt toevoegen, dan moet de 'LOOP' er gewoon uit.

Maar vertel eens wat je precies wilt, dat er gebeurt.
Want ik begrijp niet waarvoor je de variabele OldTime erbij zet.
Ik denk dat je alleen de + bent vergeten.

Code: Selecteer alles

PAL.WaitForTime('+00:30:00');
GZO Den Helder

Re: PAL wacht niet bij WaitForTime

Ongelezen bericht door GZO Den Helder »

Hallo Dr O,

PAL.Loop:=true weet ik. Zit ook in het originele script.
De Oldtime is nodig als SAM een herstart maakt, zie info uit de PAL Quick Start Guide hieronder:


There is a subtle logical issue you need to be aware of as a PAL developer.

Say you have this PAL script:
PAL.Loop := True;
PAL.WaitForTime('10:00:00');
WriteLn('It is now 10am in the morning');
PAL.WaitForTime('20:00:00');
WriteLn('It is now 8pm in the afternoon');
PAL.WaitForTime('23:59:59');

If this script is started at 7am in the morning, then it will work as expected. SAM will wait till 10AM, write the message, wait till 8pm, write the message, and then wait till 1 second before midnight before the script is restarted - ready for the next day.

However, if this script is started at 5pm, then SAM will check the first PAL.WaitForTime('10:00'); and realize that 10am < 5pm, so it will not wait and immediately print out the message "It is now 10am in the morning". Then from this point onward it will work as expected - i.e. wait till 8pm, write the message, and then wait till 1 second before midnight before the script is restarted - ready for the next day.

More advanced PAL developers know this and write slightly more complex scripts to skip over sections of the day that already passed them by without executing the code. We provide one quick example of how this can be achieved - although there are many other methods that may be used.

var OldTime : DateTime;
OldTime := Now; {Get the time the script started}

PAL.Loop := True;
PAL.WaitForTime('10:00:00');
if (OldTime<=T['10:00:00']) then WriteLn('It is now 10am in the morning');
PAL.WaitForTime('20:00:00');
if (OldTime<=T['20:00:00']) then WriteLn('It is now 8pm in the afternoon');
PAL.WaitForTime('23:59:59');




Wat er gebeurd is dat het script niet blijft wachten bij WaitForTime maar door loopt en door de Loop m'n Queue volloopt met Doornroosje.... [smilie=prankster2.gif]

Groet

GZO
Wouter
drOhimself

Re: PAL wacht niet bij WaitForTime

Ongelezen bericht door drOhimself »

Handig !
Wist ik niet....weer wat geleerd vandaag !
drOhimself schreef:Ik denk dat je alleen de + bent vergeten.

Code: Selecteer alles

PAL.WaitForTime('+00:30:00');
GZO Den Helder

Re: PAL wacht niet bij WaitForTime

Ongelezen bericht door GZO Den Helder »

+ ervoor betekend volgens mij 30 min na nu.
ik wil om half een s'nachts die mp3 draaien en volgens mij is dat dan PAL.WaitForTime('00:30:00') al of niet met een T ervoor. Dat weet ik niet.
Zie beneden weer een copy uit PAL Quick Start Guide.
En waarom het script dus doorloopt bij mij blijft een raadsel [smilie=prankster2.gif]

Groet
GZO
Wouter

Few quick examples:
D := T['13:00:00']; {1pm today}
D := T['+00:00:10']; {10 seconds from now}
D := 1 + T['+00:00:10']; {Tomorrow, 10 seconds from now}
Gebruikersavatar
Wout
Beheerder
Berichten: 3522
Lid geworden op: 03 dec 2007, 14:17
SAM-versie: 2019.3
Database: MariaDB
Windows: 11
Locatie: West-Brabant
Contacteer:

Re: PAL wacht niet bij WaitForTime

Ongelezen bericht door Wout »

Script loopt door omdat de tijd is geweest.
De dag begint vanaf 00:00 t/m 23:59:59.
Als het later is dan 00:30 geldt de voorwaarde niet meer tot dat het komt bij een tijd die nog niet is geweest.

Zal een voorbeeld-script geven. dan zal het een en ander inzichtelijk worden.

Code: Selecteer alles

PAL.Loop := True ;

	PAL.WaitForTime('00:00:00') ;
		WriteLn('ik verschijn als 0:00 is geweest') ;
	PAL.WaitForTime('06:00:00') ;
		WriteLn('ik verschijn als 06:00 is geweest') ;
	PAL.WaitForTime('12:00:00') ;
		WriteLn('ik verschijn als 12:00 is geweest') ;
	PAL.WaitForTime('18:00:00') ;
		WriteLn('ik verschijn als 18:00 is geweest') ;
	PAL.WaitForTime('23:00:00') ;
		WriteLn('ik verschijn als 23:00 is geweest') ;
Afbeelding
GZO Den Helder

Re: PAL wacht niet bij WaitForTime

Ongelezen bericht door GZO Den Helder »

daarom had ik al eerder onderstaand gedeelte uit PAL Quik User Guide gekopieerd.
Daarin staat dat je met Oldtime tijd corrigeert.
Dus, waarom loopt WaitForTime toch door???

Groeten
GZO
Wouter


There is a subtle logical issue you need to be aware of as a PAL developer.

Say you have this PAL script:
PAL.Loop := True;
PAL.WaitForTime('10:00:00');
WriteLn('It is now 10am in the morning');
PAL.WaitForTime('20:00:00');
WriteLn('It is now 8pm in the afternoon');
PAL.WaitForTime('23:59:59');

If this script is started at 7am in the morning, then it will work as expected. SAM will wait till 10AM, write the message, wait till 8pm, write the message, and then wait till 1 second before midnight before the script is restarted - ready for the next day.

However, if this script is started at 5pm, then SAM will check the first PAL.WaitForTime('10:00'); and realize that 10am < 5pm, so it will not wait and immediately print out the message "It is now 10am in the morning". Then from this point onward it will work as expected - i.e. wait till 8pm, write the message, and then wait till 1 second before midnight before the script is restarted - ready for the next day.

More advanced PAL developers know this and write slightly more complex scripts to skip over sections of the day that already passed them by without executing the code. We provide one quick example of how this can be achieved - although there are many other methods that may be used.

var OldTime : DateTime;
OldTime := Now; {Get the time the script started}

PAL.Loop := True;
PAL.WaitForTime('10:00:00');
if (OldTime<=T['10:00:00']) then WriteLn('It is now 10am in the morning');
PAL.WaitForTime('20:00:00');
if (OldTime<=T['20:00:00']) then WriteLn('It is now 8pm in the afternoon');
PAL.WaitForTime('23:59:59');
Gebruikersavatar
Wout
Beheerder
Berichten: 3522
Lid geworden op: 03 dec 2007, 14:17
SAM-versie: 2019.3
Database: MariaDB
Windows: 11
Locatie: West-Brabant
Contacteer:

Re: PAL wacht niet bij WaitForTime

Ongelezen bericht door Wout »

Dan klopt het toch, dat het door loopt.
En waarom het script dus doorloopt bij mij blijft een raadsel
Als je dat bekijkt met jouw script zit er toch geen verschil in met mijn script.

Het enige wat je extra heb gedaan is een variabele (oldtime) toegewezen in het geheugen om vervolgens niks mee te doen.
In het voorbeeld dat je steeds geeft van de PAL handleiding staat 2x gegeven hoe je het moet gebruiken.
Vergelijk jouw script met die van de PAL-voorbeeld en ga vergelijken, dan zal je het antwoord erin vinden. :D
Afbeelding
GZO Den Helder

Re: PAL wacht niet bij WaitForTime

Ongelezen bericht door GZO Den Helder »

Heren,

het heeft wat hoofdbrekens gekost, maar we zijn er uit!!!! [smilie=yahoo.gif]

PAL.WaitForTime kan NIET in meerdere PAL scripts tegelijk draaien

We hadden 3 scripts draaien. Voor 23.30 uur de eerste, voor 00.30 de tweede en 01.30 de derde.
Dat heeft blijkbaar conflicten met elkaar.
De 3 tijden in één script gaat dus prima

Dus het is Opgelost, hoi hoi

Groeten
Wouter
GZO
drOhimself

Re: PAL wacht niet bij WaitForTime

Ongelezen bericht door drOhimself »

GZO Den Helder schreef: PAL.WaitForTime kan NIET in meerdere PAL scripts tegelijk draaien

ONZIN !
Gebruikersavatar
Wout
Beheerder
Berichten: 3522
Lid geworden op: 03 dec 2007, 14:17
SAM-versie: 2019.3
Database: MariaDB
Windows: 11
Locatie: West-Brabant
Contacteer:

Re: PAL wacht niet bij WaitForTime

Ongelezen bericht door Wout »

Ik kan helaas ook niet achter staan met je stelling over meerdere PAL-scripts.
Ten eerste is het fijn dat je probleem is opgelost, maar ik geloof niet dat het Wait-geval de oplossing was,
ik denk zelf aan iets anders.

Ik zelf draai met 7 PAL-script die toch iedere 10 seconden met 'iets' bezig zijn.
Ik heb dan nooit maar dan echt nooit problemen gehad met de Wait-commando van een andere PAL.

Het is voor jouw een logische oplossing maar onjuist,
ik probeer te verkomen dan men straks bang is om meerder PAL`s te gaan draaien in SAM.
Afbeelding
GZO Den Helder

Re: PAL wacht niet bij WaitForTime

Ongelezen bericht door GZO Den Helder »

Heren,

jullie hebben gelijk en het is toch weer fout [smilie=dash2.gif]

Bij de eerste PAL.waitForTime wachtte PAL prima.
Daarna ging hij in een lus. Gaat door de tweede en derde tijd en begint weer opnieuw. De queue loopt helemaal vol.

Dus weet ik het niet meer [smilie=crazy.gif]

Hier is het script, wie schiet er op ???

Groet

Wouter
GZO
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
drOhimself

Re: PAL wacht niet bij WaitForTime

Ongelezen bericht door drOhimself »

Hieronder nog even het 'complete' script :

Code: Selecteer alles

PAL.loop:=true;
PAL.waitfortime(T['22:30:45']);
queue.addfile('E:\SAM muziek\Doornroosje\Gemini Doornroosje.mp3',iptop);
PAL.waitfortime(T['00:30:45']);
queue.addfile('E:\SAM muziek\Doornroosje\Gemini Doornroosje.mp3',iptop);
PAL.waitfortime(T['01:30:45']);
queue.addfile('E:\SAM muziek\Doornroosje\Gemini Doornroosje.mp3',iptop);
Mag duidelijk zijn wat hier aan de hand is.
In het leven van een PALscript is er maar één ding belangrijk, en dat is dat er maar één dag bestaat.
Die dag begint om 0:00:00 en eindigd op 23:59:59
Dus als je bij de eerste gebeurtenis begint en dan doorloopt naar de volgende, en dan de laatste......
Dan ziet het er zo uit :

Code: Selecteer alles

PAL.loop:=true;
PAL.waitfortime(T['00:30:45']);
queue.addfile('E:\SAM muziek\Doornroosje\Gemini Doornroosje.mp3',iptop);
PAL.waitfortime(T['01:30:45']);
queue.addfile('E:\SAM muziek\Doornroosje\Gemini Doornroosje.mp3',iptop);
PAL.waitfortime(T['22:30:45']);
queue.addfile('E:\SAM muziek\Doornroosje\Gemini Doornroosje.mp3',iptop);
//met deze regel laat je het script wachten tot aan het einde van de dag.
PAL.waitfortime(T['23:59:59']);
Succes !
GZO Den Helder

Re: PAL wacht niet bij WaitForTime

Ongelezen bericht door GZO Den Helder »

Hallo Dr O,

hartelijk dank voor de uitleg. Als je het weet, is het simpel. Maar ja, dat geldt voor alles................

Het draait nu perfect, TOP !!

Groeten

Wouter
GZO
drOhimself

Re: PAL wacht niet bij WaitForTime

Ongelezen bericht door drOhimself »

GZO Den Helder schreef:hartelijk dank voor de uitleg.
Graag gedaan, daar zijn we voor !
GZO Den Helder schreef:Als je het weet, is het simpel. Maar ja, dat geldt voor alles................
Klopt helemaal, we hebben allemaal leren fietsen en met vallen en opstaan zijn we er gekomen....
GZO Den Helder schreef:Het draait nu perfect, TOP !!
Ben daar blij om !
Ik gooi er een slotje op...!
Gesloten
  • Vergelijkbare Onderwerpen
    Reacties
    Weergaves
    Laatste bericht