Python:关闭按键循环

时间:2017-06-07 20:39:47

标签: python loops security raspberry-pi exit

我正在构建一个带有树莓派https://www.raspberrypi.org/learning/parent-detector/worksheet/的运动检测安全摄像头。

代码工作正常,但我希望设备在启动时运行我的python代码,我希望它在我按某个键时关闭程序。截至目前,程序运行但不会离开循环,所以我无法进入树莓派桌面(我的解决方法是关闭设备,手动取下相机,重新打开设备,到得到一个错误,因为没有检测到相机将代码退出桌面......我知道效率非常低!)

本质上,这段代码是为了从连接到显示器,键盘等的pi运行程序而编写的。我想把它插在某个地方并让它装备相机。然后在我回到家里(工作,休假等)之后,我想插入一个键盘,按一个键退出程序,关闭安全,并能够在我将它连接到监视器时查看任何安全事件。 / p>

脚本代码:

from gpiozero import MotionSensor
from picamera import PiCamera
from datetime import datetime

camera = PiCamera()
pir = MotionSensor(4)
while True:
    pir.wait_for_motion()
    filename = datetime.now().strftime("%Y-%m-%d_%H.%M.%S.h264")
    camera.start_recording(filename)
    pir.wait_for_no_motion()
    camera.stop_recording()

1 个答案:

答案 0 :(得分:0)

您可以在运行脚本的命令行窗口中使用Ctrl + C停止程序执行。

如果您还想进行一些处理,请将while循环包装在try块中:

try:
    while True:
        pir.wait_for_motion()
        filename = datetime.now().strftime("%Y-%m-%d_%H.%M.%S.h264")
        camera.start_recording(filename)
        pir.wait_for_no_motion()
        camera.stop_recording()
except KeyboardInterrupt:
    pass

# Continue your code here

如果您想选择停止程序的键(Ctrl + C除外)和/或当您从操作系统的任何位置按键时停止,那么我建议使用{{3库。