Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用树莓Pi上的按钮切换while循环中的状态?_Python_Multithreading_While Loop_Raspberry Pi - Fatal编程技术网

Python 如何使用树莓Pi上的按钮切换while循环中的状态?

Python 如何使用树莓Pi上的按钮切换while循环中的状态?,python,multithreading,while-loop,raspberry-pi,Python,Multithreading,While Loop,Raspberry Pi,我试图找到一种方法,在while循环中使用树莓圆周率上的一个按钮在两个不同的条件之间切换。理想情况下,只要按下按钮,我就可以来回切换 我知道这是错误的,但我不知道该怎么办 大致上,我的代码如下所示: from gpiozero import Button btn=Button(17) #The GPIO pin is 17 def addSurf(): i = i + 1 i = 0 btn.when_pressed = addSurf while True: if i

我试图找到一种方法,在
while
循环中使用树莓圆周率上的一个按钮在两个不同的条件之间切换。理想情况下,只要按下按钮,我就可以来回切换

我知道这是错误的,但我不知道该怎么办

大致上,我的代码如下所示:

from gpiozero import Button

btn=Button(17) #The GPIO pin is 17

def addSurf():
    i = i + 1

i = 0

btn.when_pressed = addSurf

while True:
    if i % 2 == 0:
        #do some stuff
    else:
        #do some other stuff
由于在
while
循环之前,我在0处开始
I
,因此我认为,通过在按下按钮时添加整数,并检查模是否为零,我可以在这两种状态之间来回导航

然而,我不知道如何将
。当你按下
函数时,它总是会响应,将程序移动到一种状态或另一种状态


如果我是这里的新手,请原谅,但我尝试查看
raspberry gpio python
的文档,了解有关事件检测和多线程的信息,但我不理解。

结果是
按钮的问题。当按下
函数时,它不能接受任何参数,所以没有办法让它作为变量


虽然这可能不是正确的方法,但我最终在自己的线程中运行了两个不同的while循环,并使用了
按钮。当您按下
函数切换全局变量中整数的符号时,作为另一个线程的一种开关。

结果是
按钮的问题。当按下
函数时,它不能接受任何参数,因此无法将其作为变量


尽管这可能不是正确的方法,但我最终在自己的线程中运行了两个不同的while循环,并使用了
按钮。当按下
函数时,可以切换全局变量中的整数符号,就像切换其他线程一样。

您使用的库的文档位于。默认情况下,由于它使用python线程库,当您处于while循环中时,它应该自动启动该函数。您还可以查看python信号库。对于将来找到此库的任何人,他们可能会发现,知道我甚至没有打印
addSurf()
的输出很有帮助,这使得发布的代码根本无法工作。这里有一个很好的解释:您使用的库的文档位于。默认情况下,由于它使用python线程库,当您处于while循环中时,它应该自动启动该函数。您还可以查看python信号库。对于将来找到此库的任何人,他们可能会发现,知道我甚至没有打印
addSurf()
的输出很有帮助,这使得发布的代码根本无法工作。这里有一个很好的解释: