| NUMBER_TICKS et PAUSE | |
|
|
Auteur | Message |
---|
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: NUMBER_TICKS et PAUSE Sam 11 Fév 2017 - 21:01 | |
| Bonjour à tous ! Sur mon ordinateur, la PAUSE minimum possible est de 16 ms. - Code:
-
dim temps1,temps2,resultat temps1 = NUMBER_TICKS
pause 1 : ' <= à moduler suivant vos désirs !
temps2 = NUMBER_TICKS Resultat=(temps2-temps1)/1000 print "Durée : "+str$(resultat)+" seconde(s)" PAUSE 1 me retoune comme résultat 0.016 seconde Jack a dit : Je fais un petit test : - Code:
-
dim temps1,temps2,resultat
temps1 = NUMBER_TICKS temps2 = temps1 + 2 : ' délai de 2 millisecondes
WHILE NUMBER_TICKS < temps2 END_WHILE
temps2 = NUMBER_TICKS Resultat=(temps2-temps1) print "Durée : "+str$(resultat)+" milliseconde(s)" résultat 15 ms au lieu de 2 ms ! Ai-je fait une erreur ? | |
|
| |
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: NUMBER_TICKS et PAUSE Sam 11 Fév 2017 - 22:28 | |
| Salut marc37
Non, tu n'as pas fait d'erreur, panoramic est synchronisé à 60 frame/seconde en interne. Impossible de modifier cela! | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: NUMBER_TICKS et PAUSE Sam 11 Fév 2017 - 23:10 | |
| Changez PAUSE par WAIT et constatez par vous-même
La commande PAUSE N arrête l'exécution du programme pendant N millisecondes. Les actions en attente sont effectuées. La commande WAIT N gèle l'exécution du programme pendant N millisecondes. Les actions en attente ne sont pas effectuées. | |
|
| |
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: NUMBER_TICKS et PAUSE Sam 11 Fév 2017 - 23:27 | |
| Je pense que marc37 veut gérer du temps à la milliseconde près. Mais le temps de synchronisation d'éxécution des commandes est de 16 ms alors que le taux de rafraichissement de l'affichage est de 150 images par seconde(à vide, sur mon ordinateur) - Code:
-
dim t,tmp%,oldtmp%,cpt
for t=1 to 10 cpt=0 oldtmp%=number_ticks repeat cpt=cpt+1 tmp%=number_ticks until tmp%>oldtmp% print "temps d'éxécution des commandes: ",tmp%-oldtmp%," millisecondes pour ",cpt," frames/seconde" next t | |
|
| |
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: NUMBER_TICKS et PAUSE Dim 12 Fév 2017 - 1:29 | |
| Hélas, avec WAIT c'est le même problème ! Que ce soit NUMBER_TICKS ou WAIT ou PAUSE, je ne peux pas descendre en dessous des 15ms. | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: NUMBER_TICKS et PAUSE Dim 12 Fév 2017 - 11:02 | |
| Bonjour Marc, Alors utilise une méthode plus 'bestiale' pour faire une pause: - Code:
-
FOR i% = 1 TO n En faisant varier le nombre n tu peux ajuster à la durée voulue, si petite soit-elle, mais c'est empirique, il faut faire ça par tâtonnements. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: NUMBER_TICKS et PAUSE Dim 12 Fév 2017 - 11:15 | |
| Attention avec une telle boucle ! Il faut au moins placer un "DISPLAY 0" dans la boucle, afin de ne pas bloquer le système ! | |
|
| |
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: NUMBER_TICKS et PAUSE Dim 12 Fév 2017 - 11:54 | |
| Merci à tous ! Oui, JL35, c'est ce que j'ai dû employer pour faire varier la vitesse de défilement de l' univers sans fin de ce matin : https://panoramic.1fr1.net/t5131-univers-sans-fin#628562ème post celui de 9h15. j'ai fait une boucle variable asservie à la positon de la souris. @Klaus Je viens de faire l'essai d'ajouter DISPLAY 0 dans la boucle : (32)Illegal instruction en retour. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: NUMBER_TICKS et PAUSE Dim 12 Fév 2017 - 11:58 | |
| Oups... désolé. Simplement DISPLAY, sans paramètres ! | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: NUMBER_TICKS et PAUSE Dim 12 Fév 2017 - 12:52 | |
| Parfois oui, mais dans le cas présent je ne suis pas sûr que le Display soit obligatoire... en tout cas je l'utilise sans display et sans problème. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: NUMBER_TICKS et PAUSE Dim 12 Fév 2017 - 13:18 | |
| Essaie de faire tourner autre chose en même temps... | |
|
| |
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: NUMBER_TICKS et PAUSE Lun 13 Fév 2017 - 14:25 | |
| @Marc37 j'ai retrouvé dans mes archives, un code que je remet au goût du jour. Il permet de concevoir des boucles d'attente à la milliseconde près! - Code:
-
' https://msdn.microsoft.com/fr-fr/library/windows/desktop/dn553408%28v=vs.85%29.aspx
' fonctions/commandes de comptage haute résolution du kernel32 dim kernel32% kernel32%=3 LIBRARY kernel32%,"kernel32" ' function "perf_timer_exist","QueryPerformanceCounter",kernel32%,"I","stdcall" ' ex.: null%=perf_timer_exist(adr(float)) ' command "perf_timer","QueryPerformanceCounter",kernel32%,"I","stdcall" ' ex.: perf_timer adr(float) ' command "perf_frequency","QueryPerformanceFrequency",kernel32%,"I","stdcall" ' ex.: perf_frequency adr(float))
' le résultat du compteur et de la fréquence doivent être stocké dans une variable de type "float" dim frequency,cpt_start,cpt_end dim present%,null%,result
' vérifie que le compteur haute résolution existe present%=perf_timer_exist(adr(cpt_start)) if present%<>0 perf_frequency adr(frequency) :' fréquence du compteur haute résolution else print "compteur haute résolution inexistant." end_if
' commence le chronométrage perf_timer adr(cpt_start)
' activité à chronométrer pause 1
' termine le chronométrage perf_timer adr(cpt_end)
' résultat dans une variable de type "float", il est exprimé en seconde result=(cpt_end-cpt_start)/frequency print result," seconde(s)"
' il faut le multiplier par 1000 pour l'obtenir en milliseconde result=int(result*1000*100)/100 :' 2 chiffres après la virgule
' affichage print "soit : ",result," millisecondes"
' simulation de la commande wait : un WAIT précis à la milliseconde! dim w_time w_time=500 :' millisecondes ' perf_timer adr(cpt_start) cpt_start=cpt_start+(frequency*(w_time/1000)) repeat perf_timer adr(cpt_end) until cpt_end>=cpt_start print : print "WAIT ",w_time," émulé!"
| |
|
| |
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: NUMBER_TICKS et PAUSE Ven 17 Fév 2017 - 0:22 | |
| Merci Silverman ! Je vais faire des essais... | |
|
| |
Contenu sponsorisé
| Sujet: Re: NUMBER_TICKS et PAUSE | |
| |
|
| |
| NUMBER_TICKS et PAUSE | |
|