2016-09-14 35 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檢查將不會成爲選項。 –