0

これは、私たちのラボで実行している実験用です。最初に、スクリプトは参加者番号を要求し、C: にファイルを作成します。実験中、ゲームパッドを持った参加者は 1 つのボタン (8) を押し、ボタンを押すたびに現在の時刻がファイルに書き込まれます。q ボタンは終了メッセージを返し、スクリプトを終了します。

そして、それは機能しません。問題はジョイスティックにあると思います。どんな助けでも大歓迎です。

FormatTime, timestamp, , yyyy_MM_dd_HH_mm
JoystickNumber = 1      
#SingleInstance
#persistent

InputBox, ssnum, Subject Number, Please enter the participant number
if ErrorLevel
    ExitApp
else
thefilename=%ssnum%_T_%timestamp%
    FileAppend,
        (
            %ssnum%%timestamp%
        ), C:\%thefilename%.txt
    return

Loop
{
GetKeyState, state, Joy8
    if state = D
        FileAppend,
        (
            %timestamp%, 
        ), C:\%thefilename%.txt
}

q::
MsgBox Exiting.  Your data is saved in the C drive as %thefilename%.txt
ExitApp
4

1 に答える 1

0

return主な問題は、ループに到達する前にa をヒットしていることです。

コードを少しクリーンアップし、ループをホットキーに変えました。これにより、キーが保持されている場合にファイルへの複数の書き込みが防止されます。ボタンの長押しを数える必要がある場合は、持っていたループを使用できます。

FormatTime, timestamp, , yyyy_MM_dd_HH_mm
JoystickNumber = 1      
#SingleInstance
#Persistent

InputBox, ssnum, Subject Number, Please enter the participant number
if ErrorLevel
    ExitApp

thefilename = C:\%ssnum%_T_%timestamp%.txt
FileAppend, %ssnum%`t%timestamp%`n, %thefilename%

~Joy8::
    FormatTime, timestamp, , HH:mm:ss
    FileAppend, %timestamp%`n, %thefilename%
Return

q::
    MsgBox Exiting.  Your data is saved in the C drive as %thefilename%
    Run % thefilename
    ExitApp
于 2013-05-24T20:24:12.783 に答える