如何在c++中测量高分辨率按键时间?



我有一个采样率为1 000 Hz的Millikey响应盒和一个采样率为10 000 Hz的光传感器。我想测量端到端的响应时间,从按下按钮的时刻到在我的c++程序中由按下按钮触发的屏幕上的变化。我正在努力理解如何做到这一点。

我的想法是,理想情况下,我会让按钮按下创建一个按键事件,该事件以1 000 Hz的采样率创建时间戳。我的c++程序将通过记录高频时间戳并触发屏幕上的亮度变化,以自己的频率处理此事件。接下来,光传感器将拾取变化并以10000hz的采样率生成自己的按键事件。在下一个循环中,我的c++程序将拾取这个事件,并通过比较两个高分辨率时间戳获得实际的端到端时间。

这个想法合理吗?如果是,我该如何实施?

到目前为止,我使用GLFW来捕获键盘事件并获得键回调中的时间戳,但据我所知,这并不是键被按下的确切时间。

试图用计算机和外围设备做所有这些事情可能会导致您一无所获,因为链的各个部分都存在未知且可能不稳定的延迟。

这是一个我用来成功测量延迟的技巧。我把光传感器和声音发生器连接了起来。然后我记录下按钮被击中的声音和传感器发出的声音。记录在96Khz,这将给你一个非常准确和精确的读数。你只需要在音频编辑器中测量延迟,或者我猜你也可以有一个独立的程序来分析音频。

我的答案是使用LabStreamingLayer。我使用App-Input捕获键盘事件,LabRecorder捕获这些事件的流,然后使用Python导入器解析生成的XDF文件。当按键触发我的c++程序中由光传感器检测到的屏幕变化时,上述所有程序在后台运行并捕获事件。

我确信其他的答案和评论对于想要在较低的层次上实现它的人提供了很好的建议。由于我的理解有限,我的问题也没有提炼,所以无论如何感谢您的贡献!

相关内容

  • 没有找到相关文章

最新更新