GPIO入力を監視するために、Raspberry Pi(組み込みプロセッサボード)のRaspbian(Linuxの一種)でPythonを使用しています。
以下の私のコードの簡略化されたバージョンを参照してください。GPIO i/p で何かが起こるのを待っている Python スクリプトに無限ループがあります。これは正しい方法ですか?つまり、これは、CPU がこのループを一周するだけでフル稼働していて、他のものに CPU サイクルが残っていないことを意味しますか? 特に、他のことを並行して実行する必要があるため(ブラウザなど)。
また、CPU が何か他のことをしているときにビジー状態になり、GPIO i/p が変更された場合はどうなりますか? GPIO イベントはどこかに保存されるので、最終的にはサービスが提供されますか?それとも失われるだけですか?
これを行うより良い方法はありますか?
(あなたの答えについては、私はLinuxが初めてで、v. Pythonとリアルタイムプログラミングが初めてであることに注意してください)
#!/usr/bin/python
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def ButtonHandler(channel):
print "Button pressed " + str(channel)
# do stuff here
GPIO.add_event_detect(16, GPIO.FALLING, callback=ButtonHandler, bouncetime=200)
while True:
pass