我正在使用National Instruments主板進行數據採集。我有功能C代碼來完成任務,但想使用Python,所以GUI編程不那麼痛苦。在我的C代碼中,我使用API調用setTimer,它定期提出一個WM_TIMER事件。 Tk循環中是否有類似的機制?我嘗試使用下面的代碼。使用Python進行數據採集
def DAQ(self):
if self.do_DAQ:
result = self.myDAQ.getData()
currTime = time.time() - self.start_time
self.time_label.config(text="{:.1f} seconds".format(currTime))
self.volt_label.config(text="{:.4f} volts".format(result))
self.time_data[self.i] = currTime
self.volt_data[self.i] = result
self.i += 1
self.after(1962, self.DAQ)
在神奇的「1962年」後()被反覆試驗來確定給予約2秒的延遲,但時間片漂移取決於還有什麼是在隊列中。有什麼辦法可以做到這一點,所以我的時間片更精確?具體而言,我可以強制Tk在隊列中的其他事情之前執行我的DAQ事件嗎?
您可能想要修改這個標題 - 這個問題實際上並不是真的與數據採集有關,而是像TK事件循環的準確計時那樣。您可能希望以您喜歡的速率在單獨的線程中進行數據採集,並讓您的GUI每隔n個時鐘輪詢一次隊列以獲取新數據。 – Iguananaut