使用Raspistill和Raspberry Pi

时间:2016-03-12 07:25:57

标签: python raspberry-pi subprocess

请帮助我在以下场景中使用子进程时处理异常。我相信你们中的许多人都可以提出一些非常先进的异常陷阱,但我真的在寻找基本的知识,所以我可以随着时间的推移逐步建立起来。此代码将jpeg图像写入已安装的Windows网络共享。我故意切换共享的读/写权限,基本上拒绝Pi访问。我不希望我的程序在没有良好存储位置的情况下发出它的数字内容,而只是传递给我一个明智的信息。

    snap_pic = 'raspistill -t 1200 -a '+pic_tag+' -ae 50,0x00,0x8080FF -o '+file_path
        try:
            subprocess.check_call(snap_pic, shell=True)
        except subprocess.CalledProcessError:
            print ( 'Cannot write to network storage' )
            sys.exc_clear()
        else:
            print ( 'Image number '+image_no+' being processed' )

在今晚之前,我甚至不知道“subprocess”是什么,我使用os.system来调用'snap_pic'。我看到了一些诱捕限制,所以在这里我试图加强我的小游戏。 我应该在这里使用.call或.check_call吗? 无论连接是否存在,我的“except”命令总是会被绕过。 我是否必须为此代码段的每次迭代清除这些行的错误标志?

与往常一样,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

尝试使用PiCamera Python package。与使用子进程相比,它使用起来更简单,更清晰。

以下是演示如何拍照的文档中的基本示例:

import time
import picamera

with picamera.PiCamera() as camera:
    camera.resolution = (1280, 720)
    camera.start_preview()
    camera.exposure_compensation = 2
    camera.exposure_mode = 'spotlight'
    camera.meter_mode = 'matrix'
    camera.image_effect = 'gpen'
    # Give the camera some time to adjust to conditions
    time.sleep(2)
    camera.capture('foo.jpg')
    camera.stop_preview()