2010-11-03 154 views
2

我正在使用记录仪在Momnetics以下格式关于以毫秒为单位

2010-11-02 14打印时间用C语言在QNX平台上工作得到时间: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

u能请详细说明如何获得毫秒,我看到只有几秒钟和纳米秒。 – Venkata 2010-11-03 10:31:05

+1

将纳秒除以1000如何? – DevSolar 2010-11-03 10:34:06

+1

@DevSolar:...会产生微秒,而不是毫秒。 @Venkata:你是认真的!? 'millisec = nanosec/1000000;' – Clifford 2010-11-03 11:20:22

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 2010-11-03 10:33:02

相关问题