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

1.     General information

2.     MIL 10 implementation changes

2.1         MsysControl/MsysInquire

2.2         MsysInquire

2.3         Other changes

2.4         Addition

3.     MIL 10 support for Matrox 4Sight history

4.     Limitation

                                              

1.   General information

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.

2.   MIL 10 implementation changes

2.1      MsysControl/MsysInquire

        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

        ----------------------------------------------------+------------------

2.2      MsysInquire

        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

        ----------------------------------------------------+------------------

2.3      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...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)

 

        ----------------------------------------------------+------------------

2.4      Addition

        ----------------------------------------------------+------------------

        MsysControl/MsysInquire   M_IO_MODE + M_AUX_IO[n]

 

                                       Possible value

                                            M_OUTPUT     for n=0...15

                                            M_INPUT      for n=16...31

        ----------------------------------------------------+------------------

3.   MIL 10 support for Matrox 4Sight history

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.

 

4.   Limitation

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.