GenApi
GenApi addresses the problem of configuring cameras. The way this is achieved is generic, and applies to different kinds of devices, including frame grabbers. In this chapter, everything we say about cameras also applies to frame grabbers.
GenApi requires two things to work: a register description, and a GenApi implementation.
Register description
A register description is an XML file that can be thought of as a
computer-readable datasheet of the camera. It defines camera settings (such as
PixelFormat
and TriggerSource
), and instructions
on how to configure them (e.g., to set ExposureMode
to
Timed
, write value 0x12
to register
0xE0140
). It can also contain camera documentation.
GenApi implementation
A GenApi implementation is a software module that can read and interpret register description files.
The EMVA provides a reference implementation, but it is fairly difficult to use, and logging is very poor. Instead, we recommend using the Euresys implementation bundled with the Coaxlink software package. This implementation also allows writing powerful configuration scripts.
Features
What the user gets from GenApi is a bunch of named features, organized in categories.
Set/get features are simple settings (called parameters in MultiCam), and can be of different types:
● | integer (e.g., Width ) |
● | float (e.g., AcquisitionFrameRate ) |
● | enumeration (e.g., PixelFormat ) |
● | boolean (e.g., LUTEnable ) |
● | string (e.g., DeviceVendorName ) |
The value of features can be retrieved/modified using get/set functions. Some features are read-only and some are write-only, but most allow read/write access.
There is also another kind of features: commands (e.g.,
AcquisitionStart
). Commands are special: they don't have any
associated value; they have side effects. Command features are meant to be
executed. When a command is executed, some action happens in the camera
(e.g., a software trigger is generated). Obviously, get/set functions don't
make sense for commands and can't be used.