|
| | filename = property(lib_mvIMPACT_acquire.RTCtrProgram_filename_get, doc=) |
| | A string property storing the filename for this program.
|
| | mode = property(lib_mvIMPACT_acquire.RTCtrProgram_mode_get, doc=) |
| | An enumerated integer property defining the current state this program is into.
|
| | programSize = property (getProgramSize, setProgramSize, None, None) |
| | An integer property (read-only) which holds the number program instructions for this program.
|
| | programState = property(lib_mvIMPACT_acquire.RTCtrProgram_programState_get, doc=) |
| | A string property (read-only) containing information about the current state of the program.
|
| | thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") |
A class to represent real time control programs(Device specific interface layout only).
Real time control programs can be used to control the way how an when images are exposed and transmitted to the user.
An mvIMPACT.acquire.RTCtrProgram e.g. can be used to achieve a constant frame rate with a desired frequency. This can be done e.g. by triggering the camera with a constant frequency.
def runAt10Hz(pBF):
bfs = acquire.CameraSettingsBlueFOX(pBF)
bfIOs = acquire.IOSubSystemBlueFOX(pBF)
bfs.triggerSource.write(acquire.ctsRTCtrl)
bfs.triggerMode.write(acquire.ctmOnRisingEdge)
if bfIOs.RTCtrProgramCount == 0:
return
pRTCtrlProgram = bfIOs.getRTCtrProgram(0)
if pRTCtrlProgram == None:
return
pRTCtrlProgram.setProgramSize(5)
progStep = 0
pRTCtrlStep = None
pRTCtrlStep = pRTCtrlProgram.programStep(progStep)
pRTCtrlStep.opCode.write(acquire.rtctrlProgWaitClocks)
pRTCtrlStep.clocks_us.write(99900)
progStep = progStep + 1
pRTCtrlStep = pRTCtrlProgram.programStep(progStep)
pRTCtrlStep.opCode.write(acquire.rtctrlProgTriggerSet)
progStep = progStep + 1
pRTCtrlStep = pRTCtrlProgram.programStep(progStep)
pRTCtrlStep.opCode.write(acquire.rtctrlProgWaitClocks)
pRTCtrlStep.clocks_us.write(100)
progStep = progStep + 1
pRTCtrlStep = pRTCtrlProgram.programStep(progStep)
pRTCtrlStep.opCode.write(acquire.rtctrlProgTriggerReset)
progStep = progStep + 1
pRTCtrlStep = pRTCtrlProgram.programStep(progStep)
pRTCtrlStep.opCode.write(acquire.rtctrlProgJumpLoc)
pRTCtrlStep.address.write(0)
pRTCtrlProgram.mode.write(acquire.rtctrlModeRun)
Once this program has been defined it can be executed by setting the mode property to mvIMPACT.acquire.rtctrlModeRun. As in this example we do not wait for an external signal the property triggerMode must be set to a value demanding an external signal (e.g. mvIMPACT.acquire.ctmOnHighLevel ; You will find a summary of the valid trigger modes in the sensor specific data in the "Sensor data" chapter of the specific product manual. triggerMode must be set to mvIMPACT.acquire.ctsRTCtrl to inform the driver that the signal generate by the real time program shall be used as the trigger signal.
- Note
- mvIMPACT.acquire.RTCtrProgram objects can't be created directly! To access an mvIMPACT.acquire.RTCtrProgram associated with a certain device create an instance of an object derived from mvIMPACT.acquire.IOSubSystem and then use the function mvIMPACT.acquire.IOSubSystem.RTCtrProgramCount() to find out if there are hardware real time controller machines available for this device and if so how many of them can be accessed. Pointers to the machines then can be obtained by calling the function mvIMPACT.acquire.IOSubSystem.getRTCtrProgram() with the number of the controller (zero based) to be modified.
-
This class will only be available if mvIMPACT.acquire.Device.interfaceLayout is set to mvIMPACT.acquire.dilDeviceSpecific before the device is opened.