Detect picamera in use error

This commit is contained in:
Kaspar Emanuel 2020-12-02 10:43:43 +00:00
parent cc1c5e77c3
commit cc73aec257

View file

@ -13,13 +13,17 @@ picamera_errors = (
"Camera is not enabled. Try running 'sudo raspi-config' and ensure that the camera has been enabled.", "Camera is not enabled. Try running 'sudo raspi-config' and ensure that the camera has been enabled.",
) )
picamera_mmal_errors = {
"Failed to enable connection: Out of resources": "Camera already in use by another application."
}
def main(): def main():
error_sources = [] error_sources = []
logging.info("Attempting to import picamera...") logging.info("Attempting to import picamera...")
try: try:
from picamerax import PiCamera import picamerax
except Exception as e: # pylint: disable=W0703 except Exception as e: # pylint: disable=W0703
# TODO: Parse exception object for a few different issues, and append # TODO: Parse exception object for a few different issues, and append
# different error sources E.g. pi with camera already in use, # different error sources E.g. pi with camera already in use,
@ -27,12 +31,14 @@ def main():
logging.error(e) logging.error(e)
error_sources.append(picamera_import_error) error_sources.append(picamera_import_error)
else: else:
import picamerax.exc.PiCameraError
try: try:
cam = PiCamera() cam = picamerax.PiCamera()
except picamerax.exc.PiCameraError as e: except picamerax.PiCameraError as e:
if e.args[0] in picamera_errors: if e.args[0] in picamera_errors:
error_sources.append(ErrorSource(e.args[0])) error_sources.append(ErrorSource(e.args[0]))
elif e.args[0] in picamera_mmal_errors:
error_sources.append(ErrorSource(picamera_mmal_errors[e.args[0]]))
else:
error_sources.append(ErrorSource(e.args[0]))
return error_sources return error_sources