Aide - Recherche - Membres - Calendrier
Version complète : Obtenir l'heure du Palm, avec une précision supérieure à la seconde ?
Les Forums de PalmAttitude.org > GENERAL PalmOS > Développement sous PalmOS
lu1u
Bonjour,

quelqu'un aurait-il une solution pour obtenir l'heure du Palm, avec une précision supérieure à la seconde ( n'importe laquelle, en dixième, centièmes ou "Ticks per seconds" ). L'ordre de grandeur à peu d'importance, j'ai juste besoin de la seconde "courante", avec une fraction.


J'ai essayé ça, mais je me suis emmelé les pinceaux:

UInt32 Secondes = TimGetSeconds () ;
DateTimeType st ;
TimSecondsToDateTime ( Secondes, &st ) ;


const UInt32 ticksPerSec = SysTicksPerSecond () ;
UInt32 Ticks = TimGetTicks() % ticksPerSec ;

double secondes = (double)(st.second) + (double)(Ticks)/(double)ticksPerSec ;


Le pb, c'est que ma variable "ticksPerSec" ne revient pas à 0 au moment du changement de secondes, d'ou une impression que la "seconde" saute de temps en temps en arrière.

Si quelqu'un peut me donner une solution, il aura droit à ma reconnaissance éternelle cool.gif
C'est encore pour un de mes programmes totalement inutiles ptdr.gif , donc rigoureusement indispensables.
Patrice
Il me semble que la KB développeur de PalmSource décrit un moyen d'accéder à l'horloge interne, avec une précision en millisecondes...
lu1u
Merci de ta réponse,
le site ayant changé, j'ai du m'inscrire sur www.developerpavilion.com,
leur base de connaissance semble bien succinte...
Pierre R.
TimGetTicks donne les ticks CPU ce qui est independant (désyncrhonisé, en fait) du temps horloge "humain".
mais c'est en revanche indispensable si tu veux chronometrer avec précision un intervalle de temps.
Le temps de réaction entre deux clicks boutons d'un utilisateur par exemple.

Si tu veux toi meme gérer les milliseconds, il faudra que tu calcules à la main, un ajout de temps (ticks converti en ms) par rapport à un temps référence.
lu1u
Merci de vos réponses, voici la méthode que j'ai utilisée:

Initialisation:
UInt32 Ticks = TimGetTicks() / SysTicksPerSecond() ;
UInt32 Seconds = TimGetSeconds() ;
g_DeltaTicks = Seconds - Ticks ;



Obtenir l'heure courante, avec une précision supérieure à la seconde:
const UInt32 ticksPerSec = SysTicksPerSecond () ;
const UInt32 Ticks = TimGetTicks() ;
UInt32 Secondes = (Ticks / ticksPerSec ) + g_DeltaTicks ;

DateTimeType st ;
TimSecondsToDateTime ( Secondes, &st ) ;

double SecondeCourante = (double)st.second + ((double)(Ticks%ticksPerSec)/(double)ticksPerSec) ;

Ca marche, je teste encore un peu mon programme avant de l'envoyer sur PA.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.