IDS Peak comfortSDK, genericSDK, IPL, and AFL developer manuals are external documents. Please contact us  if you need them.
  
	All IDS Vision cameras start in continuous freerun mode by default. In this mode, the camera captures image frames continuously with the given frame rate until the acquisition is stopped.
The frame rate limit depends on the bandwidth of the interface, the exposure time, and on the capability of sensor to overlap frames.
Fig. 69: Camera timing in freerun mode with sequential frames 
 
Fig. 70: Camera timing in freerun mode with overlapping frames 
 
Configuration 
First make sure, you have chosen the AcquisitionMode   "Continuous".
AcquisitionMode   =   Continuous; 
Then disable all triggers, most important is the "ExposureStart" trigger.
TriggerSelector   =   ExposureStart;  
TriggerMode   =   Off; 
Set AcquisitionFrameRate   to meet your application's speed.
AcquisitionFrameRate   =   10.0; 
Now the image acquisition is ready to be started. See Preparing image acquisition: create buffer  and Starting and stopping image acquisition .
AcquisitionStart(); 
Alternatives and variations: Load UserSet Default 
A simple way to switch to freerun mode is to load the "Default" UserSet .
UserSetSelector   =   Default;  
UserSetLoad(); 
Set AcquisitionFrameRate   to meet your application's speed.
// set a frame rate to 10fps  
AcquisitionFrameRate   =   10.0; 
 
When you load  UserSet  "Default", all other parameters are set to their default value, too. Therefore use this method  before  you change any other parameters. 
 
 
 
Alternatives and variations: Switch between triggered and freerun mode with persistent frame rate 
When switching between triggered and freerun mode, AcquisitionFrameRate   might be reset. To keep your frame rate persistent, use the AcquisitionFrameRateTarget  .
AcquisitionFrameRateTarget   =   10.0; 
Enable using that target.
AcquisitionFrameRateTargetEnable   =   True; 
Additional information 
IDS peak: code examples 
// Freerun configurations  
peak_status   status   =   peak_Trigger_Enable(hCam,   PEAK_FALSE);  
if   (PEAK_ERROR(status))   {   /* Error handling ... */   }  
   
// Set AcquisitionFrameRate to 10fps  
status   =   peak_FrameRate_Set(hCam,   10.0);  
if   (PEAK_ERROR(status))   {   /* Error handling ... */   }  
   
// Next step: start acquisition  
   
   
// ALTERNATIVE: Load UserSet Default  
   
// Load UserSet "Default"  
peak_status   status   =   peak_Camera_ResetToDefaultSettings(hCam);  
if   (PEAK_ERROR(status))   {   /* Error handling ... */   }  
   
// Set AcquisitionFrameRate to 10fps  
status   =   peak_FrameRate_Set(hCam,   10.0);  
if   (PEAK_ERROR(status))   {   /* Error handling ... */   }  
   
// Next step: start acquisition 
 
 
 
{  
     // Get RemoteDevice NodeMap  
     auto   nodeMapRemoteDevice   =   device->RemoteDevice()->NodeMaps().at( 0 );  
     
     // Freerun configurations  
     nodeMapRemoteDevice->FindNode<peak::core::nodes::EnumerationNode>( "AcquisitionMode" )->SetCurrentEntry( "Continuous" );  
     nodeMapRemoteDevice->FindNode<peak::core::nodes::EnumerationNode>( "TriggerSelector" )->SetCurrentEntry( "ExposureStart" );  
     nodeMapRemoteDevice->FindNode<peak::core::nodes::EnumerationNode>( "TriggerMode" )->SetCurrentEntry( "Off" );  
    
     // Set AcquisitionFrameRate to 10fps  
     nodeMapRemoteDevice->FindNode<peak::core::nodes::FloatNode>( "AcquisitionFrameRate" )->SetValue(10.0);  
   
     // Next step: start acquisition  
}  
catch   ( const   std::exception&   e)  
{  
     std::string   strError   =   e.what();  
     // ...  
}  
   
// ALTERNATIVE: Load UserSet Default  
try  
{  
     // Get RemoteDevice NodeMap  
     auto   nodeMapRemoteDevice   =   device->RemoteDevice()->NodeMaps().at( 0 );  
     
     // Load UserSet "Default"  
     nodeMapRemoteDevice->FindNode<peak::core::nodes::EnumerationNode>( "UserSetSelector" )->SetCurrentEntry( "Default" );  
     nodeMapRemoteDevice->FindNode<peak::core::nodes::CommandNode>( "UserSetLoad" )->Execute();  
    
     // Set AcquisitionFrameRate to 10fps  
     nodeMapRemoteDevice->FindNode<peak::core::nodes::FloatNode>( "AcquisitionFrameRate" )->SetValue(10.0);  
   
     // Next step: start acquisition  
}  
catch   ( const   std::exception&   e)  
{  
     std::string   strError   =   e.what();  
     // ...  
}  
   
// VARIATON: Switch between triggered and freerun mode with persistent frame rate  
try  
{  
     // Get RemoteDevice NodeMap  
     auto   nodeMapRemoteDevice   =   device->RemoteDevice()->NodeMaps().at( 0 );  
     
     // Freerun configurations  
     nodeMapRemoteDevice->FindNode<peak::core::nodes::EnumerationNode>( "AcquisitionMode" )->SetCurrentEntry( "Continuous" );  
     nodeMapRemoteDevice->FindNode<peak::core::nodes::EnumerationNode>( "TriggerSelector" )->SetCurrentEntry( "ExposureStart" );  
     nodeMapRemoteDevice->FindNode<peak::core::nodes::EnumerationNode>( "TriggerMode" )->SetCurrentEntry( "Off" );  
   
     // Trigger mode preparations, e.g. configuration as software trigger  
     nodeMapRemoteDevice->FindNode<peak::core::nodes::EnumerationNode>( "TriggerSource" )->SetCurrentEntry( "Software" );  
    
     // Set AcquisitionFrameRateTarget to 10fps and enable it  
     nodeMapRemoteDevice->FindNode<peak::core::nodes::FloatNode>( "AcquisitionFrameRateTarget" )->SetValue(10.0);  
     nodeMapRemoteDevice->FindNode<peak::core::nodes::BooleanNode>( "AcquisitionFrameRateTargetEnable" )->SetValue(True);  
   
     // Next step: start acquisition  
     // ...  
     // Stop acquisition  
     // ...  
   
     // Switch to triggered mode as configured before  
     nodeMapRemoteDevice->FindNode<peak::core::nodes::EnumerationNode>( "TriggerSelector" )->SetCurrentEntry( "ExposureStart" );  
     nodeMapRemoteDevice->FindNode<peak::core::nodes::EnumerationNode>( "TriggerMode" )->SetCurrentEntry( "On" );  
           
     // Start acquisition  
     // ...  
     // Stop acquisition  
     // ...  
   
     // Switch back to freerun mode  
     nodeMapRemoteDevice->FindNode<peak::core::nodes::EnumerationNode>( "TriggerSelector" )->SetCurrentEntry( "ExposureStart" );  
     nodeMapRemoteDevice->FindNode<peak::core::nodes::EnumerationNode>( "TriggerMode" )->SetCurrentEntry( "Off" );  
   
     // Start acquisition  
     // ...  
     // Stop acquisition  
     // ...  
}  
catch   ( const   std::exception&   e)  
{  
     std::string   strError   =   e.what();  
     // ...  
}