Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab KbWait-won';t寄存器按键_Matlab_Psychtoolbox - Fatal编程技术网

Matlab KbWait-won';t寄存器按键

Matlab KbWait-won';t寄存器按键,matlab,psychtoolbox,Matlab,Psychtoolbox,我正试图收集键盘数据,但我等不及要工作了。在下面的代码中,我试图等待参与者的响应,检查他们的响应是否是两个可接受答案中的一个,然后继续。只有当参与者按下“j”或“f”时,它才能继续 response=[]; 而i空(响应)和&(GetSecs-FlipTimestamp)

我正试图收集键盘数据,但我等不及要工作了。在下面的代码中,我试图等待参与者的响应,检查他们的响应是否是两个可接受答案中的一个,然后继续。只有当参与者按下“j”或“f”时,它才能继续

response=[];
而i空(响应)和&(GetSecs-FlipTimestamp)<10
[keyIsDown、RTsecs、RTkeyCode、deltaSecs]=KbWait;
如果是keyIsDown
r=查找(RTkeyCode);%这应该是按键的代码
响应=KbName(r);%找出按下了什么键
rt=num2str(RTsecs时间);%从窗口翻转时减去时间戳
如果响应=='f'
match_response=false;
结束
如果响应==“j”
match_response=true;
结束
结束
结束

然而,KbWait永远不会回来。当我试图从命令行运行它时,它也不起作用。它只是挂断并拒绝返回,我不得不中断程序。

您好,我想您的问题是KbWait函数

您使用的KbWait与KbCheck类似,但这些函数的输出是不同的

[secs, keyCode, deltaSecs] = KbWait([deviceNumber][, forWhat=0][, untilTime=inf])

[keyIsDown, secs, keyCode, deltaSecs] = KbCheck([deviceNumber])
尝试KbCheck比KbWait更精确,因为KbWait仅每5毫秒检查一次键盘


这里有一个我以前写过的函数:

你发布这篇文章已经九个月了,所以我想你已经找到了某种解决方案。但我也有这个问题,我发现:

我浏览了整个HID列表:devices=PsychHID('devices')) 当我检查每个设备的“usageName”属性时,我发现多个设备被认为是“键盘”,尽管我只连接了一个实际的键盘


然后我尝试将每个索引作为KbWait的参数。当我找到正确的一个时,KbWait工作了。

我最后用KbWait(-1)替换KbWait来修复它。我的猜测是,出于某种原因,MatLab认为某个地方有一个额外的键盘,但我不确定为什么会这样。尽管我用另一种方式解决了它(我只是拆开我的办公室,寻找一个我忘记了的蓝牙键盘),但我接受这是一个很好的通用解决方案。
[secs, keyCode, deltaSecs] = KbWait([deviceNumber][, forWhat=0][, untilTime=inf])

[keyIsDown, secs, keyCode, deltaSecs] = KbCheck([deviceNumber])