2010-11-03 2 views
2

я работаю на регистраторе с использованием языка C на платформе QNX, используя Momnetics для печати времени в следующем форматеОтносительно получать время в миллисекундах

2010-11-02 14: 45: 15.000

я смог получить дату , часы, минуты и секунды с помощью

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); 

Вопрос в том, как я могу получить детализацию миллисекунд с помощью QNX Momentics.

Я попытался получить грануляцию в миллисекундах с использованием специфичного QNX int iSysTimeMs = ((ClockCycles() * 1000)/SYSPAGE_ENTRY (qtime) -> cycles_per_sec)% 1000;

, но я хочу сделать это POSIX так, чтобы он был переносимым. как нам это сделать?

Спасибо! Venkata

ответ

2

В QNX6 Вы можете использовать clock_gettime, чтобы получить максимальную степень детализации , разрешенную системой.

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

может у PLS разработать как получить миллисекунды, я вижу только секунды и наносекунды. – Venkata

+1

Как насчет деления наносекунд на 1000? – DevSolar

+1

@DevSolar: ... это даст микросекунды, а не миллисекунды. @Venkata: Ты серьезно !? 'millisec = nanosec/1000000;' – Clifford

0

Системный вызов gettimeofday() возвращает структуру, удерживающую текущее время в секундах Unix и количество микросекунд, принадлежащих к текущей секунде.

Чтобы получить общее количество микросекунд:

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

как я могу подправить свой анвер на мой вопрос 14: 45: 15.000, вот как я заменю последние три нуля, которые я должен заполнить с помощью микросекунды – Venkata