Matrox Imaging Library (MIL) 10 Update 97
Release Notes (MIL4Sight)
April, 2020
(c) Copyright Matrox Electronic Systems Ltd.,
1992-2020.
This document outlines what is new with MIL for the Matrox 4Sight family of products and explains the current limitations and particularities when using MIL with a Matrox 4Sight family product. In particular, it documents how to convert code that controls/inquires about the Auxiliary I/O signals on Matrox 4Sight family products so that it uses the new MIL 10 mechanism.
It also presents last-minute information that did not make it into the manual or on-line help. Note that this help file serves to complement your manual. The information found in this file overrides your formally documented material.
Contents
2. MIL 10 implementation changes
3. MIL 10 support for Matrox 4Sight history
Building the MIL examples using Visual Studio 2015 or 2017 also requires the presence of Windows SDK version 8.1, which is installed from the Visual Studio setup.
Windows’ automatic 8.3 file name creation needs to be enabled in order for the MIL installer to access the temp folder when the user name contains a space. This option allows Windows to create short file/folder name aliases for ones with long names for programs, such as the MIL installer, that don't support spaces in the file/folder names. Alternatively, the MIL installer needs to run from a user account that belongs to the administrators group and has no spaces in it. Note that the same applies for uninstalling MIL.
The required Visual C++ 2017 Redistributable needs the presence of KB2919442 and KB2919355. These will need to be obtained and applied before installing this update.
Old control/inquire type New control/inquire type
----------------------------------------------------+------------------
Control of an output Control of an output
M_USER_BIT_VALUE_OUT M_USER_BIT_STATE
+ [0...15] + M_USER_BIT[0...15]
M_USER_BIT_VALUE_OUT M_USER_BIT_STATE_ALL
+ M_BIT_MASK(bit encoded value)
Inquire of an output Inquire of an output
M_USER_BIT_VALUE_OUT M_USER_BIT_STATE
+ [0...15] + M_USER_BIT[0...15]
M_IO_STATUS
+ M_AUX_IO[0...15]
M_USER_BIT_VALUE_OUT M_USER_BIT_STATE_ALL
+ M_BIT_MASK(bit encoded value) Returns MIL_INT64
Possible value
M_OFF
M_ON
----------------------------------------------------+------------------
M_USER_BIT_INTERRUPT_MODE M_IO_INTERRUPT_ACTIVATION
+ [0...15] + M_AUX_IO[16...31]
Possible value
M_DEFAULT or M_EDGE_RISING
M_EDGE_FALLING
----------------------------------------------------+------------------
M_USER_BIT_INTERRUPT_STATE M_IO_INTERRUPT_STATE
+ [0...15] + M_AUX_IO[16...31]
Possible value
M_DEFAULT or M_DISABLE
M_ENABLE
----------------------------------------------------+------------------
Old inquire type New inquire type
----------------------------------------------------+------------------
Inquire of an input Inquire of an input
M_USER_BIT_VALUE_IN M_IO_STATUS
+ [0...15] + M_AUX_IO[16...31]
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
----------------------------------------------------+------------------
----------------------------------------------------+------------------
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...15] return changed into M_AUX_IO[16...31]
----------------------------------------------------+------------------
MsysGetHookInfo(SysId, EvId, M_USER_BIT_STATE, UPtr)
Replaced by
MsysGetHookInfo(SysId, EvId, M_IO_STATUS, UPtr)
----------------------------------------------------+------------------
----------------------------------------------------+------------------
MsysControl/MsysInquire M_IO_MODE + M_AUX_IO[n]
Possible value
M_OUTPUT for n=0...15
M_INPUT for n=16...31
----------------------------------------------------+------------------
MIL Help, by default, shows the values for all installed MIL systems. To display only the Matrox 4Sight information in this help file, go to the Customize MIL Help section under About MIL help in the MIL User Guide. Select the Host option from the MIL Systems drop-down list. Deselect all others. Then, select the Matrox 4Sight GP option from the Computer drop-down list. Notes specific to a Matrox 4Sight family member (such as, Matrox 4Sight GPm), or a specific update are labelled as such in the help.
Note that MIL Update 97 (U97) is a cumulative update, including all content from MIL Update 86 (U86), MIL Update 51 (U51), Update 41 (U41), Update 32 (U32), and Update 26 (U26).
MIL 10 Update 26
· Added support for advanced I/Os
· Updated MtxAux FPGA to add support for RS485 half-duplex auto mode.
· Modified MtxAux FPGA to limit output toggle rate to 60 Khz maximum.
· Fixed MtxAux in the Matrox 4Sight GP system for MsysControl M_IO_SOURCE+M_AUX_IOn set to M_USER_BITn or M_DEFAULT.
MIL 10 Update 32
· Added support for Matrox 4Sight GPm (Bay Trail).
MIL 10 Update 41
· Added support of new versions of Matrox 4Sight GPm (reference MIPB-248b)
MIL 10 Update 51
· Added support for inverting an input or output pin (see M_IO_INVERTER with MsysControl).
· Added support for changing a timer’s trigger behavior by adding the ability to latch a trigger or make the timer reset (see M_TIMER_TRIGGER_OVERLAP with MsysControl).
· Added support for hooking a callback function to a timer start or timer end event (see M_TIMER_START/M_TIMER_END with MsysHookFunction).
· Added support for getting the timer value from inside a callback function that is hooked to the timer start or timer end event (see M_TIMER_VALUE with MsysGetHookInfo).
· Added support for getting the timer index value from inside a callback function that is hooked to the timer start or timer end event (see M_TIMER_INDEX with MsysGetHookInfo).
· Added support for selecting the source of an I/O command list’s latch from any of the available timers (see M_REFERENCE_LATCH_TRIGGER_SOURCE with MsysIoControl).
· Added support for cancelling an already registered I/O command (see M_IO_COMMAND_CANCEL with MsysIoControl).
· Added support for setting up an automatically registered operation in the I/O command list. The automatically registered operation uses the trigger of an M_LATCHn for the I/O command list (M_AUTO_REGISTER of MsysIoCommandRegister).
· Fixed a possible firmware update problem affecting Matrox 4Sight GPm.
· Fixed possible bug related to M_IO_COMMAND_CANCEL use.
MIL 10 Update 86
· Added support for 4Sight-EV6 IOs.
· M_IO_FORMAT is an obsolete setting MsysInquire.
· Added read possibility of the current encoder position with MsysInquire.
This returns the current encoder position:
MsysInquire(Sys,
M_ROTARY_ENCODER_POSITION+M_ROTARY_ENCODERn, &Position)
Select “n” as 1 or 2 to choose the target encoder.
Position is MIL_INT.
· Added read possibility of the encoder position based on a signal event with MsysGetHookInfo.
The following associates a latch with a specific rotary
encoder:
MsysControl(Sys, M_SYS_DATA_LATCH_TYPE+M_LATCHm,
M_ROTARY_ENCODERn)
Select “m” as 1 or 2 to choose the target latch storage.
Select “n” as 1 or 2 to choose the target encoder.
The following determines which signal will latch; in this
case, the rotary encoder position:
MsysControl(Sys, M_SYS_DATA_LATCH_TRIGGER_SOURCE+M_LATCHm,
LatchTriggerSource)
Select “m” as 1 or 2 to choose the target latch storage.
LatchTriggerSource is MIL_INT initialized with:
- M_AUX_IOi - with i from 8 to 15
- M_TIMERj – with j from 1 to 16, on Indio.
The following determines which signal edge will latch the
encoder position:
MsysControl(Sys, M_SYS_DATA_LATCH_TRIGGER_ACTIVATION+M_LATCHm,
LatchTriggerActivation)
Select “m” as 1 or 2 to choose the target latch storage.
LatchTriggerActivation is a MIL_INT initialized with:
- M_EDGE_RISING
- M_EDGE_FALLING
- M_ANY_EDGE
The following activates (or deactivates) the given latch
mechanism:
MsysControl(MilSystem, M_SYS_DATA_LATCH_STATE+M_LATCHm,
LatchState)
Select “m” as 1 or 2 to choose the target latch storage.
LatchState is a MIL_INT initialized with:
- M_ENABLE
- M_DISABLE
The following allows you to retrieve the latched value in
the context of a hook-handler function
registered with MsysHookFunction.
MsysGetHookInfo(EventId, M_SYS_DATA_LATCH_VALUE+M_LATCHm,
LatchValue)
Select “m” as 1 or 2 to choose the target latch storage.
LatchValue is a MIL_UINT64 that returns the rotary encoder position
that is latched.
Note:
- This MsysGetHookInfo call is done in the scope of a hook function to M_IO_CHANGE, if M_SYS_DATA_LATCH_TRIGGER_SOURCE was specified as M_AUX_IOi.
- This MsysGetHookInfo call is done in the scope of a hook function to M_TIMER_START or M_TIMER_END, if M_SYS_DATA_LATCH_TRIGGER_SOURCE was specified as M_TIMERj.
MIL 10 Update 97
· Added support for Matrox 4Sight XV6 as a MIL license fingerprint.
The MILConfig temporary license activation or software license registration may launch a firmware updater automatically or report issues in writing of the license in system EEPROM. To avoid any of these problems, please close MILConfig and start manually the firmware update tool located at C:\Program Files\Matrox Imaging\Tools before re-launching the MILConfig again.
A MIL license based on the Matrox 4Sight XV6 as its fingerprint is stored onto disk (i.e., SSD). Re-initializing this disk will result in the loss of the MIL license. The MIL license can however still be recovered and reapplied. Please contact your local Matrox Imaging representative for assistance if this is the case.