aboutsummaryrefslogtreecommitdiff
path: root/vimbaframe.py
diff options
context:
space:
mode:
Diffstat (limited to 'vimbaframe.py')
-rw-r--r--vimbaframe.py121
1 files changed, 0 insertions, 121 deletions
diff --git a/vimbaframe.py b/vimbaframe.py
deleted file mode 100644
index aa902a3..0000000
--- a/vimbaframe.py
+++ /dev/null
@@ -1,121 +0,0 @@
-# -*- coding: utf-8 -*-
-import vimbastructure as structs
-from vimbaexception import VimbaException
-from vimbadll import VimbaDLL
-from vimbadll import VimbaC_MemoryBlock
-from ctypes import *
-
-class VimbaFrame(object):
- """
- A Vimba frame.
- """
- def __init__(self, camera):
- self._camera = camera
- self._handle = camera.handle
-
- # get frame sizes
- self.payloadSize = self._camera.PayloadSize
- self.width = self._camera.Width
- self.height = self._camera.Height
-
- # frame structure
- self._frame = structs.VimbaFrame()
-
-
- def announceFrame(self):
- """
- Announce frames to the API that may be queued for frame capturing later.
-
- Runs VmbFrameAnnounce
-
- Should be called after the frame is created. Call startCapture
- after this method.
- """
- # size of expected frame
- sizeOfFrame = self.payloadSize
-
- # keep this reference to keep block alive for life of frame
- self._cMem = VimbaC_MemoryBlock(sizeOfFrame)
- # set buffer to have length of expected payload size
- self._frame.buffer = self._cMem.block
-
- # set buffer size to expected payload size
- self._frame.bufferSize = sizeOfFrame
-
- errorCode = VimbaDLL.frameAnnounce(self._handle,
- byref(self._frame),
- sizeof(self._frame))
-
- if errorCode != 0:
- raise VimbaException(errorCode)
-
-
- def revokeFrame(self):
- """
- Revoke a frame from the API.
- """
- errorCode = VimbaDLL.frameRevoke(self._handle,
- byref(self._frame))
-
- if errorCode != 0:
- raise VimbaException(errorCode)
-
-
- def queueFrameCapture(self):
- """
- Queue frames that may be filled during frame capturing.
- Runs VmbCaptureFrameQueue
-
- Call after announceFrame and startCapture
- """
- errorCode = VimbaDLL.captureFrameQueue(self._handle,
- byref(self._frame),
- None) # callback not implemented, callback example in pico?
- if errorCode != 0:
- raise VimbaException(errorCode)
-
-
- def waitFrameCapture(self, timeout = 2000):
- """
- Wait for a queued frame to be filled (or dequeued). Returns Errorcode
- upon completion.
- Runs VmbCaptureFrameWait
-
- timeout - int, milliseconds default(timeout, 2000)
-
- Call after an acquisition command
- """
- errorCode = VimbaDLL.captureFrameWait(self._handle,
- byref(self._frame),
- timeout)
-
- # errorCode to be processed by the end user for this function.
- # Prevents system for breaking for example on a hardware trigger
- # timeout
- #if errorCode != 0:
- #raise VimbaException(errorCode)
- return errorCode
-
- # custom method for simplified usage
- def getBufferByteData(self):
- """
- Retrieve buffer data in a useful format.
-
- :returns: array -- buffer data.
- """
-
- # cast frame buffer memory contents to a usable type
- data = cast(self._frame.buffer,
- POINTER(c_ubyte * self.payloadSize))
-
- # make array of c_ubytes from buffer
-
- array = (c_ubyte * self.height * self.width).from_address(addressof(data.contents))
-
- return array
-
-
-
-
-
-