Search code examples
python-3.xflycapturepyspin

What is the PySpin equivalent of the PyCapture2 camera Power ON function/method?


I am searching for a method to test if the camera is on for PTG camera.

In PyCapture2 the below code works but the presumed PySpin cam.DeviceConnectionStatus() will not work because the function seems not to be present.

PySpin Camera library version: 1.23.0.27

The Error:

Error: Spinnaker: GenICam::AccessException= Feature not present (reference not valid) : AccessException thrown (file 'IEnumerationT.h', line 341) [-2006] (False, SpinnakerException("Spinnaker: GenICam::AccessException= Feature not present (reference not valid) : AccessException thrown (file 'IEnumerationT.h', line 341) [-2006]"))

I've tried also PySpin.Camera.DeviceConnectionStatus() but it gives the following error whether prior or after cam.Init():

 Traceback (most recent call last):
  File "X.py", line 82, in YZ
    print (PySpin.Camera.DeviceConnectionStatus())
TypeError: 'property' object is not callable

Working PyCapture2 code:

    def cameraOn(self, cam):

        # Power on the Camera
        cameraPower = 0x610
        powerVal = 0x80000000

        cam.writeRegister(cameraPower, powerVal)

        # Waiting for camera to power up
        retries = 10
        timeToSleep = 0.1    #seconds
        for i in range(retries):
            sleep(timeToSleep)
            try:
                regVal = cam.readRegister(cameraPower)
            except PyCapture2.Fc2error:    # Camera might not respond to register reads during powerup.
                pass
            awake = True
            if regVal == powerVal:
                break
            awake = False
        if not awake:
            print ("Could not wake Camera. Exiting...")
            exit()

Solution

  • As it seems there is an IsValid() function available from the CameraBase() class in the PySpin/Spinnaker library. This function returns either the bool True once a connection could be made, communication was successful and the camera is still valid for use or a "False" respectively. However, this function does not turn the camera ON or OFF. Nor does it power from a sleep/wake state.

    For unknown reasings the IsValid() function does not report back tracebacks for logging or debug purpose. So keep in mind to implement try/except for certain methods.

    try:
        ... your code ...
    
    except PySpin.SpinnakerException as error:
                print('Error: %s' % error)
                return False, error