[英]Run GPIO process in background python
我正在使用Raspberry Pi 3和DHT11(溫度和濕度傳感器)來獲取周圍的值。
有時,通過其python模塊訪問傳感器時,會停頓2-5秒鍾,直到將數據發送回RPI(以及用於顯示結果的GUI)為止。 當僅將數據打印到終端而不涉及GUI更新時,也會發生此問題。
此延遲導致整個 GUI停頓。
關於在獲取數據測量方面的這種停頓作為系統限制,我想知道是否有可能在並行/后台運行此過程(更新temp變量)-它不會使整個GUI停頓嗎?
以下功能訪問傳感器並檢索數據:
ht_data():
h0,t0 = Adafruit_DHT.read_retry (11,4) # DHT module to obtain T&H
temp_var.set("%d"%t) ## update StringVar
hum_var.set("%d%%"%h) ## update StringVar
root.after(500, ht_data)
可能有一個更簡單的解決方案。
如您在這里看到的, read_retry
只是在重試之間使用read_retry
time.sleep()
,這從GUI的角度來看確實是不希望的。
因此,請嘗試使用read()
而不是read_retry()
,並且如果它返回(None, None)
,則不要更新值。
ht_data():
h0,t0 = Adafruit_DHT.read(11,4)
if h0 and t0:
temp_var.set("%d" % t0) ## update StringVar
hum_var.set("%d%%" % h0) ## update StringVar
root.after(2000, ht_data)
由於文檔表明您只能每兩秒鍾閱讀一次,因此我增加了超時來匹配它。
僅當使用read()
無效時,才應使用單獨的進程(或線程)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.