aboutsummaryrefslogtreecommitdiff
path: root/test.py
diff options
context:
space:
mode:
authormorefigs <morefigs@gmail.com>2013-12-24 20:05:11 -0800
committermorefigs <morefigs@gmail.com>2013-12-24 20:05:11 -0800
commitf2ee5f9293fc799e1bb70615aa958207b10b2c78 (patch)
tree28e9f4ed628ff01b9964bb261d049dd4578e9256 /test.py
parent756ae8bd259789bc7b8f1b9141c8008ca3515056 (diff)
downloadpymba-f2ee5f9293fc799e1bb70615aa958207b10b2c78.tar.gz
pymba-f2ee5f9293fc799e1bb70615aa958207b10b2c78.zip
Create test.py
Diffstat (limited to 'test.py')
-rw-r--r--test.py124
1 files changed, 124 insertions, 0 deletions
diff --git a/test.py b/test.py
new file mode 100644
index 0000000..3dc8643
--- /dev/null
+++ b/test.py
@@ -0,0 +1,124 @@
+# -*- coding: utf-8 -*-
+import vimbastructure as structs
+from vimbaobject import VimbaObject
+from vimbaexception import VimbaException
+from vimbaframe import VimbaFrame
+from vimbadll import VimbaDLL
+from ctypes import *
+
+# camera features are automatically set as attributes of camera.
+class VimbaCamera(VimbaObject):
+ """
+ A Vimba camera object. This class provides the minimal access
+ to Vimba functions required to control the camera.
+ """
+
+ @property
+ def cameraIdString(self):
+ return self._cameraIdString
+
+ # own handle is inherited as self._handle
+ def __init__(self, cameraIdString):
+
+ # call super constructor
+ super(VimbaCamera, self).__init__()
+
+ # set ID
+ self._cameraIdString = cameraIdString
+
+ # set own info
+ self._info = self._getInfo()
+
+ def getInfo(self):
+ """
+ Get info of the camera. Does not require
+ the camera to be opened.
+
+ :returns: VimbaCameraInfo object -- camera information.
+ """
+ return self._info
+
+ def _getInfo(self):
+ """
+ Get info of the camera. Does not require
+ the camera to be opened.
+
+ :returns: VimbaCameraInfo object -- camera information.
+ """
+ # args for Vimba call
+ cameraInfo = structs.VimbaCameraInfo()
+
+ # Vimba DLL will return an error code
+ errorCode = VimbaDLL.cameraInfoQuery(self._cameraIdString,
+ byref(cameraInfo),
+ sizeof(cameraInfo))
+ if errorCode != 0:
+ raise VimbaException(errorCode)
+
+ return cameraInfo
+
+ def openCamera(self):
+ """
+ Open the camera.
+ """
+ # args for Vimba call
+ cameraAccessMode = 1 # full access (see VmbAccessModeType)
+
+ errorCode = VimbaDLL.cameraOpen(self._cameraIdString,
+ cameraAccessMode,
+ byref(self._handle))
+ if errorCode != 0:
+ raise VimbaException(errorCode)
+
+ def closeCamera(self):
+ """
+ Close the camera.
+ """
+ errorCode = VimbaDLL.cameraClose(self._handle)
+ if errorCode != 0:
+ raise VimbaException(errorCode)
+
+ def revokeAllFrames(self):
+ """
+ Revoke all frames assigned to the camera.
+ """
+ errorCode = VimbaDLL.frameRevokeAll(self._handle)
+ if errorCode != 0:
+ raise VimbaException(errorCode)
+
+ def startCapture(self):
+ """
+ Prepare the API for incoming frames.
+ """
+ errorCode = VimbaDLL.captureStart(self._handle)
+ if errorCode != 0:
+ raise VimbaException(errorCode)
+
+ def endCapture(self):
+ """
+ Stop the API from being able to receive frames.
+ """
+ errorCode = VimbaDLL.captureEnd(self._handle)
+ if errorCode != 0:
+ raise VimbaException(errorCode)
+
+ def flushCaptureQueue(self):
+ """
+ Flush the capture queue.
+ """
+ errorCode = VimbaDLL.captureQueueFlush(self._handle)
+ if errorCode != 0:
+ raise VimbaException(errorCode)
+
+ # method for easy frame creation
+ def getFrame(self):
+ """
+ Creates and returns a new frame object. Multiple frames
+ per camera can therefore be returned.
+
+ :returns: VimbaFrame object -- the new frame.
+ """
+ return VimbaFrame(self)
+
+
+