我将从事一个项目,该项目需要(相当)准确的时间标记来自自定义硬件的传入 RS232 串行和网络数据。由于数据将来自许多独立的硬件来源,我需要对所有数据进行时间戳,以便可以将其校正/插值到标称时间点。
我的直接操作只是使用内置的 Now 命令来设置时间戳,但是快速的 Google 似乎表明这只会精确到大约 50 毫秒左右。
不幸的是,我读得越多,我就越困惑。关于 GetTickCount 和 QueryPerformanceCounter 似乎有很多相互矛盾的建议,由于当今的多核处理器和 CPU 节流而变得复杂。我还看到了推荐使用 Windows 多媒体计时器的帖子,但我似乎找不到任何代码片段来执行此操作。
所以,谁能给我建议:
1)“现在”的准确性如何。
2) 是否有简单、精度更高的替代方案。
注意:我希望将时间戳记在 10 毫秒内,我并不是在寻找这样的计时器,只是一种更好的时间戳方法。这将在 Windows 7 32 位低功耗微型 PC 上运行。如果有什么不同,我将使用 Delphi XE 或 Delphi 2007。