2017-07-09 6 views
0

周囲の値を取得するために、私はRaspberry Pi 3とDHT11(temp &湿気センサー)を使用しています。背景のpythonでGPIOプロセスを実行

時々、pythonモジュール経由でセンサーにアクセスしている間に、データがRPI(および結果を表示するためのGUI)に戻されるまで2〜5秒のストールが発生します。この問題は、端末にデータを印刷するだけで、GUIの更新は考慮しません。

GUIのこのストールの原因となります。 システムの制限としてデータ測定を取得するこのストールについては、このプロセスをparralel/background(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) 

答えて

1

次の関数へのアクセスセンサーとretierveデータ。

あなたがhereread_retryは、単に実際にGUIの観点から望ましくない再試行の間time.sleep()を使用して見ることができるように。

read_retry()の代わりにread()を使用してください。(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) 

文書には2秒に1度しか読むことができないことが示されているので、それに合わせてタイムアウトを増やしました。

read()を使用している場合のみ、別のプロセス(またはスレッド)を使用する必要があります。

+0

非常に良い! +ドキュメントリンクのおかげで:) –

関連する問題