# Backwards Compatibility

Be aware of the following compatibility differences between this VisionPro release and VisionPro version 9 and earlier.

### Acquisition

> ##### General

> > This release does not support acquiring images of type CogImage16Range or Cog3DPointCloudMesh.

> ##### API

> - The ICogAcqSettingInfo methods used to query acquisition settings take an enumeration instead of an integer in this release:

>   For example, the statement:

>   fifoGige.DefaultValue(1020)

>   In previous VisionPro releases now becomes:

>   fifoGige.DefaultValue(ScalarPropertyConstants.Brightness)

>   In this release. As another example the statement:

>   fifoGige.MaxValue(1019)

>   In previous VisionPro releases now becomes:

>   fifoGige.MaxValue(ScalarPropertyConstants.Contrast)

### Vision Tools

> ##### PMAlign

> > The PMAlign tool in this release does not support the following:

> > - The PatFlex algorithm
> > - The Multi-Model PMAlign tool
> > - PatMax Customization Packs for modifying internal PatMax algorithm parameters
> > - Shape training

> ##### API

> > ##### Checkerboard Calibration

> > - ICalibCheckboardWarpParams

> >   All properties and methods supported by this interface are supported by the CalibCheckerboard class in this release.

> > ##### IPOneImage

> > - ICogIPOneImageOperatorParams

> >   The IIPOneImageOperator class supports the methods Enabled and OperatorName in this release.

> > ##### Blob

> > - Previous VisionPro releases used the CogBlobNoSubtractionImagePixelsException class when the Blob tool uses the segmentation mode SubtractoinImage but the subtraction image has no pixels.

> >   This release uses ImageNoPixelsException.

> > ##### Tool Result Classes

> > - In previous VisionPro releases your vision application could construct a tool result class, as shown:

> >   Copy

> >       new CogCaliperResult();

> >   In this VisionPro release default tool result classes are made private:

> >   Copy

> >       PMAlignToolPtr tool = Object::Create<PMAlignTool>();
> >       tool->Pattern->setTrainImage(image);
> >       tool->setInputImage(image);
> >       tool->Pattern()->Train();
> >       tool->Run();
> >       PMAlignResultsPtr results = tool->Results();
> >       PMAlignResultPtr result = results->Item(0);
> >       Transform2DLinearPtr pose = result->GetPose();

> >   This applies to the following result classes:

> >   - PMAlignResult
> >   - PMAlignResults
> >   - BlobResult
> >   - BlobResults
> >   - CaliperEdge
> >   - CaliperEdges
> >   - CaliperResult
> >   - CaliperResults
> >   - FindLineResult
> >   - FindLineResults
> >   - FindCircleResult
> >   - FindCircleResults
> >   - FindEllipseResult
> >   - FindEllipseResults
> >   - LineMaxResult
> >   - LineMaxResults
> >   - LineMaxEdgePoint
> >   - LineMaxEdgePointCollection

### Application Framework

> ##### General API

> - The API namespace has changed from Cognex::VisionPro to Cognex::Vision
> - The prefix Cog and Cog3D have been removed from all classes and enumerations
> - The following classes supported in previous releases have been removed:

>   - CogToolGroup

>   - CogUserTool

>   - CogJob and CogJobManager

>     Cognex recommends you use the ToolBock class for similar functionality

> - The CogRecords class has been renamed RecordCollection
> - This release replaces the nested CogRecord.DisplayMethod class with a non-nested RecordDisplayMethod class.

> - The ICogHasChanged interface has been removed:

>   - The interface supported the HasChanged property to indicate if the object has changed since this property was last set to false. This property is set to true when a changed event fires, and set to false on construction and when the object is persisted.

>     In this VisionPro release your application must track this manually.

> - The IRunStatus class removes the Exception property previous supported by the ICogRunStatus interface.

> - Collection interfaces are now defined in the Cognex.Interop namespace

>   Your application must include the Cognex.Interop namespace when using Collection base interfaces

> - This release replaces the ICogRecords interface with ICollection<Record>

>   Your application can use the ICollection<Record> interface or the RecordCollection class

> - The GraphicChildren class implements IReadOnlyDictionary where it used to implement IDictionary

>   Your application must use the Insert or Add methods to add new items with a Key value.

> - Handler methods must use the generic eventArg type:

>   - The Collection prefix has been removed
>   - The EventArg uses a generic value type

>   For example a GraphicCollection Insert handler:

>   (earlier versions):
>   void HandleEvent (object sender, CogCollectionInsertEventArgs args)

>   (this version):
>   void HandleEvent(object sender, InsertItemEventArgs<IGraphicParentChild> args)

> - This release uses a UInt32.MaxValue instead of the value -1 to represent all flags of an enumeration.
> - You cannot initialize an array of function parameters or return types
>   - Instead of arrays of type Byte[] use arrays of type UInt32 Collection
>   - Instead of arrays of type double[] use arrays of type Vect2Collection

> ##### Exceptions

> - Previous VisionPro releases supported two types of invalid range exceptions:

>   - ArgumentException

>   - ArgumentOutOfRangeException

>     VisionPro 10.0 removes support for ArgumentException but retains support for ArgumentOutofRangeException

> - Instead of creating a specific exception for every error, this VisionPro release may use standard exceptions and the message text to explain the error

> - In previous VisionPro releases the CogCaliper.Execute method could generate the exception ImageBadSelectedSpaceNameException.

>   In this release the Caliper.Execute method can generate any of the following exceptions:

>   - SpaceTreeNameNotInTreeException
>   - SpaceTreeInvalidNameSyntaxException
>   - SpaceTreeNameNotUniqueException
>   - ArgumentException
> - Any vision applications that catch exceptions from VisionPro of type System.ArgumentException or System.ArgumentOutOfRangeException must be updated to use ArgumentException