Sequencer Programming in Shape and Shadow Applications for VCXG.I Cameras
Software Example: Baumer GAPI v2.9.0
This example explains how to program a sequencer with software triggering for shape and shadow application. Shape and shadow is a technical solution used to extract 3D information from 2D images recorded at the same location but each taken with different lighting. The sequencer is set to take 4 images in rapid succession with a software trigger. The sample uses the VCXG.I cameras' 4 high-power PWM outputs to power 4 flash segments positioned to illuminate the scene from different angles.
If you want to learn more about what to do with the sequence or when to use shape and shadow application, you can refer to the application notes below and the user guide for VCXG.I cameras.
Intended Camera Behavior


Programming the Sequence
// STOP ACQUISITION AND LOAD DEFAULT PARAMETERSpDevice->GetRemoteNode("AcquisitionStop")->Execute();
pDevice->GetRemoteNode("UserSetSelector")->SetValue("Default");
pDevice->GetRemoteNode("UserSetLoad")->Execute();// DEFINE EXPOSURE TIME AND ROI FOR THE SEQUENCERdouble ExposureTime = 500;
bo_int64 OffsetX = 0
bo_int64 OffsetY = 0
bo_int64 Height = pDevice->GetRemoteNode("Height")->GetIntMax();
bo_int64 Width = pDevice->GetRemoteNode("Width")->GetIntMax();// SWITCH TO SEQUENCER CONFIG MODEpDevice->GetRemoteNode("SequencerConfigurationMode")->SetString("On")// SET 0 (FIRST STEP OF THE SEQUENCE)
// wait for the trigger and acquire the first imagepDevice->GetRemoteNode("SequencerSetSelector")->SetInt(0);
pDevice->GetRemoteNode("SequencerSetLoad")->Execute();
pDevice->GetRemoteNode("SequencerSetNext")->SetInt(1);
pDevice->GetRemoteNode("ExposureTime")->SetInt(ExposureTime);
pDevice->GetRemoteNode("Height")->SetInt(Height);
pDevice->GetRemoteNode("Width")->SetInt(Width);
pDevice->GetRemoteNode("OffsetX")->SetInt(OffsetX);
pDevice->GetRemoteNode("OffsetY")->SetInt(OffsetY);
pDevice->GetRemoteNode("TriggerMode")->SetValue("On");
pDevice->GetRemoteNode("UserOutputValueAll")->SetInt(0);
pDevice->GetRemoteNode("SequencerTriggerActivation")->SetValue("RisingEdge");
pDevice->GetRemoteNode("SequencerTriggerSource")->SetValue("ExposureActive");
pDevice->GetRemoteNode("SequencerSetSave")->Execute();// SET 1 (SECOND STEP OF THE SEQUENCE)
// while the exposure is active strobe Output1 (lightning 1)pDevice->GetRemoteNode("SequencerSetSelector")->SetInt(1);
pDevice->GetRemoteNode("SequencerSetLoad")->Execute();
pDevice->GetRemoteNode("SequencerSetNext")->SetInt(2);
pDevice->GetRemoteNode("UserOutputValueAll")->SetInt(1);
pDevice->GetRemoteNode("SequencerTriggerActivation")->SetValue("FallingEdge");
pDevice->GetRemoteNode("SequencerTriggerSource")->SetValue("ExposureActive");
pDevice->GetRemoteNode("SequencerSetSave")->Execute();// SET 2 (THIRD STEP OF THE SEQUENCE)
//acquire second ImagepDevice->GetRemoteNode("SequencerSetSelector")->SetInt(2);
pDevice->GetRemoteNode("SequencerSetLoad")->Execute();
pDevice->GetRemoteNode("SequencerSetNext")->SetInt(3);
pDevice->GetRemoteNode("ExposureTime")->SetInt(ExposureTime);
pDevice->GetRemoteNode("Height")->SetInt(Height);
pDevice->GetRemoteNode("Width")->SetInt(Width);
pDevice->GetRemoteNode("OffsetX")->SetInt(OffsetX);
pDevice->GetRemoteNode("OffsetY")->SetInt(OffsetY);
pDevice->GetRemoteNode("TriggerMode")->SetValue("Off");
pDevice->GetRemoteNode("UserOutputValueAll")->SetInt(0);
pDevice->GetRemoteNode("SequencerTriggerActivation")->SetValue("RisingEdge");
pDevice->GetRemoteNode("SequencerTriggerSource")->SetValue("ExposureActive");
pDevice->GetRemoteNode("SequencerSetSave")->Execute();// SET 3 (FOURTH STEP OF THE SEQUENCE)
// while the exposure is active strobe Output2 (lightning 2)pDevice->GetRemoteNode("SequencerSetSelector")->SetInt(3);
pDevice->GetRemoteNode("SequencerSetLoad")->Execute();
pDevice->GetRemoteNode("SequencerSetNext")->SetInt(4);
pDevice->GetRemoteNode("UserOutputValueAll")->SetInt(2);
pDevice->GetRemoteNode("SequencerTriggerActivation")->SetValue("FallingEdge");
pDevice->GetRemoteNode("SequencerTriggerSource")->SetValue("ExposureActive");
pDevice->GetRemoteNode("SequencerSetSave")->Execute();// SET 4 (FIFTH STEP OF THE SEQUENCE)
//acquire third imagepDevice->GetRemoteNode("SequencerSetSelector")->SetInt(4);
pDevice->GetRemoteNode("SequencerSetLoad")->Execute();
pDevice->GetRemoteNode("SequencerSetNext")->SetInt(5);
pDevice->GetRemoteNode("ExposureTime")->SetInt(ExposureTime);
pDevice->GetRemoteNode("Height")->SetInt(Height);
pDevice->GetRemoteNode("Width")->SetInt(Width);
pDevice->GetRemoteNode("OffsetX")->SetInt(OffsetX);
pDevice->GetRemoteNode("OffsetY")->SetInt(OffsetY);
pDevice->GetRemoteNode("TriggerMode")->SetValue("Off");
pDevice->GetRemoteNode("UserOutputValueAll")->SetInt(0);
pDevice->GetRemoteNode("SequencerTriggerActivation")->SetValue("RisingEdge");
pDevice->GetRemoteNode("SequencerTriggerSource")->SetValue("ExposureActive");
pDevice->GetRemoteNode("SequencerSetSave")->Execute();// SET 5 (SIXTH STEP OF THE SEQUENCE)
//strobe Output3 (lightning 3)pDevice->GetRemoteNode("SequencerSetSelector")->SetInt(5);
pDevice->GetRemoteNode("SequencerSetLoad")->Execute();
pDevice->GetRemoteNode("SequencerSetNext")->SetInt(6);
pDevice->GetRemoteNode("UserOutputValueAll")->SetInt(4);
pDevice->GetRemoteNode("SequencerTriggerActivation")->SetValue("FallingEdge");
pDevice->GetRemoteNode("SequencerTriggerSource")->SetValue("ExposureActive");
pDevice->GetRemoteNode("SequencerSetSave")->Execute();// SET 6 (SEVENTH STEP OF THE SEQUENCE)
//acquire 4th imagepDevice->GetRemoteNode("SequencerSetSelector")->SetInt(6);
pDevice->GetRemoteNode("SequencerSetLoad")->Execute();
pDevice->GetRemoteNode("SequencerSetNext")->SetInt(7);
pDevice->GetRemoteNode("ExposureTime")->SetInt(ExposureTime);
pDevice->GetRemoteNode("Height")->SetInt(Height);
pDevice->GetRemoteNode("Width")->SetInt(Width);
pDevice->GetRemoteNode("OffsetX")->SetInt(OffsetX);
pDevice->GetRemoteNode("OffsetY")->SetInt(OffsetY);
pDevice->GetRemoteNode("TriggerMode")->SetValue("Off");
pDevice->GetRemoteNode("UserOutputValueAll")->SetInt(0);
pDevice->GetRemoteNode("SequencerTriggerActivation")->SetValue("RisingEdge");
pDevice->GetRemoteNode("SequencerTriggerSource")->SetValue("ExposureActive");
pDevice->GetRemoteNode("SequencerSetSave")->Execute();// SET 7 (EIGHTH STEP OF THE SEQUENCE)
//strobe (Output4) lightning 4pDevice->GetRemoteNode("SequencerSetSelector")->SetInt(7);
pDevice->GetRemoteNode("SequencerSetLoad")->Execute();
pDevice->GetRemoteNode("SequencerSetNext")->SetInt(0);
pDevice->GetRemoteNode("UserOutputValueAll")->SetInt(8);
pDevice->GetRemoteNode("SequencerTriggerActivation")->SetValue("FallingEdge");
pDevice->GetRemoteNode("SequencerTriggerSource")->SetValue("ExposureActive");
pDevice->GetRemoteNode("SequencerSetSave")->Execute();// set the sequencer to start with the Set0pDevice->GetRemoteNode("SequencerSetStart")->SetInt(0);// SEQUENCER CONFIG ENDpDevice->GetRemoteNode("SequencerConfigurationMode")->SetString("Off");
// STOP ACQUISITION AND LOAD DEFAULT PARAMETERSmDevice.RemoteNodeList["AcquisitionStop"].Execute();
mDevice.RemoteNodeList["UserSetSelector"].Value = "Default";
mDevice.RemoteNodeList["UserSetLoad"].Execute();// DEFINE EXPOSURE TIME AND ROI FOR THE SEQUENCERdouble ExposureTime = 500;
long OffsetX = 0;
long OffsetY = 0;
long Height = mDevice.RemoteNodeList["Height"].Max;
long Width = mDevice.RemoteNodeList["Width"].Max;// SWITCH TO SEQUENCER CONFIG MODEmDevice.RemoteNodeList["SequencerConfigurationMode"].Value = "On";// SET 0 (First STEP OF THE SEQUENCE)// wait for the trigger and acquire the first image
mDevice.RemoteNodeList["SequencerSetSelector"].Value = 0;
mDevice.RemoteNodeList["SequencerSetLoad"].Execute();
mDevice.RemoteNodeList["SequencerSetNext"].Value = 1;
mDevice.RemoteNodeList["ExposureTime"].Value = ExposureTime;
mDevice.RemoteNodeList["OffsetX"].Value = OffsetX;
mDevice.RemoteNodeList["OffsetY"].Value = OffsetY;
mDevice.RemoteNodeList["Height"].Value = Height;
mDevice.RemoteNodeList["Width"].Value = Width;
mDevice.RemoteNodeList["TriggerMode"].Value = "On";
mDevice.RemoteNodeList["UserOutputValueAll"].Value = 0;
mDevice.RemoteNodeList["SequencerTriggerActivation"].Value = "RisingEdge";
mDevice.RemoteNodeList["SequencerTriggerSource"].Value = "ExposureActive";
mDevice.RemoteNodeList["SequencerSetSave"].Execute();// SET 1 (SECOND STEP OF THE SEQUENCE)// while the exposure is active strobe Output1 (lightning 1)
mDevice.RemoteNodeList["SequencerSetSelector"].Value = 1;
mDevice.RemoteNodeList["SequencerSetLoad"].Execute();
mDevice.RemoteNodeList["SequencerSetNext"].Value = 2;
mDevice.RemoteNodeList["UserOutputValueAll"].Value = 1;
mDevice.RemoteNodeList["SequencerTriggerActivation"].Value = "FallingEdge";
mDevice.RemoteNodeList["SequencerTriggerSource"].Value = "ExposureActive";
mDevice.RemoteNodeList["SequencerSetSave"].Execute();// SET 2 (THIRD STEP OF THE SEQUENCE)//acquire second Image
mDevice.RemoteNodeList["SequencerSetSelector"].Value = 2;
mDevice.RemoteNodeList["SequencerSetLoad"].Execute();
mDevice.RemoteNodeList["SequencerSetNext"].Value = 3;
mDevice.RemoteNodeList["ExposureTime"].Value = ExposureTime;
mDevice.RemoteNodeList["OffsetX"].Value = OffsetX;
mDevice.RemoteNodeList["OffsetY"].Value = OffsetY;
mDevice.RemoteNodeList["Height"].Value = Height;
mDevice.RemoteNodeList["Width"].Value = Width;
mDevice.RemoteNodeList["TriggerMode"].Value = "Off";
mDevice.RemoteNodeList["UserOutputValueAll"].Value = 0;
mDevice.RemoteNodeList["SequencerTriggerActivation"].Value = "RisingEdge";
mDevice.RemoteNodeList["SequencerTriggerSource"].Value = "ExposureActive";
mDevice.RemoteNodeList["SequencerSetSave"].Execute();// SET 3 (FOURTH STEP OF THE SEQUENCE)// while the exposure is active strobe Output2 (lightning 2)
mDevice.RemoteNodeList["SequencerSetSelector"].Value = 3;
mDevice.RemoteNodeList["SequencerSetLoad"].Execute();
mDevice.RemoteNodeList["SequencerSetNext"].Value = 4;
mDevice.RemoteNodeList["UserOutputValueAll"].Value = 2;
mDevice.RemoteNodeList["SequencerTriggerActivation"].Value = "FallingEdge";
mDevice.RemoteNodeList["SequencerTriggerSource"].Value = "ExposureActive";
mDevice.RemoteNodeList["SequencerSetSave"].Execute();// SET 4 (FIFTH STEP OF THE SEQUENCE)//acquire third image
mDevice.RemoteNodeList["SequencerSetSelector"].Value = 4;
mDevice.RemoteNodeList["SequencerSetLoad"].Execute();
mDevice.RemoteNodeList["SequencerSetNext"].Value = 5;
mDevice.RemoteNodeList["ExposureTime"].Value = ExposureTime;
mDevice.RemoteNodeList["OffsetX"].Value = OffsetX;
mDevice.RemoteNodeList["OffsetY"].Value = OffsetY;
mDevice.RemoteNodeList["Height"].Value = Height;
mDevice.RemoteNodeList["Width"].Value = Width;
mDevice.RemoteNodeList["TriggerMode"].Value = "Off";
mDevice.RemoteNodeList["UserOutputValueAll"].Value = 0;
mDevice.RemoteNodeList["SequencerTriggerActivation"].Value = "RisingEdge";
mDevice.RemoteNodeList["SequencerTriggerSource"].Value = "ExposureActive";
mDevice.RemoteNodeList["SequencerSetSave"].Execute();// SET 5 (SIXTH STEP OF THE SEQUENCE)//strobe Output3 (lightning 3)
mDevice.RemoteNodeList["SequencerSetSelector"].Value = 5;
mDevice.RemoteNodeList["SequencerSetLoad"].Execute();
mDevice.RemoteNodeList["SequencerSetNext"].Value = 6;
mDevice.RemoteNodeList["UserOutputValueAll"].Value = 4;
mDevice.RemoteNodeList["SequencerTriggerActivation"].Value = "FallingEdge";
mDevice.RemoteNodeList["SequencerTriggerSource"].Value = "ExposureActive";
mDevice.RemoteNodeList["SequencerSetSave"].Execute();// SET 6 (SEVENTH STEP OF THE SEQUENCE)//acquire 4th image
mDevice.RemoteNodeList["SequencerSetSelector"].Value = 6;
mDevice.RemoteNodeList["SequencerSetLoad"].Execute();
mDevice.RemoteNodeList["SequencerSetNext"].Value = 7;
mDevice.RemoteNodeList["ExposureTime"].Value = ExposureTime;
mDevice.RemoteNodeList["OffsetX"].Value = OffsetX;
mDevice.RemoteNodeList["OffsetY"].Value = OffsetY;
mDevice.RemoteNodeList["Height"].Value = Height;
mDevice.RemoteNodeList["Width"].Value = Width;
mDevice.RemoteNodeList["TriggerMode"].Value = "Off";
mDevice.RemoteNodeList["UserOutputValueAll"].Value = 0;
mDevice.RemoteNodeList["SequencerTriggerActivation"].Value = "RisingEdge";
mDevice.RemoteNodeList["SequencerTriggerSource"].Value = "ExposureActive";
mDevice.RemoteNodeList["SequencerSetSave"].Execute();// SET 7 (EIGHTH STEP OF THE SEQUENCE)//strobe (Output4) lightning 4
mDevice.RemoteNodeList["SequencerSetSelector"].Value = 7;
mDevice.RemoteNodeList["SequencerSetLoad"].Execute();
mDevice.RemoteNodeList["SequencerSetNext"].Value = 0;
mDevice.RemoteNodeList["UserOutputValueAll"].Value = 8;
mDevice.RemoteNodeList["SequencerTriggerActivation"].Value = "FallingEdge";
mDevice.RemoteNodeList["SequencerTriggerSource"].Value = "ExposureActive";
mDevice.RemoteNodeList["SequencerSetSave"].Execute();// set the sequencer to start with the Set0mDevice.RemoteNodeList["SequencerSetStart"].Value = 0;// SEQUENCER CONFIG ENDmDevice.RemoteNodeList["SequencerConfigurationMode"].Value = "Off";
Once the sequence is set, we also need to configure the camera's PWM outputs to control the lighting for the setup.
// Define line output parametersbo_int64 LightningTime = (long)ExposureTime - 2;
bo_int64 MaxDutyCycle = 10;
bo_int64 DutyCycle = 10;
bo_int64 MaxDuration = 1900;
String LineFormat = "OpenSource";
String LinePWMMode = "OnePulse";// Configure Line4 for UserOutput1 as single lightning flash 1pDevice->GetRemoteNode("LineSelector")->SetValue("Line4");
pDevice->GetRemoteNode("LineFormat")->SetValue(LineFormat);
pDevice->GetRemoteNode("LineInverter")->SetValue("0");
pDevice->GetRemoteNode("LinePWMConfigurationMode")->SetValue("On");
pDevice->GetRemoteNode("LinePWMDuration")->SetInt(1);
pDevice->GetRemoteNode("LinePWMDutyCycle")->SetInt(1);
pDevice->GetRemoteNode("LinePWMMaxDutyCycle")->SetInt(MaxDutyCycle);
pDevice->GetRemoteNode("LinePWMMaxDuration")->SetInt(MaxDuration);
pDevice->GetRemoteNode("LinePWMConfigurationMode")->SetValue("Off");
pDevice->GetRemoteNode("LinePWMDuration")->SetInt(LightningTime);
pDevice->GetRemoteNode("LinePWMDutyCycle")->SetInt(DutyCycle);
pDevice->GetRemoteNode("LinePWMMode")->SetValue(LinePWMMode);
pDevice->GetRemoteNode("LineSource")->SetValue("UserOutput1");// Configure Line5 for UserOutput2 as single lightning flash 2pDevice->GetRemoteNode("LineSelector")->SetValue("Line5");
pDevice->GetRemoteNode("LineFormat")->SetValue(LineFormat);
pDevice->GetRemoteNode("LineInverter")->SetValue("0");
pDevice->GetRemoteNode("LinePWMConfigurationMode")->SetValue("On");
pDevice->GetRemoteNode("LinePWMDuration")->SetInt(1);
pDevice->GetRemoteNode("LinePWMDutyCycle")->SetInt(1);
pDevice->GetRemoteNode("LinePWMMaxDutyCycle")->SetInt(MaxDutyCycle);
pDevice->GetRemoteNode("LinePWMMaxDuration")->SetInt(MaxDuration);
pDevice->GetRemoteNode("LinePWMConfigurationMode")->SetValue("Off");
pDevice->GetRemoteNode("LinePWMDuration")->SetInt(LightningTime);
pDevice->GetRemoteNode("LinePWMDutyCycle")->SetInt(DutyCycle);
pDevice->GetRemoteNode("LinePWMMode")->SetValue(LinePWMMode);
pDevice->GetRemoteNode("LineSource")->SetValue("UserOutput2");// Configure Line6 for UserOutput3 as single lightning flash 3pDevice->GetRemoteNode("LineSelector")->SetValue("Line6");
pDevice->GetRemoteNode("LineFormat")->SetValue(LineFormat);
pDevice->GetRemoteNode("LineInverter")->SetValue("0");
pDevice->GetRemoteNode("LinePWMConfigurationMode")->SetValue("On");
pDevice->GetRemoteNode("LinePWMDuration")->SetInt(1);
pDevice->GetRemoteNode("LinePWMDutyCycle")->SetInt(1);
pDevice->GetRemoteNode("LinePWMMaxDutyCycle")->SetInt(MaxDutyCycle);
pDevice->GetRemoteNode("LinePWMMaxDuration")->SetInt(MaxDuration);
pDevice->GetRemoteNode("LinePWMConfigurationMode")->SetValue("Off");
pDevice->GetRemoteNode("LinePWMDuration")->SetInt(LightningTime);
pDevice->GetRemoteNode("LinePWMDutyCycle")->SetInt(DutyCycle);
pDevice->GetRemoteNode("LinePWMMode")->SetValue(LinePWMMode);
pDevice->GetRemoteNode("LineSource")->SetValue("UserOutput3");// Configure Line7 for UserOutput4 as single lightning flash 4pDevice->GetRemoteNode("LineSelector")->SetValue("Line7");
pDevice->GetRemoteNode("LineFormat")->SetValue(LineFormat);
pDevice->GetRemoteNode("LineInverter")->SetValue("0");
pDevice->GetRemoteNode("LinePWMConfigurationMode")->SetValue("On");
pDevice->GetRemoteNode("LinePWMDuration")->SetInt(1);
pDevice->GetRemoteNode("LinePWMDutyCycle")->SetInt(1);
pDevice->GetRemoteNode("LinePWMMaxDutyCycle")->SetInt(MaxDutyCycle);
pDevice->GetRemoteNode("LinePWMMaxDuration")->SetInt(MaxDuration);
pDevice->GetRemoteNode("LinePWMConfigurationMode")->SetValue("Off");
pDevice->GetRemoteNode("LinePWMDuration")->SetInt(LightningTime);
pDevice->GetRemoteNode("LinePWMDutyCycle")->SetInt(DutyCycle);
pDevice->GetRemoteNode("LinePWMMode")->SetValue(LinePWMMode);
pDevice->GetRemoteNode("LineSource")->SetValue("UserOutput4");
// Define line output parameterslong LightningTime = (long)ExposureTime - 2;
long MaxDutyCycle = 10;
longDutyCycle = 10;
long MaxDuration = 1900;
string LineFormat = "OpenSource";
string LinePWMMode = "OnePulse";// Configure Line4 for UserOutput1 as single lightning flash 1mDevice.RemoteNodeList["LineSelector"].Value = "Line4";
mDevice.RemoteNodeList["LineFormat"].Value = LineFormat;
mDevice.RemoteNodeList["LineInverter"].Value = false;
mDevice.RemoteNodeList["LinePWMConfigurationMode"].Value = "On";
mDevice.RemoteNodeList["LinePWMDuration"].Value = 1;
mDevice.RemoteNodeList["LinePWMDutyCycle"].Value = 1;
mDevice.RemoteNodeList["LinePWMMaxDutyCycle"].Value = MaxDutyCycle;
mDevice.RemoteNodeList["LinePWMMaxDuration"].Value = MaxDuration;
mDevice.RemoteNodeList["LinePWMConfigurationMode"].Value = "Off";
mDevice.RemoteNodeList["LinePWMDuration"].Value = LightningTime;
mDevice.RemoteNodeList["LinePWMDutyCycle"].Value = DutyCycle;
mDevice.RemoteNodeList["LinePWMMode"].Value = LinePWMMode;
mDevice.RemoteNodeList["LineSource"].Value = "UserOutput1";// Configure Line5 for UserOutput2 as single lightning flash 2mDevice.RemoteNodeList["LineSelector"].Value = "Line5";
mDevice.RemoteNodeList["LineFormat"].Value = LineFormat;
mDevice.RemoteNodeList["LineInverter"].Value = false;
mDevice.RemoteNodeList["LinePWMConfigurationMode"].Value = "On";
mDevice.RemoteNodeList["LinePWMDuration"].Value = 1;
mDevice.RemoteNodeList["LinePWMDutyCycle"].Value = 1;
mDevice.RemoteNodeList["LinePWMMaxDutyCycle"].Value = MaxDutyCycle;
mDevice.RemoteNodeList["LinePWMMaxDuration"].Value = MaxDuration;
mDevice.RemoteNodeList["LinePWMConfigurationMode"].Value = "Off";
mDevice.RemoteNodeList["LinePWMDuration"].Value = LightningTime;
mDevice.RemoteNodeList["LinePWMDutyCycle"].Value = DutyCycle;
mDevice.RemoteNodeList["LinePWMMode"].Value = LinePWMMode;
mDevice.RemoteNodeList["LineSource"].Value = "UserOutput2";// Configure Line6 for UserOutput3 as single lightning flash 3mDevice.RemoteNodeList["LineSelector"].Value = "Line6";
mDevice.RemoteNodeList["LineFormat"].Value = LineFormat;
mDevice.RemoteNodeList["LineInverter"].Value = false;
mDevice.RemoteNodeList["LinePWMConfigurationMode"].Value = "On";
mDevice.RemoteNodeList["LinePWMDuration"].Value = 1;
mDevice.RemoteNodeList["LinePWMDutyCycle"].Value = 1;
mDevice.RemoteNodeList["LinePWMMaxDutyCycle"].Value = MaxDutyCycle;
mDevice.RemoteNodeList["LinePWMMaxDuration"].Value = MaxDuration;
mDevice.RemoteNodeList["LinePWMConfigurationMode"].Value = "Off";
mDevice.RemoteNodeList["LinePWMDuration"].Value = LightningTime;
mDevice.RemoteNodeList["LinePWMDutyCycle"].Value = DutyCycle;
mDevice.RemoteNodeList["LinePWMMode"].Value = LinePWMMode;
mDevice.RemoteNodeList["LineSource"].Value = "UserOutput3";// Configure Line7 for UserOutput4 as single lightning flash 4mDevice.RemoteNodeList["LineSelector"].Value = "Line7";
mDevice.RemoteNodeList["LineFormat"].Value = LineFormat;
mDevice.RemoteNodeList["LineInverter"].Value = false;
mDevice.RemoteNodeList["LinePWMConfigurationMode"].Value = "On";
mDevice.RemoteNodeList["LinePWMDuration"].Value = 1;
mDevice.RemoteNodeList["LinePWMDutyCycle"].Value = 1;
mDevice.RemoteNodeList["LinePWMMaxDutyCycle"].Value = MaxDutyCycle;
mDevice.RemoteNodeList["LinePWMMaxDuration"].Value = MaxDuration;
mDevice.RemoteNodeList["LinePWMConfigurationMode"].Value = "Off";
mDevice.RemoteNodeList["LinePWMDuration"].Value = LightningTime;
mDevice.RemoteNodeList["LinePWMDutyCycle"].Value = DutyCycle;
mDevice.RemoteNodeList["LinePWMMode"].Value = LinePWMMode;
mDevice.RemoteNodeList["LineSource"].Value = "UserOutput4";
Finally, we initialize the camera sequencer and perform a software trigger.
// START CAMERA SEQUENCERpDevice->GetRemoteNode("SequencerMode")->SetValue("On");
pDevice->GetRemoteNode("TriggerSource")->SetValue("Software");
pDataStream->StartAcquisitionContinuous();
pDevice->GetRemoteNode("AcquisitionStart")->Execute();
pDevice->GetRemoteNode("TriggerSoftware")->Execute();// CAPTURE 4 IMAGES
// STOP CAMERA SEQUENCERpDevice->GetRemoteNode("AcquisitionStop")->Execute();
pDataStream->StopAcquisition();
pDevice->GetRemoteNode("SequencerMode")->SetValue("Off");
// START CAMERA SEQUENCERmDevice.RemoteNodeList["SequencerMode"].Value = "On";
mDevice.RemoteNodeList["TriggerSource"].Value = "Software";
mDataStream.StartAcquisition();
mDevice.RemoteNodeList["AcquisitionStart"].Execute();
mDevice.RemoteNodeList["TriggerSoftware"].Execute();// CAPTURE 4 IMAGES
// STOP CAMERA SEQUENCERmDevice.RemoteNodeList["AcquisitionStop"].Execute();
mDataStream.StopAcquisition();
mDevice.RemoteNodeList["SequencerMode"].Value = "Off";
Downloads
Software Examples
Shape extraction and sequencer from shading