PAL wacht niet bij WaitForTime
-
GZO Den Helder
PAL wacht niet bij WaitForTime
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
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
Je hebt dit staan :
Volgens mij moet je altijd
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
var OldTime: DateTime;
OldTime:=Now;
PAL.Loop:=True;
PAL.WaitForTime('00:30:00');
queue.addfile('E:\SAM muziek\Doornroosje\Gemini Doornroosje.mp3',iptop);Code: Selecteer alles
PAL.Loop:=True;
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
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
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
Handig !
Wist ik niet....weer wat geleerd vandaag !
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
+ 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}
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}
- 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
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.
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') ;-
GZO Den Helder
Re: PAL wacht niet bij WaitForTime
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');
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');
- 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
Dan klopt het toch, dat het door loopt.
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.
Als je dat bekijkt met jouw script zit er toch geen verschil in met mijn script.En waarom het script dus doorloopt bij mij blijft een raadsel
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.
-
GZO Den Helder
Re: PAL wacht niet bij WaitForTime
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
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
GZO Den Helder schreef: PAL.WaitForTime kan NIET in meerdere PAL scripts tegelijk draaien
ONZIN !
- 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
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.
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.
-
GZO Den Helder
Re: PAL wacht niet bij WaitForTime
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
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
Hieronder nog even het 'complete' script :
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 :
Succes !
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);
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']);
-
GZO Den Helder
Re: PAL wacht niet bij WaitForTime
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
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
Graag gedaan, daar zijn we voor !GZO Den Helder schreef:hartelijk dank voor de uitleg.
Klopt helemaal, we hebben allemaal leren fietsen en met vallen en opstaan zijn we er gekomen....GZO Den Helder schreef:Als je het weet, is het simpel. Maar ja, dat geldt voor alles................
Ben daar blij om !GZO Den Helder schreef:Het draait nu perfect, TOP !!
Ik gooi er een slotje op...!
-
- Vergelijkbare Onderwerpen
- Reacties
- Weergaves
- Laatste bericht

