我正在尝试收集键盘数据,但无法让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永远不会返回。当我尝试从命令行运行它时,它也不起作用。它只是挂断了,拒绝返回,我不得不中断程序。
您发布这篇文章已经九个月了,所以我想您已经找到了某种解决方案。但我也遇到了这个问题,下面是我发现的:
我浏览了我的整个HID列表:设备=PsychHID("设备")当我检查每个设备的"usageName"属性时,我发现多个设备被认为是"Keyboard",尽管我只连接了一个实际的键盘。
然后,我尝试将每个索引作为KbWait的参数。当我找到正确的一个时,KbWait起作用了。
您使用了类似于ist KbCheck的KbWait,但这些函数的输出是不同的
[secs, keyCode, deltaSecs] = KbWait([deviceNumber][, forWhat=0][, untilTime=inf])
[keyIsDown, secs, keyCode, deltaSecs] = KbCheck([deviceNumber])
尝试KbCheck它比KbWait更精确,因为KbWait只每隔5毫秒检查一次键盘
这是我以前写的一个函数:工作KbCheck