我想提出一些刺激。在每次刺激之后,请求两个同时按键。 只有一个键负责呈现下一个刺激。两者都应记录下来。我如何在python中获得它们?
我试过这样:
kb = keyboard(keylist = ['f','g','h','j','<','-','d','k'])
Break = canvas()
Break.text('')
A = canvas()
A.text('A')
B = canvas()
B.text('B')
seq = [A,B]*5
seq.reverse() #pop wählt von hinten aus
var.T_Resp=[]
var.T_Resp2=[]
var.Resp=[]
var.Resp2=[]
var.Stim=[]
var.T_Stim=[]
last=None
last2=None
t =seq[-1].show()
var.T_Stim.append(t)
if seq[-1] == A:
var.Stim.append('A')
else:
var.Stim.append('B')
print var.Stim, t
seq.pop() #pops out the last
while True:
if (len(seq)!=0):
key, time = kb.get_key(timeout=0)
if key == 'f':
var.T_Resp2.append(time)
var.Resp2.append(key)
print key, time
kb.flush()
elif key == '-':
print key, time
var.T_Resp.append(time)
var.Resp.append(key)
t = seq[-1].show()
var.T_Stim.append(t)
if seq[-1] == A:
var.Stim.append('A')
else:
var.Stim.append('B')
print var.Stim, t
seq.pop()
if (len(seq)==0): #Last presses
key, time = kb.get_key(timeout=0)
if key == 'f':
var.T_Resp2.append(time)
var.Resp2.append(key)
print key, time
if (time-t)>200:
last2=time
kb.flush()
elif key == '-':
print key, time
var.T_Resp.append(time)
var.Resp.append(key)
last=time
elif last>0 and last2>0:
print "Break", var.T_Resp, var.T_Resp2
break
elif last2==None and len(var.Resp)>9 :
print "Break", var.T_Resp, var.T_Resp2
break
#log.write_vars() #NOT POSSIBLE: slows down the whole loop
for i in range(len(var.Stim)):
var.Stim1=var.Stim[i]
var.T_Stim1=var.T_Stim[i]
log.write_vars()
print var.Stim1, var.T_Stim1
for i in range(len(var.Resp)):
var.Resp1=var.Resp[i]
var.T_Resp1=var.T_Resp[i]
log.write_vars()
print var.Resp1, var.T_Resp1
for i in range(len(var.Resp2)):
var.Resp2_1=var.Resp2[i]
var.T_Resp2_1=var.T_Resp2[i]
log.write_vars()
print var.Resp2_1, var.T_Resp2_1
print "Resp", len(var.Resp), "Resp2", len(var.Resp2)
for i in range(len(var.T_Resp)):
print "IOI", var.T_Resp[i]-var.T_Resp2[i]
然而,由于两个原因,这不能很好地运作:
1)有时无法识别按键。我想知道这是否是完全同时按下键的时候。
2)在我的输出中,起始间隔(IOI)[两次同时按下之间的间隔]不是正态分布的。只有一些数字,例如-29,-2,2,29(由于极少数情况下的可变延迟+ -1)。这是从哪里来的?
我正在使用芝麻开门。