2015-08-11 12 views
2

Я пытаюсь распечатать секунды и миллисекунды, и я использую GetSystemTime().Невозможно получить миллисекунды от GetSystemTime()

Это мой код:

GetSystemTime(&datetime); 
RETAILMSG(1,(_T("Time After Data Sent to USB: %d:%d\r\n"), datetime.wSecond, datetime.wMilliseconds)); 

Я печатаю на выход платформы строитель отладки с использованием RETAILMSG(), но я только способен печатать с разрешением до секунд, так что я буду видеть что-то вроде 48: 0 где миллисекунды пустые.

Я не уверен, почему это происходит, так как я не получаю никаких жалоб. Я полагаю, что это имеет какое-то отношение к реализации RETAILMSG().

Есть ли исправление для этого или замены, которое я могу использовать для достижения разрешения в миллисекундах?

Спасибо,

EDIT: Я разрабатываю в Windows Embedded Compact 7

+0

Кажется странным, что он будет пустым и не равен нулю. Предлагает проблему с используемой функцией printf, а не полем миллисекунд как таковое. –

+0

@JonathanPotter I typo'd. Это фактически нуль. Я исправил это в своем посте. – Javia1492

+0

Есть ли std :: chrono :: high_resolution_clock лучше на WEC7? – Robinson

ответ

2

под окнами, разрешение is around 15ms часов.

Если вам требуется разрешение в миллисекундах, есть часы с высокой производительностью, которые позволяют вам измерять временной диапазон 10 мкс (см. here: Acquiring high-resolution time stamps по msdn).

+1

К сожалению , предоставленная вами ссылка не показывает, что QPC поддерживается в Windows Embedded Compact 7, поэтому я не думаю, что у меня есть этот api. Я редактировал свой пост, чтобы указать платформу. – Javia1492

+0

Я не знаю среду Embedded Compact, но эта [ссылка] (https://msdn.microsoft.com/en-us/library/ee488415%28v=winembedded.70%29.aspx) предполагает, что 'QueryPerformanceCounter' должны быть доступны. (П.S: Это может вас заинтересовать. Первая ссылка в ответе показывает документ Microsoft, объясняющий, что во встроенных средах системные часы менее 15 мс будут существенно влиять на потребление энергии). – Christophe

+1

Ах, вторая ссылка была очень полезной. Я попробую это и посмотрю, работает ли это. Благодаря! – Javia1492

5

миллисекунды пустые.

Я не знаю, почему это происходит

Embedded Compact documentation для GetSystemTime() состояний следующие предупреждения об этой проблеме:

миллисекунды зернистость не могут поддерживаться на аппаратной платформе. Вызыватель этой функции не должен полагаться на более чем вторую детализацию.

+0

Да, я читал, что после того, как я разместил вопрос. – Javia1492