Modifications

Sauter à la navigation Sauter à la recherche
429 octets ajoutés ,  22 janvier 2013 à 08:25
Ligne 154 : Ligne 154 :  
Il n'y a qu'une seule façon d'obtenir l'heure avec RTCLib, c'est d'appeler '''now()''', une fonction qui retourne un objet DateTime qui contient/décrit l'année (''year''), le mois (''month''), le jour (''day''), l'heure (''hour''), les minutes (''minute'') et secondes (''second'') au moment de l'appel de '''now()'''.
 
Il n'y a qu'une seule façon d'obtenir l'heure avec RTCLib, c'est d'appeler '''now()''', une fonction qui retourne un objet DateTime qui contient/décrit l'année (''year''), le mois (''month''), le jour (''day''), l'heure (''hour''), les minutes (''minute'') et secondes (''second'') au moment de l'appel de '''now()'''.
   −
'''Truc et astuce:'''
+
=== Ne pas tomber dans le piège de simplicité ===
   −
Il existe des librairie RTC qui permettent d'obtenir les différentes informations par l'intermédiaire de différentes fonctions "plus directes". Vous pouvez donc faire des appels comme '''RTC.year()''' ('''année''') et '''RTC.hour()''' ('''heure''') to get the current year and hour. However, there's one problem where if you happen to ask for the minute right at '''3:14:59''' just before the next minute rolls over, and then the second right after the minute rolls over (so at '''3:15:00''') you'll see the time as '''3:14:00''' which is a minute off. If you did it the other way around you could get '''3:15:59''' - so one minute off in the other direction.
+
Il existe des librairie RTC qui permettent d'obtenir les différentes informations par l'intermédiaire de différentes fonctions "plus directes". Vous pouvez donc faire des appels comme '''RTC.year()''' et '''RTC.hour()''' pour obtenir l'année courant et l'heure courante.  
 +
 
 +
Cependant, il y a un problème si vous êtes sur le point de demander les minutes juste au moment où il est '''3:14:59''' et que la prochaines minute prend place. Donc vous lisez les minutes (soit 14 pour 3:14:59), le RTC égraine la prochaine seconde et il est maintenant '''3:15:00''' et votre programme lit les secondes (soit 00 pour 3:15:00).
 +
 
 +
Résultat, le programme à lut 14 minutes et 0 secondes alors qu'il était 3:14:59... pire, si l'on interprète les deux valeurs obtenue il serait x:14:00 alors qu'il est en fait x:14:59. Il y a a donc une erreur d'une minute.
 +
 
 +
Et en utilisant les fonctions dans l'autre sens (lecture des secondes avant les minute), cette fois nous pourrions avoir une minute d'avance et obtenir '''3:15:59''' alors qu'il est 3:14:59.
 +
 
 +
{{traduction}}
    
Because this is not an especially unlikely occurance - particularly if you're querying the time pretty often - we take a 'snapshot' of the time from the RTC all at once and then we can pull it apart into '''day()''' or '''second()''' as seen above. Its a tiny bit more effort but we think its worth it to avoid mistakes!
 
Because this is not an especially unlikely occurance - particularly if you're querying the time pretty often - we take a 'snapshot' of the time from the RTC all at once and then we can pull it apart into '''day()''' or '''second()''' as seen above. Its a tiny bit more effort but we think its worth it to avoid mistakes!
29 848

modifications

Menu de navigation