A first example
This example creates a grabber and displays basic information about the interface, device, and remote device modules it contains:
#include <iostream>
#include <EGrabber.h> // 1
static const uint32_t CARD_IX = 0;
static const uint32_t DEVICE_IX = 0;
void showInfo() {
Euresys::EGenTL gentl; // 2
Euresys::EGrabber<> grabber(gentl, CARD_IX, DEVICE_IX); // 3
std::string card = grabber.getString<Euresys::InterfaceModule>("InterfaceID"); // 4
std::string dev = grabber.getString<Euresys::DeviceModule>("DeviceID"); // 5
int64_t width = grabber.getInteger<Euresys::RemoteModule>("Width"); // 6
int64_t height = grabber.getInteger<Euresys::RemoteModule>("Height"); // 6
std::cout << "Interface: " << card << std::endl;
std::cout << "Device: " << dev << std::endl;
std::cout << "Resolution: " << width << "x" << height << std::endl;
}
int main() {
try { // 7
showInfo();
} catch (const std::exception &e) { // 7
std::cout << "error: " << e.what() << std::endl;
}
}
- Include
EGrabber.h
, which defines theEuresys::EGrabber
class, and includes the other header files we need (such asEGenTL.h
and the standard GenTL header file). - Create a
Euresys::EGenTL
object. This involves the following operations:- locate and dynamically load the Coaxlink GenTL producer
(
coaxlink.cti
); - retrieve pointers to the functions exported by
coaxlink.cti
, and make them available viaEuresys::EGenTL
methods; - initialize
coaxlink.cti
(this is done by calling the GenTL initialization functionGCInitLib
).
- locate and dynamically load the Coaxlink GenTL producer
(
- Create a
Euresys::EGrabber
object. The constructor needs thegentl
object created in step 2. It also takes as optional arguments the indices of the interface and device to use.The purpose of the angle brackets (
<>
) that come afterEGrabber
will become clear later. For now, they can be safely ignored. - Use GenApi to find out the
ID of the Coaxlink card.
Euresys::InterfaceModule
indicates that we want an answer from the interface module. - Similarly, find out the ID of the device. This time, we use
Euresys::DeviceModule
to target the device module. - Finally, read the camera resolution.
Euresys::RemoteModule
indicates that the value must be retrieved from the camera. Euresys::EGrabber
uses exceptions to report errors, so we wrap our code inside atry ... catch
block.
Example of program output:
Interface: PC1633 - Coaxlink Quad G3 (2-camera) - KQG00014
Device: Device0
Resolution: 4096x4096