IDS Peak comfortSDK, genericSDK, IPL, and AFL developer manuals are external documents. Please contact us if you need them.
GigE Vision camera data is transmitted as a sequence of packets. In addition to the payload data, a package also consists of header and checksum data. Depending on the MTU setting, the amount of user data and thus the packet size (keyword: jumbo frames) can vary. There is a adjustable delay between two packages ("inter-packet delay"). If data packets are incorrectly transferred, the transport layer (GenTL) can request missing data packets again using a re-send mechanism. The possibility for data requests depends on the used transport layer. These three components together determine the complete transmission time of a camera image.
To relieve the network load in multi-camera operation or to relieve a processing system, it is necessary to reduce the network bandwidth of the transmitting devices. Inter-packet delay prevents bandwidth bottlenecks through transmission pauses. The packet delays cause the total transmission time to increase, since the image data is sent slower than before and thus reduces the data throughput. An increasing transmission time also results in a reduction of the maximum frame rate.
Querying the DeviceThroughputLimit
genericC++
// Get the minimum and maximum value autodeviceLinkThroughputLimitMin=nodemapRemoteDevice->FindNode<peak::core::nodes::IntegerNode>("DeviceLinkThroughputLimit")->Minimum(); autodeviceLinkThroughputLimitMax=nodemapRemoteDevice->FindNode<peak::core::nodes::IntegerNode>("DeviceLinkThroughputLimit")->Maximum(); //Get the current value autodeviceLinkThroughputLimit=nodemapRemoteDevice->FindNode<peak::core::nodes::IntegerNode>("DeviceLinkThroughputLimit")->Value();
Setting the DeviceThroughputLimit
genericC++
// Set a new value int64_tdeviceLinkThroughputLimit=125000000; nodemapRemoteDevice->FindNode<peak::core::nodes::IntegerNode>("DeviceLinkThroughputLimit")->SetValue(deviceLinkThroughputLimit);
Querying the DeviceLinkAcquisitionFrameRateLimit
genericC++
// Get DeviceLinkAcquisitionFramerateLimit autoframeRateLimit=nodemapRemoteDevice->FindNode<peak::core::nodes::FloatNode>("DeviceLinkAcquisitionFrameRateLimit")->Value();
Example: Distributing the maximum bandwidth equally between 2 cameras
try { intnumberCameras=2; // Get the maximum bandwidth from camera 1. The maximum is the same for camera 2 autodeviceLinkThroughputLimitMax=nodemapRemoteDevice1->FindNode<peak::core::nodes::IntegerNode>("DeviceLinkThroughputLimit")->Maximum(); // Calculate bandwidth for each camera: 50% of the maximum autodeviceLinkThroughputLimit=deviceLinkThroughputLimitMax/numberCameras; // Set bandwidth limit on both cameras nodemapRemoteDevice1->FindNode<peak::core::nodes::IntegerNode>("DeviceLinkThroughputLimit")->SetValue(deviceLinkThroughputLimit); nodemapRemoteDevice2->FindNode<peak::core::nodes::IntegerNode>("DeviceLinkThroughputLimit")->SetValue(deviceLinkThroughputLimit); } catch(conststd::exception&e) { // ... }
try { intnumberCameras=2; // Get the maximum bandwidth from camera 1. The maximum is the same for camera 2 vardeviceLinkThroughputLimitMax=nodeMapRemoteDevice1.FindNode<peak.core.nodes.IntegerNode>("DeviceLinkThroughputLimit").Maximum(); // Calculate bandwidth for each camera: 50% of the maximum vardeviceLinkThroughputLimit=deviceLinkThroughputLimitMax/numberCameras; // Set bandwidth limit on both cameras nodeMapRemoteDevice1.FindNode<peak.core.nodes.IntegerNode>("DeviceLinkThroughputLimit").SetValue(deviceLinkThroughputLimit); nodeMapRemoteDevice2.FindNode<peak.core.nodes.IntegerNode>("DeviceLinkThroughputLimit").SetValue(deviceLinkThroughputLimit); } catch(Exceptione) { // ... }
try: number_cameras = 2 # Get the maximum bandwidth from camera 1. The maximum is the same for camera 2 device_link_throughput_limit_max = node_map_remote_device1.FindNode("DeviceLinkThroughputLimit").Maximum() # Calculate bandwidth for each camera: 50% of the maximum device_link_throughput_limit = device_link_throughput_limit_max / number_cameras # Set bandwidth limit on both cameras node_map_remote_device1.FindNode("DeviceLinkThroughputLimit").SetValue(device_link_throughput_limit) node_map_remote_device2.FindNode("DeviceLinkThroughputLimit").SetValue(device_link_throughput_limit) except Exception as e: # ... str_error = str(e)