FrameTriggerWait: Configuring Trigger-Ready Polling

Jason IP2 min read
Other ManufacturerSensor IntegrationTutorial / How-to
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Use the camera's FrameTriggerWait signal when software must issue the next synchronized trigger as soon as overlap readout permits. Do not use the Exposure End event as a trigger-ready indication: exposure can finish while the sensor is still being read.

Select the trigger-ready method

Method Next-trigger condition Engineering decision
Frame acquisition The preceding frame has been received Use when maximum frame rate is unnecessary. Trigger a frame, retrieve it, and then trigger the next frame.
Image event Image transfer has completed Use when event-driven acquisition meets the required timing. Store the returned image in the handler and signal the consuming task.
FrameTriggerWait The camera reports that another trigger is acceptable Use for overlap triggering and the earliest supported software-trigger opportunity.

Why Exposure End is insufficient

Exposure End identifies completion of exposure, not completion of the camera's trigger-recovery interval. The camera may still need time to read the sensor, so issuing another trigger immediately after that event can be too early. With overlap readout enabled, FrameTriggerWait can indicate readiness before the preceding image has been received.

An earlier statement in the evidence said this value could not be polled in software, but the later evidence supplies a concrete method: route FrameTriggerWait to Line1, configure that line as an output, and read its LineStatus. Treat that later configuration and code as the applicable correction.

Configure and poll Line1

  1. Select Line1 through LineSelector.
  2. Set LineMode to Output.
  3. Set LineSource to FrameTriggerWait.
  4. After each software trigger, poll LineStatus until it becomes true; then issue the next trigger.
  5. Retrieve the preceding frame while preserving the association between each trigger and returned image.
// Configure Line1 as an output.
CEnumerationPtr ptrLineSelector = nodeMap.GetNode("LineSelector");
ptrLineSelector->SetIntValue(
    ptrLineSelector->GetEntryByName("Line1")->GetNumericValue());

CEnumerationPtr ptrLineMode = nodeMap.GetNode("LineMode");
ptrLineMode->SetIntValue(
    ptrLineMode->GetEntryByName("Output")->GetNumericValue());

// Route trigger readiness to Line1.
CEnumerationPtr ptrLineSource = nodeMap.GetNode("LineSource");
ptrLineSource->SetIntValue(
    ptrLineSource->GetEntryByName("FrameTriggerWait")->GetNumericValue());

// Wait until the camera accepts another trigger.
CBooleanPtr ptrLineStatus = nodeMap.GetNode("LineStatus");
bool lineStatus = false;
do {
    lineStatus = ptrLineStatus->GetValue();
} while (!lineStatus);

The overlap sequence is: trigger Frame 1, wait for FrameTriggerWait, trigger Frame 2, retrieve Frame 1, wait for readiness again, trigger Frame 3, and retrieve Frame 2. Verify the implementation by confirming that every trigger is accepted and that returned frames remain in the expected order during motion-synchronized operation.

FAQ

Can I trigger the camera again at the Exposure End event?

No. Exposure End can occur before sensor readout has progressed far enough for another trigger. Wait for FrameTriggerWait or use completed image transfer when lower throughput is acceptable.

How do I poll camera trigger-ready status in software?

Configure Line1 as an output, assign FrameTriggerWait to LineSource, and poll LineStatus until it returns true.

Do I need FrameTriggerWait if maximum frame rate is not required?

No. Use the simpler sequence of triggering one frame, retrieving that frame, and then issuing the next trigger if it satisfies the application's synchronization and throughput requirements.

Back to blog