2010-11-03 19 views
2

Je travaille sur enregistreur en utilisant le langage C sur la plate-forme QNX utilisant Momnetics pour imprimer le temps au format suivantEn ce qui concerne l'obtention du temps en millisecondes

2010-11-02 14: 45: 15,000

Je mesure d'obtenir la date , heure, minutes et secondes à l'aide

time(&timeSpec); 
struct tm gmt; 
int iSysTimeSec = timeSpec; 
gmtime_r((time_t *)&iSysTimeSec, &gmt); 
sprintf(&MsgStamp[0], SYS_MSG_STAMP_PRINTF_FORMAT, gmt.tm_year+1900, gmt.tm_mon + 1, gmt.tm_mday, gmt.tm_hour, gmt.tm_min, gmt.tm_sec, iSysTimeMs); 

La question est comment puis-je obtenir millisecondes granularité en utilisant QNX Momentics.

J'ai essayé d'obtenir granulaity pour millisecondes en utilisant QNX spécifique int iSysTimeMs = ((ClockCycles() * 1000)/SYSPAGE_ENTRY (qtime) -> cycles_per_sec)% 1000; Mais je veux faire ce chemin POSIX pour qu'il soit portable.

Comment faisons-nous cela?

Merci! Venkata

Répondre

2

Dans QNX6 Vous pouvez utiliser clock_gettime pour que la granularité maximale soit autorisée par le système.

struct timespec start; 
clock_gettime(CLOCK_REALTIME, &start); 
+0

peut u pls expliquer comment obtenir millisecondes, je vois que quelques secondes et nanosecondes. – Venkata

+1

Que diriez-vous de diviser les nanosecondes par 1000? – DevSolar

+1

@DevSolar: ... qui donnerait des microsecondes, pas des millisecondes. @Venkata: Êtes-vous sérieux !? 'millisec = nanosec/1000000;' – Clifford

0

L'appel système gettimeofday() renverra une structure de maintien du temps Unix courant en quelques secondes et le nombre de microsecondes appartenant au second courant.

Pour obtenir le nombre total de microsecondes:

struct timeval tv; 
gettimeofday(&tv, NULL); 
u_int64_t now = tv.tv_sec * 1000000ULL + tv.tv_usec; 
+0

comment puis-je adapter votre réponse à ma question 14: 45: 15.000, ici comment puis-je remplacer les trois derniers zéros que je dois remplir avec micro secondes – Venkata