簡體   English   中英

在后台python中運行GPIO進程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM