IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Chrono pas 'précis'..!


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Par défaut Chrono pas 'précis'..!
    Bonjour à tous,

    J'ai crée une applet dans laquelle j'ai mis un chronomètre dans un label. Le seul problème est que ce chronomètre prend 5 secondes de retard sur 20 secondes de temps...!
    Voilà comment je l'ai crée (lol avec l'aide de developpez.com):


    Cela se trouve dans un thread où le temps vaut t=+0.01*nbmilli (où nbmilli vaut 40):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    if(chrono==true){
                       crtmillis=System.currentTimeMillis();
                       System.out.println(crtmillis-lastmillis+ "           "  +dixiemeseconde);
     
                       if(crtmillis-lastmillis>100){
                           dixiemeseconde++;
                           lastmillis=crtmillis;
                           StringBuffer sb =new StringBuffer();
                           lbchrono.setText(sb.append(dixiemeseconde / 360000)
                                   .append(":")
                                   .append((dixiemeseconde / 60000) % 6).append((dixiemeseconde / 6000) % 10)
                                   .append(":")
                                   .append((dixiemeseconde/ 100) % 6).append((dixiemeseconde / 10) % 10)
                                   .append(":")
                                   .append(dixiemeseconde % 10)
                                   .toString());
                           sb.setLength(0);
     
                       }
                   }
    et bien sûr la valeure initiale de lastmillis est prise dans 'init'

    Une idée ?!

    Merci
    Cordialement

    Pat-trix

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Elle sort d'où ta variable dixiemeseconde ?
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  3. #3
    Membre chevronné Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Par défaut
    Ton algo me semble tout à fait mauvais, si je puis me permettre

    C'est la séquence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(crtmillis-lastmillis>100){
       dixiemeseconde++;
       lastmillis=crtmillis;
    Imagine que la différence temps courant - temps précedent soit égale à 150 ; ton algo te fait perdre 50 dans le comptage !

    Maintenant je me trompe peut être c'est juste une supposition une impression j'ai pas vérifié

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Par défaut
    Nous sommes 3 sur cette impression je pense

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Par défaut
    C'est juste..., je suis bien d'accord!

    Comment je pourrais changer ce code simplement (dans ce thread qui va à =+ 0.01 nbmilli [nbmilli=40]) pour que mon chono soit vraiment précis...?

    Merci

    Cordialement

    Pat-trix
    (NB: oubliez pas que je suis encore un débutant )

  6. #6
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    Essaie avec la classe javax.swing.Timer (Voir la FAQ ou la javadoc sun)
    Voilà un exemple d'utilisation dans ton cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.Timer;
     
    public class Main {
     
    	private static int dixiemeSeconde ;
     
    	public static void main(String[] args) 
    	{
    		chrono() ;
    	}
     
    	public static void chrono()
    	{
    		MonAction a = new MonAction() ;
    		Timer t ;
    		t = new Timer(100, a ) ;
     
    		dixiemeSeconde = 0 ;
     
    		t.start() ;
    		try {
    			Thread.sleep(500) ;
    		} catch (InterruptedException e) {
    			e.printStackTrace();
    		}
    	}
     
    	private static class MonAction implements ActionListener
    	{
    		public MonAction() {}
     
    		public void actionPerformed(ActionEvent e) {
    			dixiemeSeconde++ ;
    			System.out.println(
    					dixiemeSeconde/360000+
    					":"+
    					(dixiemeSeconde/60000)%6+
    					(dixiemeSeconde/6000)%10+
    					":"+
    					(dixiemeSeconde/100)%6+
    					(dixiemeSeconde/10)%10+
    					":"+
    					dixiemeSeconde%10
    			);
     
    		}
     
    	}
    }

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Par défaut
    Merci pour ta réponse!

    Enfait j'ai juste quelque chose que j'arrive pas à mettre dans mon code: c'est le MonAction()... t'arriverais à faire un exemple je vois pas trop ce que tu entends par là...

    Merci

    Cordialement

    Pat-trix

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Le Timer sous VB n’est pas précis
    Par tizana dans le forum VB.NET
    Réponses: 1
    Dernier message: 13/09/2012, 19h36
  2. Le TTimer n'est pas précis a la seconde???
    Par Baxter67 dans le forum C++Builder
    Réponses: 11
    Dernier message: 26/09/2008, 13h26
  3. Quel chrono est le plus précis ?
    Par pat-trix dans le forum Langage
    Réponses: 20
    Dernier message: 18/11/2006, 17h18
  4. afficher un fichier bien précis quand la cible d'un lien n'existe pas
    Par Drozo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/08/2006, 11h28
  5. [Timer]Timer pas très précis
    Par harold63 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 25/07/2005, 08h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo