Introduction
Compared to a typical USB video device (UVC) such as a standard webcam, modern machine vision cameras provide much more functionality and a lot more configuration. To enable interoperability between different camera devices and software applications the EMVA — the European Machine Vision Alliance is maintaining a set of standards. The big advantage for the customer is, that makes it trivial to switch from one camera to another model or even to another interface without changes to the software application controlling it.
GenTL — Generic Transportation Layer
Machine vision cameras connect via different interfaces to a host computer. Baumer provides cameras which connect via USB3 U3V — USB3 Vision and GigE — Gigabit Ethernet. The GenTL standard ensures that the software application can easily work with both interfaces.
GenICam — Generic Interface for Cameras
The GenICam standard (also called GenApi) defines the mechanism on how a camera announces its features and capabilities to the software controlling it. This is done via an XML-file which is downloaded from the camera while it is connected. It provides the software with all the information how features can be used and provided attributes for each feature.
The neoAPI encapsulates the GenAPI and provided you with an easy way to access the features and it's attributes. See the example below to get an idea about how to handle GenICam features
The Feature access mode helps you to understand what you can or can't do. They are defined in the following order:
- Not implemented — the camera does not support the feature
- Not available — the feature might be implemented but temporarily not available
- Write only — the feature is only writable, but not readable
- Read only — the feature is only readable, but not writable
- Readable and writable — full read and write access to the feature
Attention
Please be aware, that the value and the access mode of a camera features can change at any point, for example switching on the AutoExposure will set the ExposureTime feature to read only and change its value as required.
the feature names and the available attributes as well as relevant feature documentation.
SFNC — Standard Features Naming Convention
The last important standard to know with is the SFNC. This standard ensures all manufacturers of camera devices adhere to a unified convention for the names of the features. So each manufacturer who implements for example an auto exposure will name the feature “ExposureAuto” and adhere to the standard values “Off”, “Once” and “Continuous”. Again, this is important because it ensures you don't have to change your software to work with different cameras.
As cameras and features are constantly evolving the SFNC is evolving as well. Each camera does therefore adhere to a specific version of the SFNC. This Version can be requested from the camera to understand what you are dealing with.
Furthermore, manufacturers have the option to include non SFNC features. Those are typically features which will be standardised in future versions of the SFNC. These features are used in the same way as the SFNC features and each manufacturer will provide information about those features typically in the camera documentation.
The neoAPI helps you with the SFNC features by providing auto-complete for the feature names and its attributes and includes the feature description so it can be viewed inside the IDE (like standard method documentations) and in the HTML documentation.