我有一堆代码,我在这附加一块。基本上我有一个线程 - 它针对一个函数 - 有一个while循环如下:
ID NAME AGE
---------- -------- ----------
1 BUNNY 23
2 CHANIKYA 24
3 DEERAJ 24
4 KAVITHA 25
5 LAVANYA 26
6 SRUJAN 28
7 VINEETH 29
7 rows selected
我正在从MCU读取数据,通过该线程中的串行通信并将其发送回我的主程序 - 使用queue_read.put(data)。这是每1秒运行一次。
在我的主程序中,我正在读取此线程的输出为---
while not stop_event.wait(1): # Continuous Reading Function
#print "hello2"
#print ("working on %s" % arg)
data1 = Read(soa1, bytes1, ser)
data2 = Read(soa2, bytes2, ser)
data3 = Read(soa3, bytes3, ser)
data = np.concatenate([data1, data2, data3])
print data.size
queue_read.put(data)
time.sleep(1)
五分钟后,有意更改MCU中的值。在更改期间,此线程仍然在while循环中运行。
因此,五分钟后,变量“data”应该具有来自MCU的更新的新值。但令我惊讶的是,事实并非如此。它仍然具有初始值。这里有什么我想念的吗?是使用队列,获取数据的正确方法吗?
答案 0 :(得分:0)
以下方法可以连续地从队列中读取和处理数据,这样您就可以在数据发生变化时查看和响应数据:
while True:
self.data = queue_read.get()
self.update_GUI()
如果queue_read.get()
为空,则 queue_read
阻止。如果主线程除了更新GUI之外还执行任何操作,则需要在自己的线程中运行此代码。