All Baumer cameras offer hardware triggering over the opto-decoupled Line0, and/or the GPIOs Line1 and Line2. Please check the process interface section in the User Guide of your specific camera which Lines are available for use as hardware trigger. All features of Baumer cameras are named according to the EMVA standard feature name convention (SFNC) version 1.5.1 or later.
Baumer cameras provide opt-coupled inputs adhering to industry standards where 0 … 4.5 V means low and a voltage of 11 … 30 V high. So you will need a trigger signal between 11 V and 30 V. Here we assume the camera has a opto-decoupled line on Line0.
The example only shows how to configure the camera and assumes that pDevice already holds a valid connection to a camera. After setting up the camera as shown below, a trigger signal “high” on Line0 will start the acquisition of a single image which can be retrieved with the usual BGAPI::DataStream::GetFilledBuffer() method.
// SETUP DIGITAL IO CONTROL
pDevice->GetRemoteNode("LineSelector")->SetString("Line0");
pDevice->GetRemoteNode("LineInverter")->SetBool(false); //high means high
// SETUP DEBOUNCER
// make sure only intended signals trigger the camera (ignore jitters on the line)
pDevice->GetRemoteNode("LineDebouncerHighTimeAbs")->SetDouble(1.0); // in µsec
pDevice->GetRemoteNode("LineDebouncerLowTimeAbs")->SetDouble(1.0); // in µsec
// SETUP ACQUISITION CONTROL
pDevice->GetRemoteNode("TriggerMode")->SetString("On");
pDevice->GetRemoteNode("TriggerSource")->SetString("Line0");
pDevice->GetRemoteNode("TriggerActivation")->SetString("RisingEdge");
pDevice->GetRemoteNode("TriggerDelay")->SetDouble(0.0); // delay in µsec
// SETUP DIGITAL IO CONTROL
mDevice.RemoteNodeList["LineSelector"].Value = "Line0";
mDevice.RemoteNodeList["LineInverter"].Value = false; // high means high
// SETUP DEBOUNCER
// make sure only intended signals trigger the camera (ignore jitters on the line)
mDevice.RemoteNodeList["LineDebouncerHighTimeAbs"].Value = (double)1.0; // in µsec
mDevice.RemoteNodeList["LineDebouncerLowTimeAbs"].Value = (double)1.0; // in µsec
// SETUP ACQUISITION CONTROL
mDevice.RemoteNodeList["TriggerMode"].Value = "On";
mDevice.RemoteNodeList["TriggerSource"].Value = "Line0";
mDevice.RemoteNodeList["TriggerActivation"].Value = "RisingEdge";
mDevice.RemoteNodeList["TriggerDelay"].Value = (double)0.0; // in µsec
Most Baumer cameras also have GPIO lines those non-potential-free general purpose IOs (GPIOs) require trigger signals with 2 V, or higher (FPGA input 0 … 0.8 V low, 2.0 … 30 V high).
// SETUP DIGITAL IO CONTROL
pDevice->GetRemoteNode("LineSelector")->SetString("Line1"); // GPIO Line1
pDevice->GetRemoteNode("LineMode")->SetString("Input");
pDevice->GetRemoteNode("LineInverter")->SetBool(false);
// SETUP DEBOUNCER
// make sure only intended signals trigger the camera (ignore jitters on the line)
pDevice->GetRemoteNode("LineDebouncerHighTimeAbs")->SetDouble(1.0); // in µsec
pDevice->GetRemoteNode("LineDebouncerLowTimeAbs")->SetDouble(1.0); // in µsec
// SETUP ACQUISITION CONTROL
pDevice->GetRemoteNode("TriggerMode")->SetString("On");
pDevice->GetRemoteNode("TriggerSource")->SetString("Line1");
pDevice->GetRemoteNode("TriggerActivation")->SetString("RisingEdge");
pDevice->GetRemoteNode("TriggerDelay")->SetDouble(0.0); // delay in µsec
// SETUP DIGITAL IO CONTROL
mDevice.RemoteNodeList["LineSelector"].Value = "Line1"; // GPIO Line1
mDevice.RemoteNodeList["LineMode"].Value = "Input";
mDevice.RemoteNodeList["LineInverter"].Value = false;
// SETUP DEBOUNCER
// make sure only intended signals trigger the camera (ignore jitters on the line)
mDevice.RemoteNodeList["LineDebouncerHighTimeAbs"].Value = (double)1.0; // in µsec
mDevice.RemoteNodeList["LineDebouncerLowTimeAbs"].Value = (double)1.0; // in µsec
// ACQUISITION CONTROL
mDevice.RemoteNodeList["TriggerMode"].Value = "On";
mDevice.RemoteNodeList["TriggerSource"].Value = "Line1";
mDevice.RemoteNodeList["TriggerActivation"].Value = "RisingEdge";
mDevice.RemoteNodeList["TriggerDelay"].Value = (double)0.0; // in µsec
Using hardware trigger with Baumer GAPI