【发布时间】:2021-10-15 19:20:40
【问题描述】:
我有一个采样率为 1 000 Hz 的 Millikey Response Box 和一个采样率为 10 000 Hz 的光传感器。我想测量从按下按钮到在我的 C++ 程序中按下按钮触发屏幕变化的端到端响应时间。我很难理解如何做到这一点。
我的想法是,理想情况下,我会让按钮按下创建一个按键事件,该事件包含一个以 1000 Hz 采样率创建的时间戳。我的 C++ 程序将通过记录高频时间戳并触发屏幕上的亮度变化以自己的频率处理此事件。接下来,光传感器会检测到变化并以 10 000 Hz 的采样率生成自己的按键事件。在下一个循环中,我的 C++ 程序将获取此事件并通过比较两个高分辨率时间戳来获取实际的端到端时间。
这个想法合理吗?如果是,我该如何实施?
到目前为止,我使用 GLFW 来捕获键盘事件并获取按键回调中的时间戳,但据我了解,这并不是按键被按下的确切时间。
【问题讨论】:
-
硬件上有可用的测试点吗?
-
桌面操作系统通常具有可怜的高精度计时能力。即使是毫秒计时也可能是狡猾的。我会从
std::chrono::steady_clock开始(avoid usingstd::chrono::high_resolution_clock尽管这听起来像是适合这项工作的工具。它可能不是)然后看看结果有多好。如果不好,请完善问题。 -
@ThomasMatthews 我猜是的。请参阅page 上的“MilliKey 时序验证”。我不明白我应该如何使用它来获得准确的时间戳。你能解释一下吗?
-
你所做的是在动作之前断言测试点,然后在动作之后取消断言测试点。将示波器探头或逻辑分析仪连接到测试点。您可能想为基准测试编写一个无限循环。您可能希望在测试点的断言转换时触发示波器。
-
这比我想象的要复杂得多......但是谢谢!我会调查的
标签: c++ input time keypress keyboard-events