Date et heure

raph004 Messages postés 11 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 7 mai 2008 - 29 avril 2008 à 16:02
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 30 avril 2008 à 13:58
Bonjour,

Je souhaite réaliser un programme qui grâce à un un premier réglage de l'heure et de la date est capable de rester à l'heure de façon autonome, c'est a dire que je ne désire pas utiliser l'heure et la date système mais l'incrémenter de façon régulière dans le programme.
Si possible j'aimerai que cela ne soit pas bloquant ou fait avec une boucle for en calculant avec la vitesse du processeur , parce qu'après j'aimerais le faire tourner dans un Thread...

D'avance merci pour vos idée ou vos exemple de code.

5 réponses

cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
29 avril 2008 à 17:28
Bonjour,

Quelque soit la méthode, ça m'étonnerait que ça reste précis sans synchronisation régulière avec l'horloge !

Jean-François
0
raph004 Messages postés 11 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 7 mai 2008
30 avril 2008 à 08:31
Bonjour,

A la limte, si c'est pas extrèmement précis c'est pas ce qu'il y a de plus grave. Parce qu'a priori je pourrais me resynchroniser assez régulièrement.
Cependant j'aimerais au moins que si ça reste quelques heure en autonome ça ne se dérègle que de quelques secondes au maximum.

merci
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
30 avril 2008 à 11:02
Bonjour,

Je viens de faire tourner ce petit code 1000 secondes (tout en continuant de travailler sur le même PC), sans décalage apparent, mais voir ce que cela donnera sur plusieurs heures !

#include <stdio.h>
#include <time.h>
#include <windows.h>



int main(void)
{
   // --- Horloge au début
   time_t tH0 = time(NULL);
   printf("H0 = %ld\n",tH0);




   // --- Boucle simulant l'horloge
   int iCpt = 0;
   for (int i=0 ; i<1000 ; ++i)
   {
      Sleep(1000); // 1000 ms
      ++iCpt;
   }




   // --- Horloge à la fin / compteur

   time_t tH1 = time(NULL);   printf("H1 %ld h0 + %d secondes\n",tH1,(int)(tH1 - tH0));
   printf("Compteur = %d\n",iCpt);
   return 0;
}


Ce qui donne :

H0 = 1209544153H1 1209545153 h0 + 1000 secondes
Compteur = 1000

Mais j'imagine bien que la fonction Sleep() doit utiliser l'horloge du PC ! Si c'est le cas on continue d'en dépendre indirectement.

Jean-François
0
raph004 Messages postés 11 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 7 mai 2008
30 avril 2008 à 13:31
Salut,

En fait j'avais pensé à un programme de ce type mais je connais mal le fonctionnement de la fonction sleep et j'ai peur qu'en fait, puisque que j'ai un programme avec des thread, le timing soit completement faussé.
Donc je vais tout de même esseyer de l'implémenter (malheureusement c'est pas pour tout de suite car je compte embarquer le code sur un carte de devellopement), puis on verra ce que cela donne.

Si vous avez d'autre idée je suis toujours prenneur
Et merci tout de même pour vos réponses
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
30 avril 2008 à 13:58
Sleep n'assure seulement que le thread restera endormie pour X ms. Rien ne garanti que l'exécution sera repris exactement après c'est X ms. Si le CPU traite un autre thread ou un thread à priorité élevé, ton thread attendra son tour comme les autres.

Aucune précision à attendre si il n'y a pas une synchronisation quelque part.

C++ (@++)<!--
0