我正在使用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