2016-09-14 17 views
0

Psychopy/Pythonの場合:whileループの中で、いくつかの情報(pyserialを使用)を読み込み、すべてのフレームのリストに追加する必要があります。Python:whileループ内の各フレームへのアクセス

t = trialClock.getTime() 
while True: 

    line = ser.readline() #read in line 
     if line: 
     lines.append(line) #append to list 

    ... 

トライアルクロックを使用して各フレームにアクセスするにはどうすればよいですか?私はラインを読み、0.016ms(60hz)ごとにリストに追加する必要があります。

おかげ スティーブ

答えて

0

あなたが持っている必要があります:

win.flip() 

whileループ内のコードの末尾にフレームリフレッシュに一回のループだけ反復するようにします。つまり、コードはその時点で画面が実際に再描画されるまで一時停止し、ループを60 Hzに制限します(画面がそのレートでリフレッシュされると仮定します)。

このように、ソフトウェアタイマーを使用するのではなく、非常に正確なハードウェアタイミングを使用しています。

+0

ご回答いただきありがとうございます。私は最後にwin.flip()を持っています。コードのこの部分の後には他にもたくさんのものがあります。これは10秒くらいごとにリストに追加されるためです。 0.016ごとにどのように追加することができますか? – Steve

+0

私は、「たくさんの他のもの」は16ミリ秒以内に完了できず、さらに10秒かかるかもしれないことを意味します。したがって、コードを別のプロセスに移動する(または、非同期ハードウェアインターフェイスを可能にするように設計されたioHubを使用する)など、実行中の作業を完全に再構築しない限り、60 Hzでのチェックはオプションになりません。 –

関連する問題