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;
}
}
- Include
EGenTL.h
, which contains the definition of theEuresys::EGenTL
class. - 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
(
- Open the GenTL producer. This returns a handle of type
GenTL::TL_HANDLE
. TheGenTL
namespace is defined in the standard GenTL header file, which has been automatically included byEGenTL.h
in step 1. - Find out how many cards are present in the system.
- Retrieve the id of the n-th card.
Euresys::EGenTL
uses exceptions to report errors, so we wrap our code inside atry ... catch
block.
Example of program output:
[0] PC1633 - Coaxlink Quad G3 (1-camera, line-scan) - KQG00014
[1] PC1632 - Coaxlink Quad (1-camera) - KQU00031