5

Raspberry Pi でボタンを押したときに何かが起こるかどうかを確認するために、Python でこの簡単なテスト プログラムを作成しました。

import RPi.GPIO as GPIO
from time import sleep

GPIO.setmode(GPIO.BCM)
GPIO.setup(24, GPIO.IN, pull_up_down = GPIO.PUD_UP)

testVar=0

def my_callback(channel):
  print "Pressed!"
  testVar= 32

GPIO.add_event_detect(24, GPIO.FALLING, callback=my_callback, bouncetime=200)
while True:
    print str(testVar)
    sleep(0.5)

0 の値しか読み取っていません。ボタンを押すと、「Pressed!」と表示されます。しかし、変数は変化しませんでした。私が理解していることから、その理由は、コールバック関数が新しいスレッドとして起動され、もちろん変数を正しく設定できないためです。何らかの方法で共有変数をコールバック関数に送信する方法はありますか?

良いアドバイスをありがとう。

4

2 に答える 2

5

こんにちは、解決策を見つけてください。役に立つかもしれません。投稿しています。グローバルという言葉を使用すると、それが機能します。

したがって、コールバック関数は次のようになります。

def my_callback(channel):
    global testVar
    print "Pressed!"
    testVar= 32
于 2015-04-23T14:06:35.433 に答える