我正在尝试收集键盘数据,但我无法让KbWait工作。在下面的代码中,我试图等待参与者回复,检查他们的响应是否是两个可接受的答案之一,然后继续。只有当参与者按下“j”或“f”时才会继续。
response = []; while isempty(response)&&(GetSecs - FlipTimestamp) < 10 [keyIsDown, RTsecs, RTkeyCode, deltaSecs] = KbWait; if keyIsDown r=find(RTkeyCode);%this should be the code for the key pressed response=KbName(r);%Figure out what key was pressed rt=num2str(RTsecs-time); %subtract off timestamp from when window was flipped if response == 'f' match_response= false; end if response == 'j' match_response= true; end end end
然而,KbWait永远不会回来。当我尝试从命令行运行它时,它也不起作用。它只是挂起并拒绝返回,我必须打断程序。
答案 0 :(得分:1)
你发布这个已经九个月了,所以我想你已经找到了某种解决方案。但我也有这个问题,这就是我发现的:
我浏览了整个HID列表:devices = PsychHID('Devices') 当我检查每个人的'usageName'属性时,我发现多个设备被认为是'键盘',即使我只连接了一个实际的键盘。
然后我尝试将每个索引作为KbWait的参数。当我找到正确的那个时,KbWait工作了。
答案 1 :(得分:0)
您好,我认为您的问题是KbWait功能。
你使用KbWait就像ist KbCheck但这些函数的输出是不同的
[secs, keyCode, deltaSecs] = KbWait([deviceNumber][, forWhat=0][, untilTime=inf])
[keyIsDown, secs, keyCode, deltaSecs] = KbCheck([deviceNumber])
尝试KbCheck比KbWait更精确,因为KbWait每5毫秒检查一次键盘
这是我之前写的一个函数:working KbCheck