VCXG kameralar için sekansör programlama – Tek bir gelen tetikleme ile birden fazla çekim
Yazılım örneği Baumer GAPI v2.9.0
Bu örnek, tek bir tetikleme sinyalinden 3 görüntü elde etmek için bir sekansörün nasıl ayarlanacağını açıklar. Bunu başarmak için, pozlamaları tetiklemek üzere bir sekansör sayacı kullanılır.
Sekansör ile neler yapılabileceği hakkında daha fazla ayrıntı öğrenmek isterseniz, kavramların ve özelliklerin çok daha ayrıntılı olarak açıklandığı aşağıdaki uygulama notlarına başvurabilirsiniz.
Sekansör kullanımı, neyin ne zaman gerçekleşmesi gerektiğini görselleştirmek için bazı planlamalar gerektirebilir. Örneğimizde, işlem oldukça basittir:
- İlk görüntü, “Line 0” girişinden gelen donanım tetikleyici ile tetiklenir ve bu aynı zamanda sekansörün başlamasını da tetikler.
- Sekansör seti “Set0”, ikinci görüntüyü yapılandırır ve tetikler.
- Sekansör seti “Set1”, üçüncü görüntüyü yapılandırır ve tetikler.

// STOP ACQUISITION AND LOAD DEFAULT PARAMETERS
pDevice->GetRemoteNode("AcquisitionStop")->Execute();
pDevice->GetRemoteNode("UserSetSelector")->SetString("Default");
pDevice->GetRemoteNode("UserSetLoad")->Execute();
// CONFIGURING THE TRIGGER INPUT
pDevice->GetRemoteNode("TriggerMode")->SetString("On");
pDevice->GetRemoteNode("TriggerSource")->SetString("Line0");
pDevice->GetRemoteNode("TriggerActivation")->SetString("RisingEdge");
pDevice->GetRemoteNode("TriggerDelay")->SetDouble(0.0);
pDevice->GetRemoteNode("LineSelector")->SetString("Line0");
pDevice->GetRemoteNode("LineInverter")->SetBool(false);
pDevice->GetRemoteNode("LineDebouncerHighTimeAbs")->SetDouble(1.0);
pDevice->GetRemoteNode("LineDebouncerLowTimeAbs")->SetDouble(1.0);
// CONFIGURE GPIO “Line3” as an OUTPUT
pDevice->GetRemoteNode("LineSelector")->SetString("Line3");
pDevice->GetRemoteNode("LineInverter")->SetBool(false);
pDevice->GetRemoteNode("UserOutputSelector")->SetString("UserOutput1");
pDevice->GetRemoteNode("UserOutputValue")->SetBool(false);
pDevice->GetRemoteNode("LineSource")->SetString("UserOutput1");
// SWITCH TO SEQUENCER CONFIG MODE
pDevice->GetRemoteNode("SequencerConfigurationMode")->SetString("On");
// SET 0 (FIRST STEP OF THE SEQUENCE)
pDevice->GetRemoteNode("SequencerSetSelector")->SetInt(0);
pDevice->GetRemoteNode("SequencerSetLoad")->Execute();
pDevice->GetRemoteNode("TriggerMode")->SetString("On");
pDevice->GetRemoteNode("CounterSelector")->SetString("Counter1");
pDevice->GetRemoteNode("CounterEventSource")->SetString("Off");
// Set ExposureTime for Set0
pDevice->GetRemoteNode("ExposureTime")->SetDouble(15000.0);
pDevice->GetRemoteNode("SequencerPathSelector")->SetInt(0);
pDevice->GetRemoteNode("SequencerTriggerSource")->SetString("ExposureActive");
pDevice->GetRemoteNode("SequencerTriggerActivation")->SetString("RisingEdge");
pDevice->GetRemoteNode("SequencerSetNext")->SetInt(1);
pDevice->GetRemoteNode("SequencerSetSave")->Execute();
// SET 1 (SECOND STEP OF THE SEQUENCE)
pDevice->GetRemoteNode("SequencerSetSelector")->SetInt(1);
pDevice->GetRemoteNode("SequencerSetLoad")->Execute();
pDevice->GetRemoteNode("TriggerMode")->SetString("Off");
pDevice->GetRemoteNode("CounterSelector")->SetString("Counter1");
pDevice->GetRemoteNode("CounterEventSource")->SetString("ExposureActive");
pDevice->GetRemoteNode("CounterEventActivation")->SetString("RisingEdge");
pDevice->GetRemoteNode("CounterDuration")->SetInt(2);
pDevice->GetRemoteNode("CounterResetSource")->SetString("Counter1End");
pDevice->GetRemoteNode("CounterResetActivation")->SetString("RisingEdge");
// Set ExposureTime for Set1
pDevice->GetRemoteNode("ExposureTime")->SetDouble(10000.0);
pDevice->GetRemoteNode("SequencerPathSelector")->SetInt(0);
pDevice->GetRemoteNode("SequencerTriggerSource")->SetString("Counter1End");
pDevice->GetRemoteNode("SequencerTriggerActivation")->SetString("RisingEdge");
pDevice->GetRemoteNode("SequencerSetNext")->SetInt(0);
pDevice->GetRemoteNode("SequencerSetSave")->Execute();
pDevice->GetRemoteNode("SequencerSetStart")->SetInt(0);
// SEQUENCER CONFIG END
pDevice->GetRemoteNode("SequencerConfigurationMode")->SetString("Off");
// START CAMERA SEQUENCER
pDevice->GetRemoteNode("SequencerMode")->SetString("On");
pDataStream->StartAcquisitionContinuous();
pDevice->GetRemoteNode("AcquisitionStart")->Execute();
// WAIT FOR TRIGGER TO CAPTURE THREE IMAGES
// STOP CAMERA SEQUENCER
pDevice->GetRemoteNode("AcquisitionStop")->Execute();
pDataStream->StopAcquisition();
pDevice->GetRemoteNode("SequencerMode")->SetString("Off");
// STOP ACQUISITION AND LOAD DEFAULT PARAMETERS
mDevice.RemoteNodeList["AcquisitionStop"].Execute();
mDevice.RemoteNodeList["UserSetSelector"].Value = "Default";
mDevice.RemoteNodeList["UserSetLoad"].Execute();
// CONFIGURING THE TRIGGER INPUT
mDevice.RemoteNodeList["TriggerMode"].Value = "On";
mDevice.RemoteNodeList["TriggerSource"].Value = "Line0";
mDevice.RemoteNodeList["TriggerActivation"].Value = "RisingEdge";
mDevice.RemoteNodeList["TriggerDelay"].Value = (double)0.0;
mDevice.RemoteNodeList["LineSelector"].Value = "Line0";
mDevice.RemoteNodeList["LineInverter"].Value = false;
mDevice.RemoteNodeList["LineDebouncerHighTimeAbs"].Value = (double)1.0;
mDevice.RemoteNodeList["LineDebouncerLowTimeAbs"].Value = (double)1.0;
// CONFIGURE GPIO “Line3” as an OUTPUT
mDevice.RemoteNodeList["LineSelector"].Value = "Line3";
mDevice.RemoteNodeList["LineInverter"].Value = false;
mDevice.RemoteNodeList["UserOutputSelector"].Value = "UserOutput1";
mDevice.RemoteNodeList["UserOutputValue"].Value = false;
mDevice.RemoteNodeList["LineSource"].Value = "UserOutput1";
// SWITCH TO SEQUENCER CONFIG MODE
mDevice.RemoteNodeList["SequencerConfigurationMode"].Value = "On";
// SET 0 (FIRST STEP OF THE SEQUENCE)
mDevice.RemoteNodeList["SequencerSetSelector"].Value = (long)0;
mDevice.RemoteNodeList["SequencerSetLoad"].Execute();
mDevice.RemoteNodeList["TriggerMode"].Value = "On";
mDevice.RemoteNodeList["CounterSelector"].Value = "Counter1";
mDevice.RemoteNodeList["CounterEventSource"].Value = "Off";
// Set ExposureTime for Set0
mDevice.RemoteNodeList["ExposureTime"].Value = (double)15000.0;
mDevice.RemoteNodeList["SequencerPathSelector"].Value = (long)0;
mDevice.RemoteNodeList["SequencerTriggerSource"].Value = "ExposureActive";
mDevice.RemoteNodeList["SequencerTriggerActivation"].Value = "RisingEdge";
mDevice.RemoteNodeList["SequencerSetNext"].Value = (long)1;
mDevice.RemoteNodeList["SequencerSetSave"].Execute();
// SET 1 (SECOND STEP OF THE SEQUENCE)
mDevice.RemoteNodeList["SequencerSetSelector"].Value = (long)1;
mDevice.RemoteNodeList["SequencerSetLoad"].Execute();
mDevice.RemoteNodeList["TriggerMode"].Value = "Off";
mDevice.RemoteNodeList["CounterSelector"].Value = "Counter1";
mDevice.RemoteNodeList["CounterEventSource"].Value = "ExposureActive";
mDevice.RemoteNodeList["CounterEventActivation"].Value = "RisingEdge";
mDevice.RemoteNodeList["CounterDuration"].Value = (long)2;
mDevice.RemoteNodeList["CounterResetSource"].Value = "Counter1End";
mDevice.RemoteNodeList["CounterResetActivation"].Value = "RisingEdge";
// Set ExposureTime for Set1
mDevice.RemoteNodeList["ExposureTime"].Value = (double)10000.0;
mDevice.RemoteNodeList["SequencerPathSelector"].Value = (long)0;
mDevice.RemoteNodeList["SequencerTriggerSource"].Value = "Counter1End";
mDevice.RemoteNodeList["SequencerTriggerActivation"].Value = "RisingEdge";
mDevice.RemoteNodeList["SequencerSetNext"].Value = (long)0;
mDevice.RemoteNodeList["SequencerSetSave"].Execute();
mDevice.RemoteNodeList["SequencerSetStart"].Value = (long)0;
// SEQUENCER CONFIG END
mDevice.RemoteNodeList["SequencerConfigurationMode"].Value = "Off";
// START CAMERA SEQUENCER
mDevice.RemoteNodeList["SequencerMode"].Value = "On";
mDataStream.StartAcquisition();
mDevice.RemoteNodeList["AcquisitionStart"].Execute();
// WAIT FOR TRIGGER TO CAPTURE THREE IMAGES
// STOP CAMERA SEQUENCER
mDevice.RemoteNodeList["AcquisitionStop"].Execute();
mDataStream.StopAcquisition();
mDevice.RemoteNodeList["SequencerMode"].Value = "Off";
İndirmeler
Yazılım Örnekleri
Tek bir tetikleme ile 3 görüntü yakalama