FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» PANORAMIC V 1
Mesure d'une durée Emptypar Marc Aujourd'hui à 13:48

» Gestion d'un système client-serveur.
Mesure d'une durée Emptypar Klaus Aujourd'hui à 12:18

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Mesure d'une durée Emptypar Froggy One Aujourd'hui à 10:16

» @Jack
Mesure d'une durée Emptypar Jack Mar 30 Avr 2024 - 19:40

» trop de fichiers en cours
Mesure d'une durée Emptypar papydall Lun 29 Avr 2024 - 22:39

» Une calculatrice en une ligne de programme
Mesure d'une durée Emptypar jean_debord Dim 28 Avr 2024 - 7:47

» Form(résolu)
Mesure d'une durée Emptypar leclode Sam 27 Avr 2024 - 16:59

» Bataille navale SM
Mesure d'une durée Emptypar jjn4 Ven 26 Avr 2024 - 16:39

» Les maths du crocodile
Mesure d'une durée Emptypar jean_debord Jeu 25 Avr 2024 - 9:37

» Naissance de Crocodile Basic
Mesure d'une durée Emptypar jean_debord Jeu 25 Avr 2024 - 7:45

» Dessine-moi une galaxie
Mesure d'une durée Emptypar jjn4 Lun 22 Avr 2024 - 12:47

» Erreur END_SUB
Mesure d'une durée Emptypar jjn4 Lun 22 Avr 2024 - 12:43

» Bug sur DIM_LOCAL ?
Mesure d'une durée Emptypar papydall Dim 21 Avr 2024 - 22:30

» 2D_fill_color(résolu)
Mesure d'une durée Emptypar leclode Sam 20 Avr 2024 - 7:32

» Consommation gaz électricité
Mesure d'une durée Emptypar leclode Mer 17 Avr 2024 - 10:07

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
Cartes Pokémon 151 : où trouver le coffret Collection Alakazam-ex ?
Voir le deal

 

 Mesure d'une durée

Aller en bas 
3 participants
AuteurMessage
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Mesure d'une durée Empty
MessageSujet: Mesure d'une durée   Mesure d'une durée EmptyDim 4 Déc 2011 - 14:21

Avec Panoramic, on n'a pas la possibilité de mesurer des durée avec une précision inférieure à la seconde (instruction TIME).
Nardo a fait une DLL qui permet une précision meilleure, mais il faut la dll...
Il me revient une possibilité avec ms-dos (eh oui, je suis un nostalgique du vieux temps).
En effet, la commande TIME en ligne de commande donne l'heure avec une précision du centième de seconde. L'inconvénient c'est qu'elle attend une réponse (soit la touche Enter, soit la nouvelle heure qu'on veut modifier), mais avec un peu d'astuce on peut y remédier:
Code:
DIM fm$, i: fm$ = "c:\temp\heure.txt"
EXECUTE "Cmd.exe /C ECHO.| TIME >"+fm$
FOR i = 1 TO 500000: NEXT i
EXECUTE_WAIT "Cmd.exe /C ECHO.| TIME >>"+fm$
LIST 1000: HIDE 1000
FILE_LOAD 1000, fm$: FILE_DELETE fm$
PRINT MID$(ITEM_READ$(1000, 1), 24, 11): ' début
PRINT MID$(ITEM_READ$(1000, 3), 24, 11): '  fin
DELETE 1000
END
Le "ECHO." (collés) est enchaîné (fonction 'pipe': "|")après le TIME et simule une ligne vide (ou appui sur Enter).
Il suffit ensuite d'exploiter le résultat dans le fichier fm$ (ici simplement affiché).

L'appel à cmd.exe prend du temps (en termes de millisecondes), mais en première approximation on peut estimer que ça prend le même temps pour les deux appels, donc que ça s'annule.
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Mesure d'une durée Empty
MessageSujet: Re: Mesure d'une durée   Mesure d'une durée EmptyDim 4 Déc 2011 - 15:25

Bonjour JL35,

Oui c'est une autre façon de faire...
Wink

PS: Tu peux remplacer le LIST par un DLIST (ça évite le HIDE...)
Revenir en haut Aller en bas
http://nardo26.lescigales.org
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Mesure d'une durée Empty
MessageSujet: Re: Mesure d'une durée   Mesure d'une durée EmptyDim 4 Déc 2011 - 15:42

Salut Nardo. Tu as raison. Comme toujours. Ca m'énerve ! Suspect
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Mesure d'une durée Empty
MessageSujet: re   Mesure d'une durée EmptyDim 4 Déc 2011 - 18:24

Tu pourrais essayer de jouer avec un timer pour tes millisecondes .......
( c'est juste une idée jetée en l'air Laughing )
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Mesure d'une durée Empty
MessageSujet: Re: Mesure d'une durée   Mesure d'une durée EmptyDim 4 Déc 2011 - 18:29

Allez ygeronimi, concrétise ton idée avant qu'elle retombe !
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Mesure d'une durée Empty
MessageSujet: Re: Mesure d'une durée   Mesure d'une durée EmptyLun 5 Déc 2011 - 1:21

@ jl35 :

ce devrait etre une base........ Laughing

Code:
dim a$ , b$,i,cs,d$
label tps , affich,stop_temps ,calc

height 0,200:width 0,250
edit 1
timer 2 :timer_interval 2,10 : timer_off 2  :on_timer 2,affich
button 3:top 3,20:caption 3,"Start":on_click 3,stop_temps
button 5:top 5,45:caption 5,"End":inactive 5:  on_click 5,stop_temps
alpha 4:top 4,30:left 4,120:caption 4,"00:00:00,00"
alpha 6:top 6,55:left 6,120:caption 6,"00:00:00,00"
alpha 7:top 7,80:left 7,120:caption 7,"00:00:00,00"
gosub tps
end


tps:
a$= time$
b$=",00"
while a$=time$
text 1, a$+b$
end_while
timer_on 2
return

affich:
cs=cs+1
if cs<10
 b$=",0"+str$(cs)
else
 if cs<99
  b$=","+str$(cs)
 else
  cs=0
  b$=",0"+str$(cs)
 end_if
end_if
d$=time$+b$
text 1,d$
return

stop_temps:
if clicked(3)=1
 inactive 3
 active 5
 caption 4,d$
 caption 6,"00:00:00,00"
else
 inactive 5
 active 3
 caption 6,d$
 gosub calc
end_if
return

calc:
caption 7,"Pas eu le temps !"
return

ceci dit , il y a un souci avec l'affichage les secondes vont plus vite que les dixièmes scratch
y'aurait il un decalage de temps entre " Time$" et le "Timer" scratch


Suspect
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Mesure d'une durée Empty
MessageSujet: Re: Mesure d'une durée   Mesure d'une durée EmptyLun 5 Déc 2011 - 4:07

Hello Ygeronimi ! Very Happy
Pour rappeler le contexte regarde ceci

Cependant, en chipotant un peu, tu as soulevé une chose :
Je ne suis pas sûr que la base de temps des timers soit correcte, en faisant cet essai :
Code:
DLL_ON "bench.dll" : LABEL EndProg : ON_CLOSE 0,EndProg
DIM t,Duree : LABEL cpt : t = DLL_CALL0("GetCount")+1000
timer 2:timer_interval 2,100:on_timer 2,cpt : print "Fermez la fenêtre..."
END
EndProg:
  MESSAGE STR$(Duree)+"ms": DLL_OFF
TERMINATE
cpt:
  Duree = MAX(Duree,(DLL_CALL0("GetCount")-t))
  t = DLL_CALL0("GetCount")
return
j'obtiens pour 100 ms -> 110ms
même si les appels à la dll prend du temps et provoque un décalage, 10ms (1er appel dll+MAX() ) me parait excessif...
mais je chipote, je chipote... c'est peut-être du au temps d'interprétation des commandes ? Wink
Pour la plupart de nos applics ce n'est pas vraiment important...
L'essentiel c'est que ce décalage soit constant.
Sur mon PC, la base de temps varie entre 110 et 109ms...
Panoramic n'est pas dédié à de la prog de "haute voltige", et c'est largement suffisant pour ce que nous en faisons... Wink


Revenir en haut Aller en bas
http://nardo26.lescigales.org
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Mesure d'une durée Empty
MessageSujet: Re   Mesure d'une durée EmptyLun 5 Déc 2011 - 10:25

@ Nardo

Comme tu dis l'essentiel est que le decalage soit constant et à ce momment là , on peut essayer dele récupérer sur le réglage de "Timer_interval".

si c'est un écart de 10 ms : Timer_interval X, 9 au lieu de 10..... Laughing

bonne journée !
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Mesure d'une durée Empty
MessageSujet: re   Mesure d'une durée EmptyLun 5 Déc 2011 - 13:22

Une petite évolution....
Code:
dim a$ , b$,i,cs,d$
dim t$,t1$,t2$
dim e,f,g,h
dim e1,f1,g1,h1
dim e2,f2,g2,h2
dim td,tf,diff
dim e$,f$,g$,h$
label tps , affich,stop_temps ,calc

height 0,200:width 0,250
edit 1
timer 2 :timer_interval 2,9 : timer_off 2  :on_timer 2,affich
button 3:top 3,20:caption 3,"Start":on_click 3,stop_temps
button 5:top 5,45:caption 5,"End":inactive 5:  on_click 5,stop_temps
alpha 4:top 4,30:left 4,120:caption 4,"00:00:00,00"
alpha 6:top 6,55:left 6,120:caption 6,"00:00:00,00"
alpha 7:top 7,80:left 7,120:caption 7,"00:00:00,00"
gosub tps
end


tps:
a$= time$
b$=",00"
while a$=time$
text 1, a$+b$
end_while
timer_on 2
return

affich:
cs=cs+1
if cs<10
 b$=",0"+str$(cs)
else
 if cs<99
  b$=","+str$(cs)
 else
  cs=0
  b$=",0"+str$(cs)
 end_if
end_if
d$=time$+b$
text 1,d$
return

stop_temps:
if clicked(3)=1
 inactive 3
 active 5
 caption 4,d$
 caption 6,"00:00:00,00"
else
 inactive 5
 active 3
 caption 6,d$
 gosub calc
end_if
return

calc:

t$=caption$(4)
e=val(left$(t$,2))
f=val(mid$(t$,4,2))
g=val(mid$(t$,7,2))
h=val(right$(t$,2))

t1$=caption$(6)
e1=val(left$(t1$,2))
f1=val(mid$(t1$,4,2))
g1=val(mid$(t1$,7,2))
h1=val(right$(t1$,2))

td=e*360000+f*6000+g*100+h
tf=e1*360000+f1*6000+g1*100+h1
diff=tf-td

  e2=int(diff/36000)

  if e2<10
  e$="0"+str$(e2)
  else
  e$=str$(e2)
  end_if

f2=int(diff/6000)
if f2<60
  if f2<10
  f$="0"+str$(f2)
  else
  f$=str$(f2)
  end_if
else
  f$="00"
end_if

g2=int(diff/100)
if g2<60
  if g2<10
  g$="0"+str$(g2)
  else
  g$=str$(g2)
  end_if
else
  g$="00"
end_if

if diff<100
 h$=str$(diff)
else
 h$="00"
end_if

caption 7,e$+":"+f$+":"+g$+","+h$
return


de temps en temps demeure un bug à l'affichage dont j'ai du mal à définir la source scratch Suspect
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Mesure d'une durée Empty
MessageSujet: Re: Mesure d'une durée   Mesure d'une durée EmptyLun 5 Déc 2011 - 13:42

Il y a quand même quelque chose qui me chiffonne dans l'utilisation du timer.
Je rappelle que dans mon exemple, il s'agissait de mesurer la durée d'exécution d'un morceau de programme pour optimisation éventuelle, en l'occurence la boucle:
FOR i = 1 TO 500000: NEXT i
Or tu lances un timer qui s'exécute et vient incrémenter un compteur tous les centièmes de seconde, et c'est ce compteur qui compte le temps.
A ma connaissance, la boucle n'est pas interruptible par le timer, autrement dit le programme timer ne s'exécutera pas une seule fois pendant le déroulement de la boucle, et le compteur ne progressera pas d'un pouce.
Ou quelque chose m'a échappé ?
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Mesure d'une durée Empty
MessageSujet: re   Mesure d'une durée EmptyLun 5 Déc 2011 - 14:19

heuuuu........
tu peux faire un "stop_temps" au depart et à la fin de ta boucle......non?
scratch
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Mesure d'une durée Empty
MessageSujet: Re: Mesure d'une durée   Mesure d'une durée EmptyLun 5 Déc 2011 - 14:57

bien sûr, mais pendant le déroulement de la boucle le timer ne passera pas, donc son compteur ne sera pas incrémenté ?

Pour ce que tu fais, c'est à dire une fonction chronomètre: mesurer le temps qui s'écoule entre deux appuis sur un bouton, ça marche, parce qu'il ne se passe rien entre ces deux appuis, le timer a tout le temps de passer et de faire son boulot.

Mais si un programme se déroule pendant le même temps, dont des parties non interruptibles comme des boucles de traitement, là le timer ne passe pas, il n'est pas déclenché !
Le timer n'est déclenché que pendant les temps d'attente du programme, quand il n'y a rien d'autre à faire et qu'il ne se passe rien d'autre.
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Mesure d'une durée Empty
MessageSujet: Re: Mesure d'une durée   Mesure d'une durée EmptyLun 5 Déc 2011 - 15:54

Tout à fait !

Nardo26 a écrit:
Hello Ygeronimi ! Very Happy
Pour rappeler le contexte regarde ceci

@ygeronimi :Regarde le lien... Wink
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Mesure d'une durée Empty
MessageSujet: re   Mesure d'une durée EmptyLun 5 Déc 2011 - 19:09

Mouep..... je viens de regarder le lien et là j'avoue mes limites.... Crying or Very sad
Revenir en haut Aller en bas
Contenu sponsorisé





Mesure d'une durée Empty
MessageSujet: Re: Mesure d'une durée   Mesure d'une durée Empty

Revenir en haut Aller en bas
 
Mesure d'une durée
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
»  Ancienne mesure russe de la longueur
» En 3D, en quoi sont exprimées les unités de mesure?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: