What are you looking for?

A first example

This program uses Euresys::EGenTL to iterate over the Coaxlink cards present in the system, and display their id:

#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;
    }
}
  1. Include EGenTL.h, which contains the definition of the Euresys::EGenTL class.
  2. 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 via Euresys::EGenTL methods;
    • initialize coaxlink.cti (this is done by calling the GenTL initialization function GCInitLib).
  3. Open the GenTL producer. This returns a handle of type GenTL::TL_HANDLE. The GenTL namespace is defined in the standard GenTL header file, which has been automatically included by EGenTL.h in step 1.
  4. Find out how many cards are present in the system.
  5. Retrieve the id of the n-th card.
  6. Euresys::EGenTL uses exceptions to report errors, so we wrap our code inside a try ... catch block.

Example of program output:

[0] PC1633 - Coaxlink Quad G3 (1-camera, line-scan) - KQG00014
[1] PC1632 - Coaxlink Quad (1-camera) - KQU00031