Matrox ActiveMIL 2.1 – Shipping Notes

May 3, 2000
Copyright © 2000 by Matrox Electronic Systems Ltd. All rights reserved.


The Matrox Imaging ActiveX Controls (ActiveMIL) are a collection of ActiveX controls encapsulating an extensive set of optimized functions for image processing (point-to-point, statistics, filtering, morphology and geometric transforms), pattern matching, blob analysis, gauging, OCR, and bar and matrix code recognition. OEMs and integrators use ActiveMIL to accelerate the development of machine vision, medical imaging, and image analysis applications.

Device-independent ActiveMIL uses the power of today's Intel CPUs incorporating MMX and SSE technologies if present or, if your application requires dedicated or additional processing power, ActiveMIL works with the Matrox Genesis family of image processors. ActiveMIL is completely compatible with the Matrox Imaging Library 6.1 (MIL). Both tools can be used in any applications, if required.

Contents


  1. Getting Started

  2. Supported Environments

  3. What's New

  4. What's Changed

  5. Online Documentation
  6. Deploying ActiveMIL Applications (Redistribution) 
  7. Obtaining Additional Help
  8. Environment Specific Notes
    1. Visual Basic
    2. Visual C++
    3. Borland (Delphi and C++ Builder)
  9. Outstanding Issues

Getting Started


[Contents]

Supported Environments


The following tables outline the combinations of operating systems, development environments, and Matrox Imaging hardware supported by ActiveMIL.

Operating System / Development Environments

  Windows 2000** Windows NT 4.0 Service Pack 6a Windows 98, Second Edition**
Microsoft Visual C/C++ 6.0 Service Pack 3* Yes Yes Yes
Microsoft Visual Basic 6.0 Service Pack 3* Yes Yes Yes

*Other environments are not officially supported by Matrox.

**Multiple monitor windows desktop (multi-head) is not supported with Windows 98 or Window 2000 in this release.

Operating System / Matrox Imaging Hardware

Click on a board label in the table below to access board-specific release notes.  Links to board that have not been installed will not work.

  Windows 2000 Windows NT 4.0 Service Pack 6a Windows 98, Second Edition
Matrox Pulsar Yes Yes Yes
Matrox Corona Yes Yes Yes
Matrox Corona-LC Yes Yes Yes
Matrox Meteor-II/STD  Yes Yes Yes
Matrox Meteor-II/MC Yes Yes Yes
Matrox Meteor-II/Dig Yes Yes No
Matrox Genesis Yes Yes No
Matrox Genesis-LC Yes Yes No
Matrox Genesis-PRO Yes Yes No
Matrox Meteor-II/1394 No Yes No
Matrox Orion Yes Yes No

*Matrox Pulsar-LC and Matrox Meteor are no longer supported.

[Contents]

What's New?


[Contents]

What's Changed?


This section contains important information for those upgrading from ActiveMIL 2.0.

[Contents]

Online Documentation


Complete on-line documentation is provided with ActiveMIL. It can be found under Start\Matrox Imaging Products\ActiveMIL\ActiveMIL Help.  The documentation contains three majors sections:

Note to Microsoft Visual C++ Users:

From any code window (.CPP or .H file), the ActiveMIL context sensitive help works using the CTRL-F1 key instead of the F1 key. To use this feature, the MIL and ActiveMIL VC++ Add-Ins must be enabled. These Add-Ins are automatically installed but are not enabled by default. To enable the Matrox VC++ Add-Ins in Visual C++, use the property pages under Tools\Customize\Add-ins and Macro files.

[Contents]

Deploying ActiveMIL Applications (Redistribution) 


The following options are available to deploy applications that use ActiveMIL:

Note to Visual Basic Users:

We do not provide dependency files (DEP files) for use with Visual Basic's setup wizard because this tool is not able to handle installation of our board level drivers.

[Contents]

Obtaining Additional Help


The following sources should be checked for additional information when it is needed:

[Contents]

Environment Specific Notes


This section contains information specific to a given environment.  ActiveMIL strives to be environment independent, however, each environment is implemented differently and this sometimes causes problems for ActiveMIL.

  1. Visual Basic

    As described in What's Changed, the constants groups names' have changed.  This could affect your code if you Dim'ed variables as the group (i.e. Dim GrabMode As GrabModeConstants).  The add-in will automatically scan and modify your code the first time you load your project, so make sure the add-in is enabled.  The module names have also changed, so if your code Dim'ed variables using the syntax "Dim <Var> As <Module>.<Item>" those instances will also be changed by the add-in.

    To take advantage of the dual interfaces now implemented in ActiveMIL, you must modify your code slightly.  By default, Visual Basic will use dual interfaces in sub-objects only (i.e. Image.LUT), but not in top-level controls.  To work around this limitation, ActiveMIL implements secondary interfaces on all controls that allow direct access from Visual Basic.  To use these, you must Dim as a variable of type I<control>, and set it equal to the Object property of an ActiveMIL control.  For example,

    Dim DirectDigtizer As MIL.IDigitizer

    Set DirectDigtizer = Digitizer1.Object ' assuming that 'Digitizer1' is on the form

     

  2. Visual C++

    Starting with this version, there are 3 ways to use ActiveMIL from Visual C++:

    1. Using the ActiveMIL wrapper classes built by Matrox.

      This was the only method that could be used in previous versions.  This method should be used if  source-level compatibility is required with code written to previous versions of ActiveMIL.  This method does not use the fast dual interfaces.  When you use the 'Add ActiveMIL to Project' and select 'MFC class wizard classes' it this method that is used.  Currently, the examples are written using this method.

      This access method has the following advantages over the others:

      • Allows for optional parameters in methods.
      • Collection items can be accessed implicitly, without using the .Item property.

       

    2. Using native COM access classes.

      With this method, the built in support for COM is used in conjunction with the MFC ActiveX support. Starting with version 6.0 of  Visual C++, COM objects can be used directly, without the need for explicit wrapper classes.  The ActiveMIL controls and objects will be mapped to _com_ptr_t templates (see MSDN, for more information on this built-in class).  The individual interface names have the form I<Object>Ptr (for example, the Digitizer control is IDigitizerPtr).  Note that top level controls are also of type C<Control>, as with the wrapper classes discussed aboved.

      This access method has the following advantages over the others:

      • Fully exploits ActiveMIL's ultra-fast dual interfaces.
      • Allows properties to be accessed without individual 'Get' and 'Set' functions.  Properties are treated like data members of a C++ class (for example, you can type: Image->SizeX = 640, instead of Image.SetSizeX(640)).  This makes the syntax simpler to read, and is more consistent with the concept of a property.
      • Properties and methods are fully typed, that is, properties and method parameters that are enumerations are bound to those enumerations (unlike the other access methods which make these items of type long).

       

    3. Using native MFC class-wizard generated wrapper classes.

      This method involves manually importing each ActiveMIL control into the Visual C++ environment.  This is accomplished by selecting Project | Add To Project | Components and Controls from the menu.  

      There is no real reason to use this method.  It has the following disadvantages over the other two methods:

      • No constants are generated at all.
      • The controls must be re-imported for each new version of ActiveMIL.  If this is not done, new features will not be available.

       

  3. Borland (Delphi / C++ Builder)

    Borland environments are not officially supported, but quick tests have shown that parts of ActiveMIL will work in these environments.  Only versions 5.0 of both environments were tested.

    Follow these steps to use ActiveMIL in a Borland environment:

    1. Click Component | Import ActiveX Control.  Select all ActiveMIl controls.  Change the suggested name to T<MIL>Object (Many ActiveMIL control names clash with Borland name like System and TImage).  Important: the base controls (from MIL.OCX) must be imported last; the project will not compile if this procedure is not followed.
    2. Remove the Name property from all generated wrapper classes (if you don't do this and change the control's name in the object inspector, the environment will not change the name used in code).
    3. When setting object references (for example Display.Image), you must use the right-hand-side's ControlInterface property.  For example, to change the image displayed, you would type:

MyDisplay.Image := MyImage.ControlInterface

In C++ builder, you must also explicitly cast the right hand side expression to IDispatch*.  For example,

MyDisplay->Image = (IDispatch*) MyImage->ControlInterface ;

 

[Contents]

Outstanding Issues


This section describes any limitations, or problems that exist in the current release. The tag [VB] means the note only applies to Visual Basic and [VC] to Visual C++. If a number follows the tag, the note is specific to that version of the environment. If nothing is mentioned, the note applies to all environments.

[Contents]