0

ラズベリーパイ、パイフェイス、パイソンスクリプトを使用して、いくつかのホームセンサーを監視しています。煙探知器からの感知線をそのリストに追加したいのですが、if ステートメントについて少し助けが必要です。

入力が信号を検出してからどのくらいの時間経過したかを if ステートメントに伝える方法がわかりません。4 秒未満で無視 (電池残量低下)、4 秒を超えると (煙が検出された) 警告が表示されます..

基本的に、以下のifステートメントを書くのに助けが必要です。

if piface.digital_read(0)==0 >= 4 seconds:
    # do x 
else:
    # do y

ループは必要ですか?上記のように簡単にできますか? (もちろん正しくコーディングされています!)

4

2 に答える 2

1

このようなもの(テストされていない疑似コード):

counter = 0
while True: #your main loop
    smoke = digital_read() #assume 0 = no alarm, 1 = alarm
    if smoke:
        counter += 1
    else:
        counter = 0
    if counter >= 4: #there was smoke for the last 4 seconds
        call_the_fire_brigade()
    time.sleep(1) #wait one second

おそらくいくつかのループが必要だと思います。

于 2013-09-17T20:19:42.757 に答える
0

これに対する良い解決策は、検出器ごとに個別のスレッドを生成し、ループで番号のブロッキングを使用することだと思います..のように

count = 0
while count < 4:
    if piface.digital_read(0) == 0:
        count += 1
    else: count = 0
    sleep(4000)
# ... rest of code ...
于 2013-09-17T20:23:05.663 に答える