带有Raspberry的GPIO回调函数的共享变量

2024-05-19 11:04:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python编写了一个简单的测试程序来检查当我按下Raspberry Pi中的按钮时是否发生了一些事情:

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!”但变量没有改变。据我所知,原因是因为回调函数是作为新线程调用的,当然不能正确设置变量。有没有办法以某种方式向回调函数发送共享变量?在

非常感谢你的建议。在


Tags: 函数importgpiomyascallbackpisleep
1条回答
网友
1楼 · 发布于 2024-05-19 11:04:09

嗨,找到解决办法,我贴出来也许有用。 使用全局这个词就可以了。在

因此,回调函数变为:

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

相关问题 更多 >

    热门问题