我在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