我在Windows中使用Builder独立的PsychoPy 1.80.07。我试图找出如何创建一个代码组件来接收来自Logitech F310游戏手柄的响应。理想情况下,我想只使用触发器。当我运行实验(这是Stroop键盘IO演示,IO键盘代码组件代码替换为下面的代码)时,我没有收到任何错误代码。它似乎运行良好,但它只是显示第一次审判,并等待主题响应,因为它认为它不听手柄。另外,我可以运行XInput Gamepad Coder Demo,一切正常。我是编码方面的新手,所以任何帮助指出我犯过错误的地方都会非常感谢!Psychopy IO游戏手柄
以下是我在我的代码组件:
#Begin Experiment
try:
from psychopy import visual, core
from psychopy.iohub import launchHubServer, EventConstants
from psychopy.data import getDateStr
kwargs={'psychopy_monitor_name':'default','xinput.Gamepad':{}}
io=launchHubServer(**kwargs)
gamepad=io.devices.gamepad
except Exception, e:
import sys
print "!! Error starting ioHub: ",e," Exiting..."
sys.exit(1)
#Begin Routine
response_event=None
trial_start=0
io.clearEvents()
#Each Frame
if frameN == 0:
io.clearEvents('all')
trial_start=core.getTime()
else:
gamepadState=gamepad.getEvents()
for anyState in gamepadState:
if anyState in [u'left_trigger',u'right_trigger']:
response_event=gamepadState
continueRoutine = False
break
#End Routine
trials.addData("trial_start_time", trial_start)
if response_event:
trials.addData("resp.time", response_event.time)
trials.addData("resp.rt", response_event.time-trial_start)
trials.addData("resp.duration", response_event.duration)
trials.addData('resp.keys',response_event.key)
trials.addData('resp.corr', response_event.key.lower()==corrAns)
else:
trials.addData("resp.time",-1.0)
trials.addData("resp.rt", -1.0)
trials.addData("resp.duration", -1.0)
trials.addData('resp.keys','None')
trials.addData('resp.corr', False)
#End Experiment
io.quit()
我可疑的是,gamePadState不仅包含与按下按钮相对应的字符串,因此您的“如果anyState in ...”检查总是失败。你能让我们知道“print(anyState); print(type(anyState))”的结果是什么吗? – 2014-09-14 21:10:50