------------------------------------------------------------------------------- Matrox Imaging Library (MIL) 10.0 Release Notes (milirisgt) December, 2013 (c) Copyright Matrox Electronic Systems Ltd., 1992-2013. ------------------------------------------------------------------------------- This document explains the current limitations and particularities when using MIL with Matrox Iris GT. It also presents last minute information that did not make it into the manual or on-line help. Note that this text file serves to complement your manual. The information found in this file overrides your formally documented material. Contents 1. MIL 10 implementation changes 2. Known limitations =============================================================================== 1. MIL 10 implementation changes MdigControl/MdigInquire Old control/inquire type New control/inquire type ----------------------------------------------------+------------------ M_GRAB_EXPOSURE_TIME M_EXPOSURE_TIME M_GRAB_EXPOSURE_TIME + M_TIMER1 ----------------------------------------------------+------------------ M_GRAB_EXPOSURE_TIME_DELAY M_EXPOSURE_DELAY M_GRAB_EXPOSURE_TIME_DELAY + M_TIMER1 ----------------------------------------------------+------------------ M_GRAB_EXPOSURE + M_TIMER2 M_TIMER_STATE + M_TIMER2 Possible value M_DEFAULT or M_DISABLE M_ENABLE ----------------------------------------------------+------------------ M_GRAB_EXPOSURE_TIME + M_TIMER2 M_TIMER_DURATION + M_TIMER2 Possible value Value or M_INFINITE ----------------------------------------------------+------------------ M_GRAB_EXPOSURE_TIME_DELAY + M_TIMER2 M_TIMER_DELAY + M_TIMER2 ----------------------------------------------------+------------------ M_GRAB_EXPOSURE_SOURCE M_TIMER_TRIGGER_SOURCE + M_TIMER2 + M_TIMER2 Possible value M_DEFAULT or M_EXPOSURE_START M_GRAB_TRIGGER Value M_TIMER1 changed into M_DEFAULT or M_EXPOSURE_START ----------------------------------------------------+------------------ M_GRAB_EXPOSURE_MODE M_EXPOSURE_OUTPUT_INVERTER M_GRAB_EXPOSURE_MODE + M_TIMER1 Possible value M_DEFAULT or M_DISABLE M_ENABLE Value M_LEVEL_HIGH changed into M_DISABLE Value M_LEVEL_LOW changed into M_ENABLE ----------------------------------------------------+------------------ M_GRAB_EXPOSURE_MODE M_TIMER_OUTPUT_INVERTER + M_TIMER2 + M_TIMER2 Possible value M_DEFAULT or M_DISABLE M_ENABLE Value M_LEVEL_HIGH changed into M_DISABLE Value M_LEVEL_LOW changed into M_ENABLE ----------------------------------------------------+------------------ M_GRAB_EXPOSURE_TRIGGER_MISSED M_GRAB_TRIGGER_MISSED Possible value M_DEFAULT or M_DISABLE M_ENABLE ----------------------------------------------------+------------------ M_GRAB_TRIGGER M_GRAB_TRIGGER_STATE Possible value M_DEFAULT or M_DISABLE M_ENABLE ----------------------------------------------------+------------------ M_GRAB_TRIGGER_MODE M_GRAB_TRIGGER_ACTIVATION Possible value M_DEFAULT or M_EDGE_RISING M_EDGE_FALLING ----------------------------------------------------+------------------ M_GRAB_TRIGGER_SOURCE M_GRAB_TRIGGER_SOURCE Possible value M_SOFTWARE M_AUX_IO8 Value M_HARDWARE_PORT0 changed into M_AUX_IO8 ----------------------------------------------------+------------------ MdigInquire Old inquire type New inquire type ----------------------------------------------------+------------------ M_GRAB_EXPOSURE_TIME_MIN M_EXPOSURE_TIME + M_MIN_VALUE ----------------------------------------------------+------------------ M_GRAB_EXPOSURE_TIME_MAN M_EXPOSURE_TIME + M_MAX_VALUE ----------------------------------------------------+------------------ M_GRAB_EXPOSURE_TIME_MIN M_TIMER_DURATION + M_TIMER2 + M_TIMER2 + M_MIN_VALUE ----------------------------------------------------+------------------ M_GRAB_EXPOSURE_TIME_MAX M_TIMER_DURATION + M_TIMER2 + M_TIMER2 + M_MAX_VALUE ----------------------------------------------------+------------------ MsysControl/MsysInquire Old control/inquire type New control/inquire type ----------------------------------------------------+------------------ Control of an output Control of an output M_USER_BIT_VALUE M_USER_BIT_STATE + [4...7] + M_USER_BIT[4...7] M_USER_BIT_VALUE + M_USER_BIT_STATE_ALL M_BIT_MASK(bit encoded value) Inquire of an output Inquire of an output M_USER_BIT_VALUE M_USER_BIT_STATE + [4...7] + M_USER_BIT[4...7] M_IO_STATUS + M_AUX_IO[4...7] M_USER_BIT_VALUE M_USER_BIT_STATE_ALL + M_BIT_MASK(bit encoded value) Returns MIL_INT64 Possible value M_OFF M_ON M_UNKNOWN ----------------------------------------------------+------------------ M_USER_BIT_INTERRUPT_MODE M_IO_INTERRUPT_ACTIVATION + [0...3] + M_AUX_IO[0...3] Possible value M_DEFAULT or M_EDGE_RISING M_EDGE_FALLING ----------------------------------------------------+------------------ M_USER_BIT_INTERRUPT_STATE M_IO_INTERRUPT_STATE + [0...3] + M_AUX_IO[0...3] Possible value M_DEFAULT or M_DISABLE M_ENABLE ----------------------------------------------------+------------------ M_AUX_SIGNAL_SOURCE + [4...7] M_IO_SOURCE + M_AUX_IO[4...7] Possible value M_USER_BIT[4...7] M_DEFAULT M_EXPOSURE M_GRAB_TRIGGER M_TIMER2 Value M_USER_BIT changed to M_USER_BIT[4...7] Value M_GRAB_EXPOSURE changed to M_EXPOSURE Value M_GRAB_EXPOSURE + M_TIMER1 changed to M_EXPOSURE Value M_GRAB_EXPOSURE + M_TIMER2 changed to M_TIMER2 ----------------------------------------------------+------------------ M_AUX_SIGNAL_DEBOUNCE_TIME M_IO_DEBOUNCE_TIME + [0-1-2-3-8] + M_AUX_IO[0-1-2-3-8] Possible value 250 1000 5000 10000 1000000 10000000 25000000 ----------------------------------------------------+------------------ MsysInquire Old inquire type New inquire type ----------------------------------------------------+------------------ Inquire of an input Inquire of an input M_USER_BIT_VALUE M_IO_STATUS + [0...3] + M_AUX_IO[0...3] M_USER_BIT_VALUE M_IO_STATUS_ALL + M_BIT_MASK(bit encoded value) Returns MIL_INT64 ----------------------------------------------------+------------------ M_USER_BIT_COUNT M_AUX_IO_COUNT M_USER_BIT_COUNT_IN M_AUX_IO_COUNT_IN M_USER_BIT_COUNT_OUT M_AUX_IO_COUNT_OUT ----------------------------------------------------+------------------ Other changes ----------------------------------------------------+------------------ MsysHookFunction(SysId, Type, M_USER_BIT_CHANGE, HPtr, DPtr) Replaced by MsysHookFunction(SysId, Type, M_IO_CHANGE, HPtr, DPtr) ----------------------------------------------------+------------------ MsysGetHookInfo(SysId, EvId, M_USER_BIT, UPtr) Replaced by MsysGetHookInfo(SysId, EvId, M_IO_INTERRUPT_SOURCE, UPtr) Value 0 return changed into M_AUX_IO0 Value 1 return changed into M_AUX_IO1 Value 2 return changed into M_AUX_IO2 Value 3 return changed into M_AUX_IO3 ----------------------------------------------------+------------------ MsysGetHookInfo(SysId, EvId, M_USER_BIT_STATE, UPtr) Replaced by MsysGetHookInfo(SysId, EvId, M_IO_STATUS, UPtr) ----------------------------------------------------+------------------ MsysGetHookInfo(SysId, EvId, M_GRAB_EXPOSURE_TRIGGER_MISSED, UPtr) Replaced by MsysGetHookInfo(SysId, EvId, M_GRAB_TRIGGER_MISSED, UPtr) ----------------------------------------------------+------------------ MdigControl(DigId, M_GRAB_TRIGGER, M_ACTIVATE) Replaced by MdigControl(DigId, M_GRAB_TRIGGER_SOFTWARE, M_ACTIVATE) ----------------------------------------------------+------------------ MdigLut(DigId, LutId) Replaced by MdigControl(DigId, M_LUT_ID, LutId) ----------------------------------------------------+------------------ MdigReference(DigId, M_BLACK_REF, Value) Replaced by MdigControl(DigId, M_BLACK_REF, Value) ----------------------------------------------------+------------------ Addition ----------------------------------------------------+------------------ MdigInquire M_EXPOSURE_DELAY + M_MIN_VALUE ----------------------------------------------------+------------------ MdigInquire M_EXPOSURE_DELAY + M_MAX_VALUE ----------------------------------------------------+------------------ MdigInquire M_TIMER_DELAY + M_TIMER2 + M_MIN_VALUE ----------------------------------------------------+------------------ MdigInquire M_TIMER_DELAY + M_TIMER2 + M_MAX_VALUE ----------------------------------------------------+------------------ MsysControl/MsysInquire M_IO_MODE + M_AUX_IO[n] Possible value M_INPUT for n=0,1,2,3,8 M_OUTPUT for n=4,5,6,7,9 ----------------------------------------------------+------------------ MsysControl/MsysInquire M_IO_FORMAT + M_AUX_IO[n] Possible value M_OPTO for n=0,1,2,3,8 M_OPEN_DRAIN for n=4,5,6,7 M_CURRENT_SOURCE for n=9 ----------------------------------------------------+------------------ MsysInquire M_CC_IO_COUNT MsysInquire M_TL_IO_COUNT MsysInquire M_TL_TRIGGER_COUNT ----------------------------------------------------+------------------ 2. Known limitations - MdigControl with M_GRAB_INPUT_GAIN can allow the user to program a gain value that is not optimal according to the type of camera. On the Iris GT1200, any input gain value set below 64 does not allow for the complete CCD pixel saturation to acquire a value of 255. On the Iris GT1900, any input gain value set below 20 does not allow for the complete CCD pixel saturation to acquire a value of 255. On the Iris GT300, there is no such limitation. On the Iris GT5000, the low gain limitation is present and must still be determined. - On the GT5000, using MdigControl with M_GRAB_INPUT_GAIN and a high control value might lead to the amplification of a non-uniform video frame acquisition issue. The non-uniformity can be observed on the left and right sides of the image. - The GT5000 camera is a dual tap CCD sensor which is a combination of two analog outputs. This means that the image is reconstructed from a left side CCD sensor image and a right side CCD sensor image. The images are captured with two analog to digital conversion paths. When using the GT5000, MdigControl with M_GRAB_INPUT_GAIN will be programmed with a software calibration algorithm that will ensure the two regions of the CCD will return a uniform image without any stitch visible in the center of the image. The calibration algorithm might not lead to acceptable results when using a low or high M_GRAB_INPUT_GAIN control value. To avoid this, the MIL IrisGT driver might take into account these limits in a future release by clipping the setting of M_GRAB_INPUT_GAIN at the mid-point of the range. The acceptable mid-point of the range must still be determined.