在Python中运行程序时,为什么在使用GPIO时需要清除命令?

评论

附带说明,与C程序一起使用的connectioningPi库没有Cleanup()函数。似乎GPIO.cleanup()可用,因为python功能会保留更改日志以清理这些更改。参见raspberrypi.stackexchange.com/questions/44807/…

#1 楼

如本文所述,RPi.GPIO基础3 –如何干净地退出GPIO程序,避免警告并保护您的Pi,正确使用GPIO.cleanup(),正确使用GPIO.cleanup()
RPi.GPIO提供了内置函数
GPIO.cleanup()来清理您使用过的所有端口。但是要非常清楚
这是做什么的。它只会影响您在当前程序中设置的任何端口。它将您在程序中使用的所有端口重置为输入模式。这样可以防止因以下情况而造成损坏:
您将端口设置为高输出,而又不小心将其
连接到GND(LOW),这会导致端口短路并可能炸掉。
输入可以处理0V(LOW)或3.3V(HIGH),因此将端口留作输入更安全。

希望清除您的疑问。

#2 楼

您不必使用清除方法。

据我所知,只有RPi.GPIO和RPIO.GPIO Python模块才具有清除方法。 cleanup方法将您曾经使用过的所有gpios设置为输入,并禁用这些gpios的内部上拉/下拉。

我的Pigpio Python模块没有清除方法,connectionPi2 Python也没有据我所知,模块。

评论


那么,清理命令的目的是什么?

–人类
15年8月13日在3:10

@人我认为没有什么目的,如果我认为有必要,可以添加这种方法。 dastaan​​在他的回答中指出了RPi.GPIO作者所使用的推理。我认为用户有理由去做他们自己做或不做的事情,这可能更多是出于哲学上的考虑。如果他们希望在程序完成后保留gpio作为输入,则应将其设置为输入。

–琼
15年8月13日在7:39



#3 楼

我在使用GPIO时遇到了一些问题,主要与尝试更改上一会话中已设置的模式和引脚方向有关。例如,有时如果我运行一个将引脚设置为输出的程序,然后又运行了一个将引脚设置为输入的程序而没有重新启动pi,则会收到一堆警告(例如“ RunTimeWarning:此通道已经在采用”)。当从单个程序调用各种与GPIO相关的功能时,这尤其成问题,因为有时程序会崩溃。

在更改GPIO设置之前或之后使用cleanup命令可以消除警告,并允许代码平稳运行,而不会发生任何GPIO设置警告。