2016-08-09 23 views
0

私はリレー付きのデバイスにいくつかの入力を変更していますが、ある時点でファームウェアを破損することが予想されます。問題はいつ起こるのだろうか?GPIOが時間内に切り替わらないとループが途切れる

ファームウェアが破損しているかどうかを判断するために、通常の動作中に通常点滅するいくつかのLEDを監視しています。私は彼らがファームウェアが壊れたときに彼らが現在いるどのような状態でもロックアップすることを知っています。ですから、私の明るいアイデアは、その信号をラズベリーパイに戻し、そのGPIOを変更状態で見ることです。状態が変わるのを見たら、次にリレーを反転させてください...そして、LEDを見て、まだ点滅していることを確認してください。すすぎ、繰り返してください。

しかし、私は通常、Cの割り込みか何かでこれを確認するだろうが、私はPythonでこれを書いている...

これを処理するためのPythonの方法は何ですか? 2秒間何も点滅が見られない場合は、テストは終わったが、私はsleepのようなものを呼び出さずにこれを行う方法がわからない。ピンの変更を監視します。

+1

['signal.alarm()'](https://docs.python.org/3/library/signal.html# signal.alarm)などです。私はそれにより得たよう –

答えて

0

gpioモジュールでは、立ち上がりエッジ(または立ち下がりエッジなど)が検出されるたびに発生するスレッドコールバック関数を作成します。

この関数内でsignalを使用すると、ピンが変わるたびにアラームをリセットするためにsignal.alarm()を呼び出します。

最後にアラームが時間にリセットされていない場合にどうするかについて関数を登録するsignal.signal()を使用

あなたは、残念ながら窓を使用している場合、これは動作しません(つまり、ファームウェアが壊れています)...あなたがいる場合は、スレッディング付きの独自のアラームシステムを実装する必要があります

+0

これは...かなり良いですが、私は少し異なるルート行きました: – testname123

+0

ながら(not_broken) {行いを操作 GPIO.Wait_for_falling_edge(タイムアウト= X秒) /else文の場合ループを壊すために } – testname123

関連する問題