ON TIME
DESCRIPTION.
Le gestionnaire ON TIME permet d'exécuter une action à intervalle régulier.
L'instruction ON TIME OFF annule l'appel régulier de l'action exécutée par ON TIME.
Le gestionnaire ON TIME LOCAL exécute une action à intervalle régulier tant que l'on se trouve dans un bloc d'instructions.
L'instruction ON TIME LOCAL OFF annule l'appel régulier de l'action exécutée par ON TIME LOCAL.
SYNTAXE.
ON TIME action : RETURN
ON TIME OFF
ON TIME LOCAL action : RETURN
ON TIME LOCAL OFF
REMARQUES.
action peut être :
- une instruction unique à exécuter ;
- une suite d'instructions, séparées par :, à exécuter ;
- un identifiant, tel qu'une procédure ou une fonction personnalisée, à exécuter ;
Le gestionnaire ON TIME, ou minuteur, permet d'appeler une action, par exemple une procédure ou fonction personnalisée, en arrière-plan et à intervalle régulier, sans devoir y faire un appel direct à plusieurs endroit du script.
Une fois un minuteur activé, le controle du programme lui sera donnée environ 4 fois par seconde. Quand ON TIME obtient la priorité sur le programme :
- le déroulement du programme est suspendu ;
- le pointeur d’exécution est sauvegardé dans la pile ;
- action est exécutée ;
. le programme reprend là où il a été interrompu grâce à l'instruction RETURN.
Rappel : un gestionnaire événement, tel que ON TIME, interrompra le cours de l'application en cour, pour exécuter action, que si aucune instruction INPUT, GET, GET$, INKEY(), INKEY$(), SOUND ou WAIT n'a mis le programme en pause, sauf si vous avez chargé et utilisé les routines de la bibliothèque NOWAIT.
Note : soyez attentif à préserver le traitement des données internes lors d'un traitement d'événements par un gestionnaire, car cela pourrait provoquer des comportements inattendus dans le déroulement de l'application. Consulter le manuel du BBC BASIC for SDL 2.0 pour plus de détails sur les interruptions d'un script et leur gestions.
L'instruction composée ON TIME LOCAL, qui doit se trouver uniquement à l'intérieur de la définition d'une procédure ou fonction personnalisée, permet de suspendre et remplacer provisoirement le minuteur du module principal s'il existe, qui redeviendra actif à la sortie de cette procédure ou fonction personnalisée.
L'instruction composée ON TIME OFF stoppe l'exécution du minuteur. Toutefois, toutes les actions en attentes dans la pile des événements seront traitées normalement.
La forme ON SYS TIME OFF stoppe l'exécution le minuteur dans la procédure ou fonction personnalisée correspondante. Si un minuteur est actif dans le module principal, il redevient le gestionnaire par défaut.
La commande système *TIMER permet de modifier la périodicité du minuteur, en millisecondes.
Les routines de la bibliothèque TIMERLIB, permettent de programmer plusieurs minuteurs dans un même script, et/ou de définir une plus grande précision dans la durée des intervalles.
Voir les instructions TIME et TIME$ pour la gestion de la date et de l'heure.
Voir la commande système *TIMER pour modifier la durée du minuteur.
Voir le module eventlib.bbc qui propose des procédures pour une gestion avancée des événements.
Voir le module timerlib.bbc propose des procédure pour améliorer la gestion des minuteurs en grande vitesse.
Pour plus de détails sur les désagréments liées aux interruptions, veuillez consulter les mises en gardes du manuel officiel.
EXEMPLE.
MODE 8
ON TIME PROC_Minuteur : RETURN
PRINT "Appuyer sur une touche pour quitter ... "
kcompteur = 0
REPEAT
kcompteur += 1
PRINT TAB( 40 , 16 ) STR$( kcompteur )
kpause = INKEY( 7 )
UNTIL kpause <> -1
CLS
PRINT "Fin du test. Au revoir."
END
DEF PROC_Minuteur
GCOL RND( 14 ) + 1
CIRCLE FILL RND( 1280 ) , RND( 1023 ) , RND( 15 ) + 5
ENDPROC
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
avec un exemple de résolution à télécharger pour vous inspirer.