我在kivy为心理研究开发一个应用程序,需要记录屏幕上显示的内容和用户按键盘键之间的延迟。实际上实现定时很容易,但是我留下了一些系统固有的延迟方差,我不知道如何消除它。在
如果它是一个持续的延迟,我可以从数据中减去它,但如果它变化,那是一个令人困惑的变量。在
我意识到键盘会有一些输入延迟(虽然我还没能找到一个解释这是什么的来源-我已经看到了从8毫秒到200毫秒的所有东西,我自己的测试表明最大值是30毫秒)。我想做的是当一个帧显示在监视器上时启动计时器,当按下一个键时停止计时器。在
我的代码的相关部分是测试屏幕和键盘侦听器。在
目前我有:
class TestScreen(Screen):
def test_update(self,dt)
self.ids.left_number.fontval = 200
self.ids.right_number.fontval = 100
response_time_start = time.clock()
我实现了一个键盘小部件:
^{pr2}$test blank方法不接受任何输入,因此我只获取test_update帧的响应时间。这样做,我试图通过按下键盘上的“f”键并查看我得到的响应时间的分布来估计最大延迟。在
典型的设置如下所示:
Response time: 1.64090357165ms
Response time: 5.11166324745ms
Response time: 13.2276396813ms
Response time: 1.88118446611ms
Response time: 25.9535446244ms
Response time: 22.024679318ms
Response time: 22.4933714233ms
Response time: 7.03038157825ms
Response time: 6.90109826654ms
Response time: 2.90326047379ms
Response time: 25.264461365ms
Response time: 24.6594282983ms
对我来说,这似乎是一个很大的差异,我希望有一些关于如何更好地衡量这一点的建议。5毫秒以下的响应时间也令人惊讶,因为这似乎比我预期的内置键盘解抖时间还要快。在
在.kv文件中:
<TestScreen>:
id: test_screen
RelativeLayout:
id: test_layout
canvas:
Color:
rgba: 0.89,0.75,0.62,1
Rectangle:
size: self.size
pos: self.pos
CountDownLabel:
id: count_label
text: str(self.val)
color: 0,0,0,1
font_size: 200
markup: True
LeftNumber:
id: left_number
text: self.val
color: 0,0,0,1
size_hint: .25, .25
font_size: self.fontval
pos_hint: {'center_x':0.25,'center_y':0.5}
markup: True
RightNumber:
id: right_number
text: self.val
color: 0,0,0,1
size_hint: .25, .25
font_size: self.fontval
pos_hint: {'center_x':0.75, 'center_y':0.5}
markup: True
CrossLabel:
id: cross_label
示例编号类别:
class LeftNumber(Label):
val = StringProperty('')
fontval = NumericProperty(100)
目前没有回答
相关问题 更多 >
编程相关推荐