Is it possible to ignore the dropped packet/frame error during acquisition from a GigE Vision camera?

10 views (last 30 days)
I am using a GigE Vision compliant camera with the Image Acquisition Toolbox GigE Vision adaptor.
Occasionally, I get a an error related to a dropped packet / frame and the image acquisition process stops:
ERROR: gige: Block/frame 24 is being dropped because a lost packet is unable to be resent. There are several possible causes for packets being lost. See the troubleshooting information in the "Configuring GigE Vision Devices" section of the Image Acquisition Toolbox documentation.
Is there a way to catch this error, or is there a way to ignore the dropped packet / frame and continue acquisition?

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 31 Mar 2024
Edited: MathWorks Support Team on 2 Jun 2022
Note: This error can occur if the Ethernet adapter, camera network connection, and camera GigE streaming parameters (PacketSize and PacketDelay) are not configured for optimum operation. For more details, refer to:
The dropped packet / frame error is taking place in the Image Acquisition Engine thread and cannot be caught with try/catch.
One option, which, depending on the application, might be useful is to use the following approach to disable errors when dropped frames occur and to continue acquisition:
vid = videoinput('gige',1)
vid.IgnoreDroppedFrames = 'on';
Note: To get the total number of dropped frames you can read the NumDroppedFrames property.
vid.NumDroppedFrames
  • In MATLAB R2020b and prior releases, you can use the following imaqmex command before creating the videoinput object:
imaqmex('feature', '-gigeDisablePacketResend', true);
Note: 'gigeDisablePacketResend' option will be reset by the imaqreset command.
When dropped frames are allowed, it is relevant to know how many frames and which frames have been dropped during acquisition. The BlockID field in the metadata returned by getdata corresponds to the frame number set by the camera. A simple way to visualize this is to plot the acquired frames' BlockID and BlockID differences, as in the following code snippet:
[img, ts, metadata] = getdata(vid, vid.FramesAvailable);
blockIDs = [metadata.BlockID];
figure
plot(blockIDs, '.')
figure
plot(diff(blockIDs), '-x')
Another option for cameras that have GenTL (GenICam Transport Layer) producers provided by the vendor, is to use the GenTL adaptor ("GenICam Interface" support package / add-on) instead of the GigE adaptor to acquire images from the camera. This approach can make use of the high performance Ethernet packet filtering drivers provided by the vendor, and direct camera communication, including dropped packet events, will be handled by the manufacturer's GenTL producer.

More Answers (0)

Products


Release

R2016a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!