Image Acquisition Interface for GigE Vision compliant cameras

Interface: GigEVision2
Revision: 24.11.23
Date: 2026-04-20

General

This page provides the documentation of the universal HALCON GigEVision2 interface for accessing all GigE Vision compliant cameras. Registered customers can download the latest revision of this interface from the MVTec WWW server.

(This GigEVision2 interface replaces the old, deprecated HALCON acquisition GigEVision interface. Users switching from the previous implementation of the GigEVision acquisition interface to this new version, GigEVision2, please pay attention to the section highlighting differences between the two interface versions for easy transition).

System Requirements

Environment Variables

The interface can be controlled through several environment variables:

Interface Versioning

MVTec interfaces for digital I/O and image acquisition are always compatible to a range of HALCON versions. Therefore, the versioning scheme both describes the compatibility of the interface and also the revision of the interface itself. An interface version always consists of three numbers, separated by dots, i.e. 24.11.5. The first two numbers describe the minimum HALCON version the interface is compatible with. For the example version 24.11.5 this means that the interface is compatible with all HALCON versions since HALCON 24.11. The last number describes the revision of the interface, in this example this is revision 5.

Installation

Only when installing or updating the interface manually follow these steps:

Features

Limitations

GigE Vision Compatibility

GenICam GenApi

GigE Vision Device Access

To ensure full access to the device, the following preconditions have to be fulfilled:

General: Linux:

GVSP vs. RDMA stream types

The GigE Vision standard versions lower than 3.0 recognize only one stream type, called GVSP (GigE Vision Streaming Protocol) which transports the stream data over GigE Vision specific packets. GigE Vision 3.0 introduces a new stream type transporting the stream using Remote DMA (RDMA) technology, in particular using the Remote DMA over Converged Ethernet version 2 (RoCEv2) protocol. RoCEv2 offers hardware-offloaded, zero-copy data transfers and is defined within the InfiniBand specification.
The RDMA streaming requires dedicated hardware with RoCEv2 support including full integration in the operating system (see system requirements).
The HALCON GigEVision2 acquisition interface automatically selects the stream type to use:

MVTec GigE Vision Streaming Filter

Using Multiple Cameras

Identifying and Opening a Device

The connection to the (acquisition) device is established through the open_framegrabber operator. The operator provides a set of parameters allowing to configure the basic properties of the device and how the HALCON GigEVision2 interface controls it – see corresponding section. Some of the parameters can be also modified at runtime through set_framegrabber_param. This section concentrates solely on the 'Device' parameter of open_framegrabber, identifying the device (usually camera) that should be opened.
A connection to the device accessible through the GigEVision2 interface is established using the device ID which is guaranteed to be unique per GigE Vision device and (usually) stays persistent across multiple sessions. Optionally, the connection can be further defined through the interface ID, defining a single network interface of the host to be used for device lookup. Instead of the unique device ID, the user-defined name attached to the device can be used. Finally, it is also possible to use the IP address of the device or its serial number.
The list of all devices currently available in the system can be at any point obtained using info_framegrabber parameter 'device' or 'info_boards' – see corresponding section. Both parameters return a list of devices, each specified using the above listed entities in the format ' | device:<device id> | ... | interface:<interface id> | ... ', where '<device id>' is either the unique device ID or a user-defined name ('DeviceUserID'). If a user-defined name is set on the device, the string obtained by info_framegrabber will contain the entry 'user_name:<user-defined name>'. To make it easier for the user, the 'device' entry reflects the user-defined name if it is unique. If the same user-defined name is assigned to more than one device, only the first one will use it, all others will use the unique name instead. The full string (obtained from the info_framegrabber call) can be directly used for the 'Device' parameter of open_framegrabber, it uses the same format. As shown above, it consists of entries of the form 'token:value', separated by ' | '. The 'device' entry is the most significant one. The optional 'interface' entry specifies the network interface to look for the device.
Alternatively you can specify the device directly. For this, one or more of the entries can be omitted (or specified as 'default') - which behaves like using wildcards, meaning that the particular ID for that entity should not be considered (any ID would match). Only the ' | device:<device id>' string entry is important for open_framegrabber, the others are ignored and might be omitted. In addition to the device ID, devices can be opened by their alternative identifiers: user-defined name (specify the device using string in format 'user_name:<user_defined_name>'), IP address ('device_ip:<device_ip>') or the serial number ('device_sn:<device_serial_number>').
When a pure string without any 'token:' and without the ' | ' separator is used, it is interpreted directly as the device ID.
As a special case, the string 'default' can be used – in this case the HALCON acquisition interface will use the first available device (devices currently reported as non-accessible will be skipped). When using the same 'default' string again, that device will no more be accessible, therefore the next accessible device will be opened. This way, all devices connected to the system may be easily opened in a loop.

Note that the current version of the interface supports only single-stream devices and the first available stream is always open. If support for devices with multiple image streams will be added in future, the format to open the device might be extended with the stream entry.

Selection of GenICam Feature Description File(s)

The features of a device or GigE Vision Producer are described by GenICam feature description files (XML files) that are automatically parsed and offered to the user. The HALCON GigEVision2 image acquisition interface provides access to the features exposed through the following GenICam feature description files: In most cases the GenICam description files are provided by the device and the GigE Vision Producer. It is possible to store a copy of these files corresponding to an open connection by using the parameter 'do_write_configuration' (see set_framegrabber_param). The command will write all the GenICam description files and an "ini" file (details in set_framegrabber_param) with various information, including the location of the written GenICam description files, in the following format:
 
RemoteFile=%PATH_TO_GENICAM_FILE_OF_THE_DEVICE% 
SystemFile=%PATH_TO_GENICAM_FILE_OF_THE_SYSTEM_MODULE% 
InterfaceFile=%PATH_TO_GENICAM_FILE_OF_THE_INTERFACE_MODULE% 
DeviceFile=%PATH_TO_GENICAM_FILE_OF_THE_LOCAL_DEVICE_MODULE% 
StreamFile=%PATH_TO_GENICAM_FILE_OF_THE_STREAM_MODULE% 
The same ini-file format can be reused to force the HALCON acquisition interface to load an alternative XML file for one or more of these entities. This can be useful, e.g., for updates or troubleshooting. The files listed in the ini file will be used for the given entity instead of the original ones. For the entities excluded from the ini file, the GenICam description file will be searched and loaded the usual way. To apply the ini file, pass its full path to open_framegrabber in the 'CameraType' parameter.

Note that the ini-file can be reused also for other purposes such as storing/restoring configuration as described in Parameters – Persisting Device Status. Be aware that when persistence files are specified, they have priority over other explicit settings passed to open_framegrabber.

Parameters – Naming Conventions

The following groups of parameters exist:

Parameters – Sharing Among Devices

The parameters belonging to the system and interface modules of the GigE Vision Producer (i.e. those with "[System]" and "[Interface]" prefix see Parameters – Naming Conventions ) must be treated in a special way.
To grasp their behavior, it is important to understand that they do not describe or configure the device itself and do not thus fully belong to the opened instance of the device.
The interface module parameters belong to the interface on which given device was discovered and is shared among all devices open under this interface (see also Identifying and Opening a Device). The system module parameters belong to the entire GigE Vision Producer and are shared among all devices open within this GigE Vision Producer.
This has several implications. In particular, when accessing the system or interface module parameters through multiple device instances, those parameters must be treated as shared resources. Modifying those parameters through one device instance affects their values (and possibly values of other features depending on them) as seen through other device instances. Initial values of those parameters after opening a device instance might depend on the interactions with these features from previously opened device instances.

Parameters – GenICam Data Types

HALCON native parameter types are When accessing GenICam-based features, the GenICam data types must be mapped to the parameter types recognized by HALCON. GenICam offers the following types:

Parameters – Persisting Device Status

The current status of the acquisition device settings (values of all the parameters defining its working state) might be persisted while no acquisition is active, i.e. before grab_image_start or grab_image_async or after set_framegrabber_param(..., 'do_abort_grab', 1). This applies not only to actual device parameters, but also to parameters configuring the GigE Vision Producer and internal parameters of the GigEVision2 image acquisition interface. Device parameters are usually kept until the device is powered down. The GigE Vision Producer modules and the Consumer parameters are kept until close_framegrabber is called. To indicate which parameters to persist, use the parameter 'settings_selector'. The persistence functionality consists of two steps, storing the current configuration to a file and later re-loading it back to the device. The selected module settings, indicated by 'settings_selector', can be stored using the 'do_write_settings' parameter and re-loaded later using the 'do_load_settings' parameter, specifying the desired persistence file path in both cases. To query if a feature can be persisted use the postfix '_streamable'.

Note that while the format of the files is intentionally human readable and the files can be hand-modified if desired, such modifications should be done with care by someone familiar with the GenICam persistence functionality internals and given device. Improper modifications of the files can lead to errors when using it.

It is important to know that while performed by the software, persistence of the device-related features is actually a device-side function. If the persistence support is implemented incorrectly or incompletely by the device, it will not work as expected – in such a case the manufacturer could provide additional information or help.

The persistence related operations might be blocked by the device and/or GigE Vision Producer based on the current state, for example while an acquisition is in progress.

The same persistence files can be applied to the entire set of devices of the same type and firmware version. Applying the persistence files to a device of another type or using even different firmware version will probably lead to inconsistencies or will even fail completely – the corresponding device manufacturer should provide guidelines for such use cases .

Apart from the 'do_write_settings', the feature persistence file will also be written together with the ini file documented in the section Selection of GenICam Feature Description File(s) - using parameter 'do_write_configuration'. This command will generate extended version of the persistence file, storing not only the current device configuration, but also contents of its user sets and sequencer sets (if the device supports them). Additionally, it will also generate persistence files for all the GigE Vision Producer modules (system, interface, device and data stream). The persistence file entries in the ini file will have the format
 
RemotePersistence=%PATH_TO_PERSISTENCE_FILE_OF_THE_DEVICE% 
SystemPersistence=%PATH_TO_PERSISTENCE_FILE_OF_THE_SYSTEM_MODULE% 
InterfacePersistence=%PATH_TO_PERSISTENCE_FILE_OF_THE_INTERFACE_MODULE% 
DevicePersistence=%PATH_TO_PERSISTENCE_FILE_OF_THE_LOCAL_DEVICE_MODULE% 
StreamPersistence=%PATH_TO_PERSISTENCE_FILE_OF_THE_STREAM_MODULE% 
If the persistence functionality is not supported properly (or at all) by a given device, use the GenICam features UserSetSave/UserSetLoad, if supported by the device. These features will allow to store/load the device settings in the device's non-volatile memory.

Parameters – MVTec EasyParams

The MVTec EasyParams is a group of MVTec GenTL Consumer parameters based on the regular GenICam features of the device. These parameters allow easy access to the most commonly used camera parameters.
The list of EasyParams can be obtained calling 'available_easyparam_names'. Note that 'available_param_names' does not include the EasyParams. The MVTec EasyParams start with the prefix [Consumer], indicating they are internal parameters of the HALCON GenTL consumer itself.
Since HALCON 22.11 they are available via an own tab in the HDevelop Image Acquisition Assistant.
If your device does not support one of the EasyParams, querying its access will return 'ni' (not implemented). If instead 'na' (not available) is returned, the EasyParam is supported but currently not available, e.g., it depends on the current state of another EasyParam or the access of one or more GenICam features, or because the image acquisition is running. In the latter case, use set_framegrabber_param(..., 'do_abort_grab', ...) to stop the acquisition.
List of MVTec EasyParams: Detailed information of each MVTec EasyParam can be found in sections about getting framegrabber parameters and setting framegrabber parameters.
See also the HDevelop example gigevision2_easyparams.hdev.

Acquisition – Overview, Device Control

The image acquisition can be either synchronous (grab_image/grab_data) or asynchronous (grab_image_start/grab_image_async/grab_data_async), see the reference documentation of the operators.
The interface fully configures and controls the acquisition process on the camera. Note that some of the camera features might be locked by GenICam when an acquisition is active.
With synchronous grab (grab_image/grab_data), a new acquisition is started internally for each image, so that the application always gets a new image. Before delivering the image, the acquisition is stopped again, so between individual grab_image/grab_data calls, all acquisition related features remain unlocked.
With asynchronous grabbing, started explicitly by grab_image_start or implicitly by grab_image_async/grab_data_async, the interface keeps the acquisition running internally, collecting further images to be delivered through future grab_image_async/grab_data_async calls. The acquisition related features are locked, until the acquisition is stopped using set_framegrabber_param(..., 'do_abort_grab', ...).
The HALCON acquisition interface properly recognizes the 'Continuous', 'SingleFrame' and 'MultiFrame' acquisition modes configured on the device and adjusts the acquisition control logic accordingly.
Furthermore, the interface takes over exclusive access to several remote device features essential for the acquisition control (AcquisitionStart, AcquisitionStop, AcquisitionAbort, TLParamsLocked). The user application has no direct way to control these features.
The differences between the "image" and "data" version of the grab operators is documented in Acquisition – Grab Operators.

Acquisition – Buffer Handling

The interface allocates 4 buffers for the acquisition engine by default (the number of buffers can be changed through the 'Generic' parameter of open_framegrabber).
Whenever a new image is acquired successfully and passed to the application as a HALCON image, the interface keeps the buffer locked (not returning it to the acquisition engine) until a new grab-related operator is called by the application or the acquisition is aborted using set_framegrabber_param(..., 'do_abort_grab', ...). During this period, it is fully safe to query information about this "last acquired" buffer – for example query buffer properties through get_framegrabber_param parameters such as 'buffer_timestamp', 'buffer_is_incomplete', 'image_width' and 'image_height'. This applies also to Chunk Data eventually present in the buffer and is also usable in volatile mode.
When a new grab-related operator is called by the application, the interface returns the buffer to the acquisition engine and buffer-related queries are not valid anymore.

It can happen, that the camera is temporarily or constantly acquiring data in higher speed than the application is processing them. In such case the streaming engine of the GigE Vision Producer decides how to treat the acquired buffers based on the '[Stream]StreamBufferHandlingMode' parameter.

Note that the streaming engine behavior can be further controlled through additional parameters described in Advanced Streaming Engine Control.

Acquisition – Image Format Handling

With modern, generic image acquisition interfaces an application cannot make valid assumptions about the image format coming from the device based on the current settings. Some devices for example allow changing the image format properties while the acquisition is active.
The HALCON GigEVision2 image acquisition interface fully supports these use cases. It checks the image format and other important properties of every single buffer and generates HALCON images corresponding to both the acquired image format and eventual user configured output format parameters such as 'color_space' and 'bits_per_channel'. Only if the necessary information about the buffer are missing , the current settings are used as a fallback.

Acquisition – Grab Operators

The acquisition interface provides two mechanisms for acquisition of the image (or other) data from the device, grab_image/grab_image_async and grab_data/grab_data_async. Each of them might be more suitable for different use cases. Internally, both mechanisms work exactly the same (in particular how they acquire and process the data from the device), they differ in the way how the outputs are provided to the application.
The "traditional" grab_image/grab_image_async operators are still well suitable in simple use cases when just a single 2D image is acquired from the device. It is also currently used e.g. by the HDevelop's Image Acquisition Assistant. However, in case when the device is streaming more complex data structures, such as 3D data, multi-AOI or similar data, grab_image/grab_image_async is not able to provide all the outputs. In all these cases it will simply provide the first image found in the acquired data.
The "extended" grab_data/grab_data_async operators allow to output arbitrary number of HALCON images and also arbitrary number of control data. It is therefore suitable for use in advanced use cases when more than just a single HALCON image should be output. An important use case is acquisition from 3D devices (Using 3D Devices) when the operators can build and output the 3D object model through the control data output. It can be also used in other (possibly even device-specific) situations when the device outputs multiple images for a single acquisition.
The structure of the provided outputs can be queried with help of the 'image_contents', 'data_contents' and related parameters.
The grab_data/grab_data_async can also be used in the simple single-image use cases - in that case they will simply provide a single HALCON image and zero control data outputs. They can thus be used as full replacement of the traditional grab_image/grab_image_async operators.

Using 3D Devices

The acquisition interface fully supports the GenICam standard 3D device model and is thus capable to seamlessly integrate 3D devices compliant with this model. This means in particular that the application does not need to care about device-specific ways of 3D data formatting, the acquisition interface will generate the 3D data under the hood using the information from the device.
If instructed so (using the 'create_objectmodel3d' parameter), the acquisition interface will generate the 3D object model from the coordinate data acquired from the device. This model can be directly used by the HALCON's 3D object model related operators.
The completeness and accuracy of the final 3D object model strongly depends on the actual coordinate data and in particular on the 3D configuration information provided by the device. Because the 3D configuration metadata are typically passed from the device through the chunk data mechanism (Chunk Data), it is essential to observe that the chunk data generation is fully enabled on the device.
If some of the important 3D configuration information is missing, the acquisition interface will try to use the suitable defaults, but the quality of the 3D object model output can be lowered.
The creation of the 3D object model can be further affected by additional parameters such as 'coordinate_transform_mode', 'confidence_mode', 'confidence_threshold', 'add_objectmodel3d_overlay_attrib'.
Note: for devices not complying with the GenICam standard 3D device model the HALCON 3D object model cannot be automatically generated.
Note that the 3D object model output is only supported by the grab_data/grab_data_async operators, it cannot be acquired using grab_image/grab_image_async. Besides the 3D object model, the grab_data/grab_data_async operators also output the actual raw coordinate data in form of HALCON images. The individual outputs can be identified with help of 'image_contents', 'data_contents' and related parameters.

Raw Output Format – Custom Pixel Formats, Non-image Buffers

The HALCON GigEVision2 image acquisition interface has a built-in converter from the pixel formats described in the GenICam Standard Features Naming Convention to the desired HALCON image format. The parameters ColorSpace and BitsPerChannel (open_framegrabber, eventually set_framegrabber_param) define the desired format of the resulting HALCON image. If these parameters are set to defaults, the original pixel format coming from the device is preserved.
To offer a basic support of custom pixel formats (i.e., pixel formats not defined by PFNC or not supported by HALCON), the ColorSpace value 'raw' can be used. In this case the image acquisition interface delivers the buffer to the application without any format conversions.
Note that the same principle is applied whenever a buffer containing other than image data is acquired. Examples of such buffers can be files (e.g., compressed images) or raw data (results of smart camera processing). Such buffers are not real "images", but can still be delivered to the application as 'raw' HALCON images. It is the responsibility of the application to know how to interpret such data.
Last but not least, the 'raw' color space can also be used if the user explicitly wishes to receive raw input data without any conversions. For example when acquiring Bayer encoded images, specifying 'raw' means that the interface should not attempt to decode them to RGB or monochrome format, but deliver the data directly to the application.
It is important to know that when the interface does not have full information about the image format (dimensions and pixel format), it has to choose an artificial one. In such a case it delivers always an 8-bit image with dimensions matching the buffer size (square root of the image size). Eventually an unused tail of the HALCON image (if such an artificial image is bigger than the source buffer) will be padded with zeroes. The fact whether the last acquired buffer contained an image of known properties or a blob of other data (so that the artificial HALCON image size had to be used) as well as the size of the eventual tail padding can be queried using 'image_raw_buffer_type' and 'image_raw_buffer_padding_bytes' parameters.

Chunk Data

GenICam compatible cameras can deliver additional meta-data with every image in a so-called chunk data format. It is usually necessary to enable the delivery of individual meta-data "chunks" using the features 'ChunkModeActive' and 'ChunkSelector'/'ChunkEnable' first.
The decoding of the chunk data and matching them to the corresponding camera features is performed transparently by the interface.
The actual values might be read through the regular parameter reading mechanism, i.e., get_framegrabber_param. The choice of the meta-data to be delivered is device-specific. The names of the chunk related features usually start by convention with a prefix 'Chunk' (examples might be 'ChunkExposureTime' or 'ChunkGain'), however, the camera documentation should contain all the information about supported chunks and their corresponding feature names.
Some GenICam compatible devices might implement a chunk-only mode, in which meta-data without an image is transmitted. This mode is incompatible with the grab_image operators, but can be used with the grab_data operators. For some devices it might be necessary to switch the parameter [Stream]GevStreamAssumeImageInChunkPayload to false to allow this use-case.
The chunk data related features will only provide meaningful values if the "last acquired buffer" is valid, i.e., between delivery of the last image and next call to any grab-related operator (refer to section Acquisition – Buffer Handling).

Feature Change Notifications

It is possible to receive notifications about changes of any features exposed through the GenICam interface by the camera and GigE Vision Producer as well as for internal parameters of the acquisition interface.
Note that the notifications might be raised in various circumstances, including: Note that the notifications are raised whenever the feature is "marked dirty" (its cache invalidated) by one of the actions described above. It does not necessarily mean that its value has really changed, it is up to the application to check this.
Notification callbacks can be registered for individual features using set_framegrabber_callback - see corresponding operator documentation. Additionally, it is possible to use message queues to receive the event notification. In those cases it is necessary to create a message queue and then register the individual feature - see event message queues.

Event Data

GenICam compatible devices can deliver asynchronous events which optionally carry additional data. It is usually necessary to enable delivery of individual event types using the features 'EventSelector'/'EventNotification' first. For SFNC-compliant events, this is done automatically if the parameter 'event_notification_helper' is enabled.
The decoding of the event data and matching them to the corresponding features, including potential notifications, is performed transparently by the interface.
The actual values might be read through the regular parameter reading mechanism like get_framegrabber_param or by get_message_tuple if you are using message queues to receive events. The choice of the event types to be generated is device-specific. The names of the event related features usually start by convention with a prefix 'Event' (examples might be 'EventFrameTrigger' and 'EventFrameTriggerTimestamp'), however, the device documentation should contain all the information about supported events and their corresponding feature names.
Although the data corresponding to the last delivered event can be in general read at any time, when using callback to receive events it is highly recommended that reading the event data is synchronized to notifications for corresponding event feature(s). Only in such a case it is guaranteed that the read data correspond exactly to the very event instance being notified – and that the feature values are not just being modified through a new instance of the same event. Note that the notifications are raised from context of the event handling/dispatching thread, so when processing the user callback, the event handling mechanism is paused. If multiple data items are associated with the same event, it is enough to register notification just for the actual event feature and read all the data during the callback.
If using message queues to receive events, you can decide to add additional data to be delivered with the corresponding event feature(s), see Event Message Queues. For this case the interface will read all the specified event features as soon as the event is generated and add it to the corresponding message. This guarantees that the delivered information corresponds with the actual value at the time the event was generated.
Besides the asynchronous events generated by the actual device, asynchronous events (optionally including additional data) can be generated by any module of the GigE Vision Producer (system, interface, device and data stream). The information provided above about handling of the device events applies similarly also to the GigE Vision Producer events, including enabling/disabling them (typically using 'EventSelector'/'EventNotification' features provided by given module, i.e. with corresponding module prefix in the feature name). For SFNC-compliant events, this is done automatically if the parameter 'event_notification_helper' is enabled.
The interface will automatically capture and decode the events and match them to the corresponding GigE Vision Producer features. It is only important to understand that because the system and interface modules are potentially shared among multiple opened devices (see Parameters – Sharing Among Devices) and so, the same applies for asynchronous events generated by these shared modules.

Event Message Queues

This interface supports feature change notifications via message queues. Select the desired target feature with set_framegrabber_param(..., 'event_selector', ...). It is the same plain feature name (GenICam feature or internal parameter) as used with set_framegrabber_param, including a possible prefix, such as '[Device]' (refer to the Parameters – Naming Conventions).
Create a message queue at which you want to receive the notifications with create_message_queue and assign it to the selected feature with set_framegrabber_param(..., 'event_message_queue', QueueHandle).
The message queue can be registered for any GenICam based features, i.e., features published by the device and GigE Vision Producer or for internal features of the acquisition interface. On top of that, the notification can be registered also for internal events occurring within the acquisition interface, in particular 'event_new_buffer' which gets fired whenever the information about last acquired buffer is updated (new buffer grabbed or last buffer info invalidated when restarting the acquisition).
The list of supported targets can be queried by calling get_framegrabber_param(..., 'available_event_names', ...).
One of the important use cases for feature change callbacks is the device event delivery mechanism, see details in Event Data and Feature Change Notifications sections.
A new message would be added to the specified queue whenever a given feature is potentially changed (including its other properties such as range or access mode). Note that it does not necessarily always mean that the feature actually has a new value. A call to set_framegrabber_param(..., 'event_message_queue', 0) unregisters the previously registered message queue from the specified event. Note that the interface keeps just a single registration for every feature, if you attempt to register a new message queue for a feature that already had a message queue registered, the previous registration will be replaced with the new one.
The messages incoming on an event can be retrieved with dequeue_message and will contain at least three tuples. The first tuple (key 'id') is a unique identifier of the acquisition instance the event is coming from. It is a string composed as '<interface>:<unique_name>'. The second tuple (key 'event_name') is the name of the corresponding feature previously specified by 'event_selector'. The third tuple (key 'event_value') contains the value if the corresponding feature if available and readable.
If you decide to add additional data to be delivered with the corresponding event feature(s), add the features of interest with set_framegrabber_param(..., 'event_data', ...). Each event data feature will be appended to the event message with the key being its name and the tuple its value if readable. Note that duplicities possibly specified through 'event_data' are ignored The value of the notified feature itself (already reported in 'event_value') would also be considered as a duplicity and not reported again.

Advanced Streaming Engine Control

The streaming engine attempts to work well for all standard use cases. However, to reach optimal performance (whatever that means from perspective of each application), fine-tuning some parameters might be desirable to match given device type and application needs. One important aspect of the GigE Vision streaming protocol (GVSP) is management of resend-requests for missing packets (which can get lost between the device and application due to various reasons including in particular high CPU load). The control of the resend-requests might need to be considered both from application perspective (preferring low latency and high throughput or high reliability) as well as from device perspective (fixed predictable packet/block timing versus irregular streaming expectable e.g. for line scan cameras). It is desirable that based on known characteristics of the device and the system the resend requests are neither issued too late (the device might no longer store copies of those packets) nor too early (which can lead to duplicate packets being sent).
The engine can therefore be configured through various stream parameters including '[Stream]GevStreamMaxPacketGaps', '[Stream]GevStreamMaxBlockDuration', or '[Stream]GevStreamDeliverIncompleteBlocks'. When changing a parameter, it will be passed to the packet handling engine at closest suitable point (typically when re-queueing a buffer back to the engine) and applied to subsequent buffer acquisitions.
Some of the parameters, in particular '[Stream]GevStreamRingBufferSize' or '[Stream]GevStreamReceiveSocketSize' can have significant impact when tuning the interface performance with very high speed devices (when filter driver is not used). Their use can be strongly system specific and should be tuned, together with configuration of the actual network card driver, based on test experience on the actual target system.
On the other hand, the engine provides various statistics that might help to observe its performance and behavior and help to fine tune the input parameters. The statistics include for example '[Stream]GevStreamLostPacketCount', '[Stream]GevStreamResendCommandCount', or '[Stream]GevStreamIncompleteBlockCount'. The statistics are updated regularly and reset on each acquisition start.
Refer to the documentation of the stream parameters for complete list and details.
If the stream filter driver is not used, the ability to process incoming data has a heavy effect on the performance of the streaming engine. This is strongly affected by the priority of the streaming engine thread relative to other threads in the system. Refer to the documentation of the parameters '[Stream]StreamThreadPriority', '[Stream]StreamThreadSchedulingPolicy' and '[Stream]StreamThreadApplyPriority' for details. Upon device open, generally suitable default priority is selected.
Finally, the streaming infrastructure can be completely disabled using the 'streaming_mode=0' generic parameter while opening the device.
Note that many of the topics and parameters discussed in this section apply only for the GVSP stream type, not for the new RDMA stream type introduced in GigE Vision 3.0 (see GVSP vs. RDMA stream types). When in doubt refer to the documentation of the individual parameters.

Advanced Event Engine Control

The event engine works well for standard use cases. However, in specific use cases, the behavior must be fine tuned. The parameters described in this section are intended for this advanced use only and should be treated with care - wrong configuration can significantly affect performance.
The event engine thread priority is controlled by the parameters '[Device]DeviceEventsThreadPriority', '[Device]DeviceEventsThreadSchedulingPolicy' and '[Device]DeviceEventsThreadApplyPriority'. Upon device open, generally suitable default priority is selected.
The event handling infrastructure can be completely disabled using the 'device_event_handling=0' generic parameter while opening the device.

Debugging GigE Vision Applications

When debugging applications using GigE Vision devices, it is important to know that a core concept of the GigE Vision protocol is maintaining connection with the device using the regular 'heartbeat' packets. When the application stops maintaining the heartbeat, the device disconnects. The HALCON GigEVision2 handles the heartbeat control fully transparently, but there is a specific case when it cannot do so - when the application is being debugged and hits a breakpoint. In such case all threads are typically halted, including the one responsible for heartbeat maintenance.
To prevent loosing connection to the device while debugging, it is possible to significantly prolong the heartbeat timeout period or fully disable the heartbeat control on the device. Learn details from description of the parameters '[Device]DeviceLinkHeartbeatTimeout' and '[Device]DeviceLinkHeartbeatMode'.

Using HDevelop Image Acquisition Assistant

In case of using the HDevelop Image Acquisition Assistant the following hints will help to avoid problems:

Using Internal Color Conversion

The HALCON GigEVision2 interface supports an internal color conversion performed in software. The conversion is automatically applied for PFNC (Pixel Format Naming Convention) compatible cameras, when the color format delivered by the camera differs from the user defined format if set via the parameter 'color_space'. The used transformation algorithms are basic and optimized for speed.

Following transformations from the camera color space (see also PFNC) to the interface color space (see also 'color_space' parameter in this document) are supported:

with M = 128 for 8 bit raw data, and M = 32768 for 16 bit raw data.
The accuracy of the results is limited due to internal 16.16 fix-point arithmetic for 8 bit ( 0...255), and 24.8 fix-point arithmetic for 16 bit raw data.

Firmware Update

The acquisition interface supports the GenICam FWUpdate standard, allowing to update firmware on devices supporting the same standard in a generic way. If the device supports the standard, its vendor would distribute the firmware update files in form of GUF files, i.e. files with .guf extension.
To apply the firmware update, the device must be opened (open_framegrabber) in a special configuration mode (called "safe mode"). This mode is selected through the 'Generic' parameter of open_framegrabber - the parameter must include 'device_access=safe-mode'.
When opened in the safe mode, most of the usual parameters (either those provided by HALCON acquisition interface, the device itself or the GigE Vision Producer) will be unavailable. Instead, the configuration parameters corresponding to the given device and interface technology and in particular the parameters related to firmware update will become available.
To update the device, the GUF file is first selected in 'fwupdate_file_path', one of the (possibly multiple) updates from the file selected using 'fwupdate_update_selector' and finally applied through 'do_fwupdate_apply'. Documentation of these parameters provides further details.
Note that the update procedure may include one or more device resets, after which the device has to be re-discovered by the acquisition interface. The time needed for reset and re-discovery is specified by device vendor in the GUF file. However, there might be situations (depending on the device itself, its connection technology and system setup) when the re-discovery timeout is not sufficient and the device fails to get safely re-discovered. In such case, it is possible to specify an additional timeout that would be added to the one specified in the GUF file, allowing to successfully complete the process. This parameter, 'fwupdate_wait_after_reset', specifies the additional timeout in milliseconds.
See also the HDevelop example gigevision2_fwupdate.hdev.

Parameters for info_framegrabber

Parameter Value List Type Kind Description
'bits_per_channel' [-1, 8, 10, 12, 14, 16] integer pre-defined Values for bits per channel.
'camera_type' ['CAMFILE:', 'ini;xml', '<path>', 'default'] string pre-defined Syntax for connection configuration file and default value.
'color_space' ['default', 'gray', 'raw', 'rgb', 'rgbx', 'yuv'] string pre-defined Values for color space.
'defaults' [0, 0, 0, 0, 0, 0, 'progressive', -1, 'default', -1.0, 'false', 'default', '0', 0, 0] mixed pre-defined Default values for open_framegrabber.
'device' [' | device:<device id> | unique_name:<unique name> | user_name:<user-defined name> | interface:<interface id> | producer:mvtec_gigevision | device_ip:<device ip> | device_sn:<serial number>'] string dynamic List of GigE Vision devices discovered in the system with information about their device ID, unique name, user-defined name, interface to which they are connected and identifier of the image acquisition interface. See the full description in section about device opening. Only devices that are currently available for opening are listed.
'external_trigger' [] Ignored.
'field' [] Unused.
'general' [] string pre-defined Information about the HALCON GigEVision2 interface.
'generic' ['', 'num_buffers=<num>' , 'direct_connection=<mode>' , 'force_ip=<interface_ip/device_mac/force_device_ip/force_device_mask[/force_device_gateway/force_command_timeout]>' , 'force_sockdrv=1' , 'streaming_mode=0' , 'device_event_handling=0' ] string pre-defined Value list for the Generic parameter.
'horizontal_resolution' [0, 1] integer pre-defined Value list for horizontal resolution.
'image_height' [] Unsupported query.
'image_width' [] Unsupported query.
'info_boards' [' | device:<device_id> | unique_name:<unique_name> | user_name:<user_defined_name> | interface:<interface_id> | producer:mvtec_gigevision | vendor:<device_vendor> | model:<device_model> | device_ip:<device_ip> | device_sn:<device_serial_number> | interface_ip:<interface_ip> | status:<device_status> | suggestion:<generic_param>'] string dynamic List of GigE Vision devices discovered in the system with additional information as a string. Some values are only shown, if they are available. For misconfigured devices (such as those having an IP of a wrong subnet) a corresponding generic parameter to resolve the problem is suggested.
  • device_id is the name of the device, which will be shown by info_framegrabber(...,'device',...). If a user_name (or 'DeviceUserID') is set, then this will be shown. Otherwise the unique_name is used.
  • unique_name is a string, which contains the device MAC address, the vendor and the model separated by underscores. No other device should have the same string, so this is a unique name for the device.
  • user_name represents the value of the feature 'DeviceUserID', which is a user-defined name for the device. It can be set if the device is opened and provides this feature.
  • interface shows the hardware interface by which the device is connected to the PC. For GigEVision2 the value of this entry is 'Esen_ITF_' with the MAC address, IP and subnet mask of the the network interface card appended.
  • producer shows the name of the underlying GenICamTL producer.
  • vendor represents the value of the feature 'DeviceVendorName'.
  • model represents the value of the feature 'DeviceModelName'.
  • tl_type shows the type of the underlying transport layer, i.e. 'U3V'.
  • device_ip shows the IP address of the device, e.g. 169.54.12.243/16. This value can also be queried by the feature 'GevCurrentIPAddress'.
  • device_sn shows the serial number of the device, representing also the value of the feature 'DeviceSerialNumber'.
  • interface_ip is the IP address of the interface (mostly a network card), which has detected the device by a broadcast request, e.g. 169.54.18.34/16.
  • status shows, if the device is correctly configured or not. The possible values are 'available', 'read-only', 'busy', 'misconfigured' and 'unknown'. For misconfigured devices (such as those with IP settings for incorrect subnet) a corresponding generic parameter to resolve the problem is suggested through the suggestion info token. Status of 'busy' means the device is currently opened by another application. Even devices that are currently not available for opening are listed.
  • suggestion is added only if status is reported as 'misconfigured' because the device is on wrong subnet. The value of the suggestion info will be the generic 'force_ip' parameter that can be used to resolve the problem. This means that if you will pass the suggested 'force_ip' parameter as-is in the open_framegrabber operator's Generic parameter (see its documentation), the GigEVision2 interface will attempt to switch the device temporarily to correct subnet and open it.
'parameters' ['<parameters>'] string pre-defined Pre-defined parameters of the HALCON interface.
'parameters_readonly' ['<parameters>'] string pre-defined Pre-defined read-only parameters of the HALCON interface.
'parameters_writeonly' ['<parameters>'] string pre-defined Pre-defined write-only parameters of the HALCON interface.
'port' [] Unused.
'revision' '<revision>' string pre-defined Revision number of the GigEVision2 interface.
'start_column' [] Unsupported query.
'start_row' [] Unsupported query.
'vertical_resolution' [0, 1] integer pre-defined Value list for vertical resolution.

Parameters for open_framegrabber

Parameter Values Default Type Description
Name 'GigEVision2' string Name of the HALCON interface.
HorizontalResolution 0, 1, resolution 1 integer Set the desired horizontal resolution of the camera image:
  • 0: Keep the current Width settings of the camera.
  • 1: If vertical_resolution is also set to 1, configure full resolution of the camera using GenICam SFNC features (resetting binning/decimation features and setting the image size to maximum).
  • resolution: Use the value directly as image Width.
VerticalResolution 0, 1, resolution 1 integer Set the desired vertical resolution of the camera image:
  • 0: Keep the current Height settings of the camera.
  • 1: If horizontal_resolution is also set to 1, configure full resolution of the camera using GenICam SFNC features (resetting binning/decimation features and setting the image size to maximum).
  • resolution: Use the value directly as image Height.
ImageWidth --- 0 Ignored.
ImageHeight --- 0 Ignored.
StartRow --- 0 Ignored. Configure the image size through device parameters.
StartColumn --- 0 Ignored. Configure the image size through device parameters.
Field --- Ignored.
BitsPerChannel -1, 8, 10, 12, 14, 16 -1 integer Number of bits per channel of the resulting HALCON image. In case of -1 the bit depth of each respective acquired buffer is used. By specifying a value greater than 8 the grabbed images are delivered as uint2 images.
ColorSpace 'default', 'gray', 'raw', 'rgb', 'rgbx', 'yuv' 'default' string Specify the desired color space and thus the number of image channels of the resulting HALCON image. In case of 'default' for Mono pixel formats, ColorSpace is set to 'gray', otherwise to 'rgb' (and for unknown pixel formats to 'raw'). If the input pixel format is a supported 4 channel PFNC pixel format, the parameter 'rgbx' can be used to get all 4 channels.
Generic '', ['num_buffers=<num>' , 'direct_connection=<mode>' , 'force_ip=<interface_ip/device_mac/force_device_ip/force_device_mask[/force_device_gateway/force_command_timeout]>' , 'force_sockdrv=1' , 'streaming_mode=0' , 'device_event_handling=0' ], -1 -1 mixed With the Generic parameter some important values can be set before the camera is initialized. Note that the parameter names including the values must be strings, e.g., 'num_buffers=5' sets the number of buffers to 5.
The following parameters are available:
  • num_buffers: To set the maximum number of acquisition buffers used. Note that depending on the image size of the used camera a high number of buffers can exceed the available memory size of your computer. We recommend to use at least 2 buffers. Notice that the interface internally locks 1 buffer (see acquisition buffer handling), therefore if your application requires n buffers, 'num_buffers' must be set to n+1. Default: 4.
  • direct_connection: Enables direct connection to the device using its known GenTL interface and device ID. The GenTL specification allows opening the device directly when the device/interface ID is known, without explicitly instructing the GenTL Producer to refresh its internal device list, thus optimizing unnecessary timeouts. Because some GenTL Producers fail to implement this properly, the parameter is disabled by default. Possible values are 'enable' and 'disable'.
  • force_ip: Request to force temporary new IP settings to the device before connecting. Used in situations when the device is configured for subnet not matching the interface it is connected to. The parameter format is 'force_ip=interface_ip/device_mac/force_device_ip/force_device_mask', where interface_ip is current IP address of the interface the device is expected to be connected to (i.e. the interface on which the force IP request should be sent), device_mac is the MAC address of the device to be configured, force_device_ip and force_device_mask is the new IP address and subnet mask to be forced into the device. All the IP addresses are in the usual decimal dot-separated format, the MAC address in the usual hexadecimal colon-separated format. Note that the forced IP settings are not persistent (will not have effect beyond device's reboot. The basic format of the parameter described above can be optionally extended by two additional parameters 'force_ip=interface_ip/device_mac/force_device_ip/force_device_mask/force_device_gateway/force_command_timeout', where force_device_gateway is the new default gateway to be configured on the device and force_command_timeout specifies the time in microseconds, how long the operation should wait for device's acknowledge of the force IP success. When not present, default gateway '0.0.0.0' and a command timeout of 7000000 microseconds will be used. Note also that when querying the device list using info_framegrabber(...'info_boards'...), for each device with incorrect IP settings (wrong subnet), the GigEVision2 will suggest the force_ip generic parameter including suitable IP address and other parameters corresponding with the interface device was discovered on (verifying that given suggested IP address is not currently in use on that network segment. When working with the HDevelop Image Acquisition Assistant, it will directly suggest to apply the generic parameter when connecting to the device.
  • force_sockdrv: When present, the socket driver is always used for handling of the devices' data stream. The filter driver will not be automatically used even if available.
    This parameter is applicable on Windows systems only.
  • streaming_mode: In order to disable streaming (grab-related operators), this parameter has to be set to 0. The streaming is by default switched on for devices with streaming support.
  • device_event_handling: In order to disable device events which can be useful to reduce the used resources like the number of transfers or CPU usage in the Producer, this parameter has to be set to 0. The event handling is by default switched on for devices with event support.
ExternalTrigger --- Ignored. To configure the trigger mode please use set_framegrabber_param with the generic (SFNC) trigger parameters of the camera.
CameraType 'default', <ini/xml filename> 'default' string Full path to the configuration file with the specification of alternative GenICam description files to be loaded for the device and GigE Vision Producer, see detailed description in the section about device opening.
Device ' | device:<device id> | unique_name:<unique name> | user_name:<user-defined name> | interface:<interface id> | producer:mvtec_gigevision | device_ip:<device ip> | device_sn:<serial number>', '<device id>' string To open a camera, the device name as shown in info_framegrabber(...'device'...) or info_framegrabber(...'info_boards'...) can be used. Some of the string entries might be skipped or set as 'default'. To open a specific camera, either device, user_name, unique_name, serial number or the IP address of the device has to be set. It is preferred to specify explicitly which parameter is provided, for example 'user_name:MyCamera' or 'device_ip:192.168.1.1'. When device_ip is used in combination with the generic parameter 'direct_connection=enable', the device discovery is skipped, which shortens the connect time.
As a shortcut, only the unique device ID without any qualifier might be specified. The string 'default' can also be used, the interface will then return the first device that was detected. See full description in section about device opening.
Port --- Unused.
LineIn --- Ignored.

Parameters for set_framegrabber_param

The parameters of the cameras and GigE Vision Producer are accessed through GenICam and defined in GenICam description file(s) of the respective camera or GigE Vision Producer, so the parameter set is different for every product (although the parameter naming should adhere to SFNC and GenTL SFNC GenICam standard). A call of get_framegrabber_param(..., 'available_param_names', ...) returns a tuple containing all available parameters of the connected camera and GigE Vision Producer. See also section about parameter naming convention.
To set e.g. the current gain of the camera AcqHandle refers to (after calling open_framegrabber), the user can call set_framegrabber_param(AcqHandle, 'Gain', 6.0).
Please note that the interface sets the value of a parameter only if the value is valid. Integer and float values not matching the allowed range for given feature are aligned to the closest valid value. Invalid values of other feature types are refused.
Additionally to the GenICam parameters of the camera and of the GigE Vision Producer, the following HALCON interface parameters are supported by set_framegrabber_param:
Parameter Values Default Type Description
'[Consumer]exposure' real Specifies the exposure time. Usually the exposure time is specified in microseconds. However, cameras might deviate from this standard. Consult the documentation of your camera for more detailed information. If [Consumer]exposure_auto is not set to 'Off', [Consumer]exposure access is either read-only or not available. Besides, this EasyParam depends on the camera parameter ExposureMode. If [Consumer]exposure is not available, you might need to change ExposureMode manually to 'Timed'.
'[Consumer]exposure_auto' 'Off', 'Continuous', 'Once' string Specifies if the exposure time is set manually by the user or automatically by the camera.
  • Off: the exposure time is set manually by the user.
  • Once: the exposure time is automatically estimated by the camera device once, based on the next successfully captured image. This value might not be implemented on your device.
  • Continuous: the exposure time is automatically and continuously updated by the camera with every acquired image. This value might not be implemented on your device.
This EasyParam depends on the camera parameter ExposureMode. If [Consumer]exposure_auto is not available, you might need to change ExposureMode manually to 'Timed'
'[Consumer]gain' real Allows to increase the image brightness by applying an amplification factor. Consult the documentation of your camera for more detailed information. If [Consumer]gain_auto is not set to 'Off', [Consumer]gain access is either read-only or not available.
'[Consumer]gain_auto' 'Off', 'Continuous', 'Once' string Specifies if the gain is set manually by the user or automatically by the camera.
  • Off: the gain is set manually by the user.
  • Once: the gain is automatically estimated by the camera once, based on the next successfully captured image. This value might not be implemented on your device.
  • Continuous: the gain is automatically and continuously updated by the camera with every acquired image. This value might not be implemented on your device.
'[Consumer]trigger' 'Off', 'Software', 'Line<x>' string Specifies the mode in which the image acquisition is being triggered.
  • Off: the trigger mode is deactivated and the device operates in free run mode, acquiring images continuously.
  • Software: the trigger mode is activated and [Consumer]trigger_software can be used to generate an internal trigger.
  • Line<x>: the trigger mode is activated and the specified physical line is configured as external source for the trigger signal. Other hardware trigger signals are not supported via this EasyParam.
'[Consumer]trigger_activation' 'RisingEdge', 'FallingEdge', 'AnyEdge', 'LevelHigh', 'LevelLow' string Specifies the activation mode of the trigger. This EasyParam is available when using hardware trigger (i.e. [Consumer]trigger is 'Line<x>'), and if supported by your device.
  • RisingEdge: the trigger is considered valid on the rising edge of the source signal.
  • FallingEdge: the trigger is considered valid on the falling edge of the source signal.
  • AnyEdge: the trigger is considered valid on the falling or rising edge of the source signal.
  • LevelHigh: the trigger is considered valid as long as the level of the source signal is high.
  • LevelLow: the trigger is considered valid as long as the level of the source signal is low.
'[Consumer]trigger_delay' real Specifies the delay that should apply after the trigger has been received before activating the image acquisition. Usually the delay is specified in microseconds. However, cameras might deviate from this standard. Consult the documentation of your camera detailed information.
'[Consumer]trigger_software' integer Generates an internal signal. [Consumer]trigger must be set to 'Software', otherwise the EasyParam is not available.
'[Device]DeviceEventsThreadApplyPriority' --- integer Applies the thread priority and scheduling policy (if applicable on given operating system) configured through the '[Device]DeviceEventsThreadPriority' and '[Device]DeviceEventsThreadSchedulingPolicy' parameters to the event processing thread. If the thread is running, the values are directly applied. If the thread is not running in the moment, the values are stored and will be applied as soon as the thread is started again. It is responsibility of the application to ensure that the calling process has sufficient privileges.
The feature is not available for devices not supporting device events or if the event handling was disabled using the 'device_event_handling=0' generic parameter.
BEWARE: Setting this parameter can lead to an unusable or poorly performing system, use with care.
'[Device]DeviceEventsThreadPriority' <thread_priority> integer OS-specific thread priority value to be used for the internal event processing thread. The actual values are directly the priority identifiers of the operating system, e.g. THREAD_PRIORITY_HIGHEST under Windows or a real-time priority value under Linux.
The actual priority is applied only after executing the '[Device]DeviceEventsThreadApplyPriority' command parameter, possibly together with the '[Device]DeviceEventsThreadSchedulingPolicy' value if applicable on given system.
It is the responsibility of the application to ensure that the calling process has sufficient privileges to apply the priority change and that the value written to the parameter is a valid priority identifier. After applying '[Device]DeviceEventsThreadApplyPriority', the application can read back the priority value to verify if it was properly applied.
Note that when opening the device, the GigE Vision Producer attempts itself to elevate the thread priority to a suitable value.
The feature is not available for devices not supporting device events or if the event handling was disabled using the 'device_event_handling=0' generic parameter.
BEWARE: Setting this parameter can lead to an unusable or poorly performing system, use with care.
'[Device]DeviceEventsThreadSchedulingPolicy' <scheduling_policy> integer OS-specific scheduling policy value to be used for the internal event processing thread. The actual values are directly the priority identifiers of the operating system, e.g. SCHED_FIFO under Linux. Note that this feature is not available under Windows.
The actual scheduling policy is applied only after executing the '[Device]DeviceEventsThreadApplyPriority' command parameter, together with the '[Device]DeviceEventsThreadPriority' value.
It is the responsibility of the application to ensure that the calling process has sufficient privileges to apply the scheduling policy and that the value written to the parameter is a valid scheduling policy identifier. After applying '[Device]DeviceEventsThreadApplyPriority', the application can read back the scheduling policy value to verify if it was properly applied.
The feature is not available for devices not supporting device events or if the event handling was disabled using the 'device_event_handling=0' generic parameter.
BEWARE: Setting this parameter can lead to an unusable or poorly performing system, use with care.
'[Device]DeviceLinkHeartbeatMode' 'Off', 'On' 'Off' string Allows to disable the heartbeat control on the device. The parameter will be only present if supported by given device. It is usually only good idea to disable the heartbeat if debugging the application (to prevent losing the device connection when hitting a breakpoint). When disabling and not re-enabling the device and if the application fails to properly close the connection (such as during crash or hard debugger stop), the device will never assume the connection has expired and will have to be rebooted. In most cases leaving the default value intact is the best solution. A possible exception can be to significantly prolong the timeout while debugging, if given device does not support heartbeat disabling.
'[Device]DeviceLinkHeartbeatTimeout' <timeout> integer Heartbeat timeout (in usec) after which the device disconnects if the application fails to maintain the heartbeat protocol. In most cases leaving the default value intact is the best solution. A possible exception can be to significantly prolong the timeout while debugging, if given device does not support heartbeat disabling.
'[Device]DeviceMessageChannelKeepAliveTimeout' 30000 float Interval (in milliseconds) between keep-alive packets sent while listening for device events to the device's message channel port to simulate the events traffic is outbound rather than inbound, thus helping to receive the events reliably in presence of a firewall. The actual required interval might be specific to the actual firewall in use. Zero means no keep-alive packets are sent at all.
'[Device]EventNotification' 'Off', 'On' 'Off' string Enables/disables delivery of GigE Vision Producer device module event selected in '[Device]EventSelector'.
'[Device]EventSelector' 'DeviceLost' string Selects a GigE Vision Producer device module event to be enabled/disabled using '[Device]EventNotification'.
'[Device]LinkCommandRetryCount' 3 integer Specifies number of times the HALCON GigEVision2 should attempt to retry sending a given control command to the device when not receiving corresponding command acknowledge from the device (assuming the command got lost). Works together with '[Device]LinkCommandTimeout' and usually should stay intact.
'[Device]LinkCommandTimeout' 200000 integer Specifies the timeout (in usec) the HALCON GigEVision2 should wait for device acknowledge for individual control commands before assuming the command got lost and trying to send it again. Works together with '[Device]LinkCommandRetryCount' and usually should stay intact.
'[Interface]GevDeviceForceGateway' <gateway> integer Default gateway to be forced (together with IP address) into the device selected in '[Interface]DeviceSelector'. This parameter is only used to prepare the desired IP configuration values for the device (together with '[Interface]GevDeviceForceIPAddress' and '[Interface]GevDeviceForceSubnetMask', the settings are actually applied together using '[Interface]GevDeviceForceIP'.
Use with care, using configuration not matching the interface the device is connected to may render the device unreachable. Intended to fix exactly these kinds of situations. Applicable only on devices that are not currently open.
Note that the 'force_ip' generic parameter in open_framegrabber can serve similar purpose.
'[Interface]GevDeviceForceIP' 0, 1 integer Sends request to change current IP settings (IP address, subnet mask and default gateway) to the device selected in '[Interface]DeviceSelector'. The requested new settings are those previously stored into parameters '[Interface]GevDeviceForceIPAddress', '[Interface]GevDeviceForceSubnetMask' and '[Interface]GevDeviceForceGateway'. Use with care, using configuration not matching the interface the device is connected to may render the device unreachable. Intended to fix exactly these kinds of situations. Applicable only on devices that are not currently open, opened devices will ignore the request. The settings will not persist the device's power cycle.
The operation will take potentially significant amount of time (seconds), the timeout used to wait for operation completion can be controlled by '[Interface]GevDeviceForceIPTimeout', see its documentation for further details. To query status of the operation, read back value of the '[Interface]GevDeviceForceIP' parameter after starting it: 0 means 'not yet done', 1 means 'operation finished'. Once 'finished' the actual success of the operation can be read using '[Interface]GevDeviceLastForceIPSuccess'.
Note that the 'force_ip' generic parameter in open_framegrabber can serve similar purpose.
'[Interface]GevDeviceForceIPAddress' <ip_address> integer IP address to be forced (together with subnet mask and gateway) into the device selected in '[Interface]DeviceSelector'. This parameter is only used to prepare the desired IP configuration values for the device (together with '[Interface]GevDeviceForceSubnetMask' and '[Interface]GevDeviceForceGateway', the settings are actually applied together using '[Interface]GevDeviceForceIP'.
Use with care, using configuration not matching the interface the device is connected to may render the device unreachable. Intended to fix exactly these kinds of situations. Applicable only on devices that are not currently open.
Use '[Interface]GevDeviceProposeIP' to fill this parameter automatically with suitable value.
Note that the 'force_ip' generic parameter in open_framegrabber can serve similar purpose.
'[Interface]GevDeviceForceIPTimeout' [10000, 10000000] 7000000 integer Timeout (in microseconds) to wait for result of the '[Interface]GevDeviceForceIP' operation. Note that devices respecting recommendation of the GigE Vision specification will verify usability (conflicts) of the required IP address through ARP mechanisms, which implies it might need to wait up to 7 seconds for the ARP response. Therefore 7 seconds is the default value of the timeout.
'[Interface]GevDeviceForceSubnetMask' <subnet_mask> integer Subnet mask to be forced (together with IP address) into the device selected in '[Interface]DeviceSelector'. This parameter is only used to prepare the desired IP configuration values for the device (together with '[Interface]GevDeviceForceIPAddress' and '[Interface]GevDeviceForceGateway', the settings are actually applied together using '[Interface]GevDeviceForceIP'.
Use with care, using configuration not matching the interface the device is connected to may render the device unreachable. Intended to fix exactly these kinds of situations. Applicable only on devices that are not currently open.
Note that the 'force_ip' generic parameter in open_framegrabber can serve similar purpose.
'[Interface]GevDeviceProposeIP' --- integer Generates proposal for suitable IP settings (IP address, subnet mask and default gateway) to the device selected in '[Interface]DeviceSelector'. The settings are proposed to match the subnet of the interface where the device is connected, so that the device would be directly reachable.
The proposed settings are stored into parameters '[Interface]GevDeviceForceIPAddress', '[Interface]GevDeviceForceSubnetMask' and '[Interface]GevDeviceForceGateway' and can be applied to the device using '[Interface]GevDeviceForceIP'.
'[Stream]DeviceStreamChannelKeepAliveTimeout' 30000 float Interval (in milliseconds) between keep-alive packets sent during active streaming to the device's stream channel port to simulate the stream traffic is outbound rather than inbound, thus helping to stream reliably in presence of a firewall. The actual required interval might be specific to the actual firewall in use. Zero means no keep-alive packets are sent at all.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]DeviceStreamChannelNegotiatePacketSize' --- integer Starts negotiation for the optimal packet size considering the remote device, host and their connection path. The negotiation result is applied on the device and reflected in '[Stream]DeviceStreamChannelPacketSize'. If the negotiation fails, the algorithm attempts to revert the configuration to the initial packet size value.
Note that the negotiation is applied automatically when opening the device.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]DeviceStreamChannelPacketSize' <packet_size> integer Packet size configured for the device stream channel (similar feature might appear also in feature set of the remote device itself). Configures both the remote device and GigE Vision Producer.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]DeviceStreamChannelPacketSizeInc' --- integer Controls desired increment of the packet size feature to be used for the stream channel. Affects both the direct control of the packet size ('[Stream]DeviceStreamChannelPacketSize') as well as the negotiation algorithm ('[Stream]DeviceStreamChannelNegotiatePacketSize').
The limit should be usually set in sync with actual limits imposed by the device itself, unless there are reasons to apply stricter limits. When the device limits are unknown, the initial value is set to 4.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]DeviceStreamChannelPacketSizeMax' --- integer Controls desired maximum of the packet size feature to be used for the stream channel. Affects both the direct control of the packet size ('[Stream]DeviceStreamChannelPacketSize') as well as the negotiation algorithm ('[Stream]DeviceStreamChannelNegotiatePacketSize').
The limit should be usually set in sync with actual limits imposed by the device itself, unless there are reasons to apply stricter limits. When the device limits are unknown, the initial value is set to the MTU size accepted by the network interface the device is connected to.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]DeviceStreamChannelPacketSizeMin' --- integer Controls desired minimum of the packet size feature to be used for the stream channel. Affects both the direct control of the packet size ('[Stream]DeviceStreamChannelPacketSize') as well as the negotiation algorithm ('[Stream]DeviceStreamChannelNegotiatePacketSize').
The limit should be usually set in sync with actual limits imposed by the device itself, unless there are reasons to apply stricter limits. When the device limits are unknown, the initial value is set to 46.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]EventNotification' 'Off', 'On' 'Off' string Enables/disables delivery of GigE Vision Producer data stream module event selected in '[Stream]EventSelector'.
'[Stream]EventSelector' 'TransferEnd' string Selects a GigE Vision Producer data stream module event to be enabled/disabled using '[Stream]EventNotification'.
'[Stream]GevStreamAbortCheckPeriod' 300000 float Interval in microseconds defining how often the packet handling thread checks for stop requests. Shorter time assures faster acquisition stop, but implies higher thread activity at idle times.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamAssumeImageInChunkPayload' 0, 1 1 integer Controls how the GigeVision payload type chunk data is reported through GenTL. True (1): report as payload type image. False (0): report as payload type chunk only. If it is known that the device does indeed only transfer chunk data without any contained image, this parameter can be set to 0 before 'grab_image_start', in order to get access to the contained chunk data with 'grab_data_async'.
'[Stream]GevStreamDeliverIncompleteBlocks' 0, 1 1 integer Flag indicating if incomplete buffers (with one or more missing packets) should be delivered or discarded. Note that if the leader or trailer of a block is missing it will be discarded anyway.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamFullBlockTerminatesPrev' 0, 1 0 integer Flag indicating whether receiving a complete buffer immediately terminates any previous ones in the acquisition queue, no matter if resend is still pending for them, thus avoiding blocking the full one.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamMaxBlockDuration' 0 float Maximal duration ('on the wire') of a block in microseconds. When it expires, the engine will assume the block trailer (block trailing control packet) should be already received - and if packet resend is supported, it will ask to resend it.
Zero means no limit, which is suitable for example for line scan devices with sparse line triggers.
Note: for filter driver this is rounded to milliseconds. If it expires the oldest block is checked if it can be delivered. If this is not the case resends for the oldest block are requested. This block is also marked for delivery if more packets than the trailing ones are missing. When the timer expires a second time marked blocks are either discarded or delivered.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamMaxPacketGaps' 30 integer Socket driver: Maximal number of packet gaps in a block. Affects the amount of resources allocated for the resend mechanism.
Filter driver: Percentage of allowed missing packets for an incomplete block. Consequently this is also the maximum number of resend requests sent out per block.
When exceeded, the engine will give up trying to finish this block and will discard it.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamPacketOrderDelay' 10 float Control how long to wait for packets arriving out of order before requesting resends. For the socket driver this is a time period in microseconds, for the filter driver it is the number of packets to wait before checking for missing packets and eventually triggering a resend. The main purpose is to avoid resend request too early in situations when out of order packets are expectable (such as with link aggregation based connections or cameras which send packets out of order e.g. due to improper usage of multiple sensor tabs).
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamReceiveSocketSize' 128000 integer Size (in bytes) of the socket receive buffer. Maps directly to the SO_RCVBUF socket option. Applicable for socket driver only, not used by the filter driver.
On Linux systems, increasing this value significantly, as far as allowed by limit imposed by the sysctl 'rmem_max' parameter usually brings significant improvement when experiencing performance issues (packet loss) with very high speed devices.
On Windows systems, increasing the value up to 512000 usually brings performance improvement, increasing any further might have no or even negative impact (subject to test on each system). Instead, '[Stream]GevStreamRingBufferSize' might have greater impact.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamRingBufferSize' 256000 integer Size of the stream engine ring buffer to store packets (in bytes). The ring buffer separates the socket draining and packet handling threads. Applicable for socket driver only, not used by the filter driver.
The ring buffer can help to overcome performance peaks and prevent packet loss if the system load is very high.
The optimal value should be found by experiment when experiencing performance issues (packet loss) with a high speed device. Setting it as high as the size of few full buffers might give best results on Windows systems.
On Linux systems, '[Stream]GevStreamReceiveSocketSize' might have greater impact.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]StreamBufferHandlingMode' 'OldestFirst', 'OldestFirstOverwrite', 'NewestOnly' 'OldestFirst' string Selects the mode the streaming engine uses to handle newly acquired data, in particular when the camera runs faster than the application processing. The parameter is writeable only if no acquisition is active. Supported values are:
  • 'OldestFirst': The acquired buffers are always delivered in FIFO manner (oldest first). If the acquisition engine receives a new buffer from the camera but has no available free buffer to fill it in, the new data is discarded.
  • 'OldestFirstOverwrite': The acquired buffers are always delivered in FIFO manner (oldest first). If the acquisition engine receives a new buffer from the camera but has no available free buffer to fill it in, it checks, whether there are older buffers waiting for delivery, not yet picked up by the Consumer. If yes, it takes the oldest of them, overwrites it with the new data and appends it to the end of the output queue. If the output queue is empty (no buffer available for overwriting), the new data is discarded. Applicable for socket driver only, undefined behavior with filter driver.
  • 'NewestOnly': The output queue of buffers waiting for delivery never contains more than a single (newest) buffer. If the acquisition engine receives a new buffer and there is already an older buffer waiting for delivery in the output queue, the new buffer is put to the output queue instead and the old one is reused for next acquisition. If there are no available free buffers and the output queue is also empty, new data is discarded.
'[Stream]StreamThreadApplyPriority' --- integer Applies the thread priority and scheduling policy (if applicable on the given operating system) configured through '[Stream]StreamThreadPriority' and '[Stream]StreamThreadSchedulingPolicy' parameters to the stream processing thread. If the thread is running (acquisition started), the values are directly applied. If the thread is not running in the moment, the values are stored and will be applied as soon as the thread is started again. It is the responsibility of the application to ensure that the calling process has sufficient privileges.
BEWARE: Setting this parameter can lead to an unusable or poorly performing system, use with care.
'[Stream]StreamThreadPriority' <thread_priority> integer OS-specific thread priority value to be used for the internal stream processing thread. The actual values are directly the priority identifiers of the operating system, e.g. THREAD_PRIORITY_HIGHEST under Windows or a real-time priority value under Linux.
The actual priority is applied only after executing the '[Stream]StreamThreadApplyPriority' command parameter, possibly together with the '[Stream]StreamThreadSchedulingPolicy' value if applicable on given system.
It is the responsibility of the application to ensure that the calling process has sufficient privileges to apply the priority change and that the value written to the parameter is a valid priority identifier. After applying '[Stream]StreamThreadApplyPriority', the application can read back the priority value to verify if it was properly applied.
Note that when opening the device, the GigE Vision Producer attempts itself to elevate the thread priority to a suitable value.
BEWARE: Setting this parameter can lead to an unusable or poorly performing system, use with care.
'[Stream]StreamThreadSchedulingPolicy' <scheduling_policy> integer OS-specific scheduling policy value to be used for the internal stream processing thread. The actual values are directly the priority identifiers of the operating system, e.g. SCHED_FIFO under Linux. Note that this feature is not available under Windows.
The actual scheduling policy is applied only after executing the '[Stream]StreamThreadApplyPriority' command parameter, together with the '[Stream]StreamThreadPriority' value.
It is the responsibility of the application to ensure that the calling process has sufficient privileges to apply the scheduling policy and that the value written to the parameter is a valid scheduling policy identifier. After applying '[Stream]StreamThreadApplyPriority', the application can read back the scheduling policy value to verify if it was properly applied.
BEWARE: Setting this parameter can lead to an unusable or poorly performing system, use with care.
'add_objectmodel3d_overlay_attrib' 'disable', 'enable' 'disable' string Controls if the acquisition interface should attempt to append the intensity/color overlay to the generated 3D object models. Applicable only if a 3D object model is being output from given grab operator. When switched on, the acquisition interface will try to find suitable information within the acquired data (if it is provided by the device). If so, it appends the overlay information for each point in the output model in form of an extended attribute. Note that in some advanced use cases there might be multiple potential overlay images output by the device, the acquisition interface therefore attempts to find the most suitable one.
First, it tries to identify data marked as "intensity" image in the acquired data. If found and provided as monochrome 2D image, it is appended as '&intensity_gray' extended attribute. If found and provided as RGB image, it is appended as three extended attributes, '&intensity_red', '&intensity_green' and '&intensity_blue'.
If "intensity" data cannot be identified, it tries to find data marked as "reflectance". If found and provided as monochrome 2D image, it is appended as '&reflectance_gray' extended attribute. If found and provided as RGB image, it is appended as three extended attributes, '&reflectance_red', '&reflectance_green' and '&reflectance_blue'.
Finally, if neither "intensity" nor "reflectance" data can be identified (either not present or not correctly marked by the device, it picks the first 2D image within the acquired data than can be mapped to the 3D coordinates. If found and provided as monochrome 2D image, it is appended as '&overlay_gray' extended attribute. If found and provided as RGB image, it is appended as three extended attributes, '&overlay_red', '&overlay_green' and '&overlay_blue'.
If no suitable 2D image is found, no overlay is appended. The actually appended extended attributes can be queried for example using the get_object_model_3d_params operator with the 'extended_attribute_names' parameter. The overlay can be also used for visualization purposes.
'bits_per_channel' -1, 8, 10, 12, 14, 16 integer Number of bits per channel of the resulting HALCON image. In case of -1 the bit depth of each respective acquired buffer is used. By specifying a value greater than 8 the grabbed images are delivered as uint2 images.
'buffer_reallocation_mode' 'only_increase_size', 'follow_payloadsize' 'only_increase_size' string Defines the strategy to follow when reallocating the buffers for a new acquisition. In case of 'only_increase_size', the buffers will be only reallocated when the payload size increases. In case of 'follow_payloadsize', the buffers will be reallocated every time the payload size changes.
'clear_buffer' 'disable', 'enable' 'disable' string If enabled, each buffer content is cleared before re-queueing (all bytes set to 0xF0 regardless the expected pixel format), so you can see which parts of an image are missing, in case e.g. the transfer of some image packets failed. This parameter adds of course a runtime overhead to write the 0xF0 data every time a buffer is queued. It is mainly useful for debugging in combination with transport layers which do not guarantee the transfer of complete images. Please note, that this parameter does not modify the buffer queue, only the content of a buffer will be set to a defined state.
'color_space' 'default', 'gray', 'raw', 'rgb', 'rgbx', 'yuv' string Specify the desired color space and thus the number of image channels of the resulting HALCON image. In case of 'default' for Mono pixel formats, ColorSpace is set to 'gray', otherwise to 'rgb' (and for unknown pixel formats to 'raw'). If the input pixel format is a supported 4 channel PFNC pixel format, the parameter 'rgbx' can be used to get all 4 channels.
'confidence_mode' 'off', 'object_model_3d' 'off' string Controls if (and how) the information about pixel confidence level is used by the acquisition interface. Applicable only for devices and use cases where the confidence information is delivered (per-pixel) together with the actual pixel data.
The threshold to distinguish between valid and invalid pixels is controlled using the 'confidence_threshold' parameter.
Note that in some use cases there might be other criteria how to mark given pixel invalid, for example if the device uses "invalid pixel value" for a 3D coordinate. These cases are not covered by the 'confidence_mode' parameter and such invalid pixels are always rejected from the 3D object model. Possible values are:
  • off: Default value. The pixel confidence information is not applied to any of the grab operator outputs, even if supplied by the device.
  • object_model_3d: If the pixel confidence level information is available, it is applied to the eventually generated 3D object models (but not to any other outputs, in particular not to the image outputs). This means that pixels ("points") with confidence lower than the configured threshold are not included in the generated 3D object model.
'confidence_threshold' [0.0, 1.0] 0.5 float Threshold separating between valid and invalid pixels. Applicable only for devices and use cases where the confidence information is delivered (per-pixel) together with the actual pixel data. The decision how (to which outputs) the confidence threshold is applied is controlled using the 'confidence_mode' parameter.
The threshold is interpreted as a (float) ratio between 0.0 and 1.0. The acquisition interface will remap this ratio to the actual confidence range provided by the device and use it to decide which pixels are valid and which not. Pixels with confidence lower than the specified threshold are considered invalid.
'coordinate_transform_mode' 'none', 'cartesian', 'reference' 'reference' string Controls which coordinate transformation operations should the acquisition interface attempt to perform when building the 3D object model from acquired 3D coordinates. Note that the decision which transformation should be performed and which parameters should be used fully depends on the 3D configuration information provided by the device together with the acquired data. If this information is insufficient or coordinates are inaccurate, the result of the transformation(s) might be meaningless or unpredictable. Refer to Using 3D Devices for more details.
Possible values are:
  • none: The acquisition interface will not perform any coordinate transformation. The 3D object model will contain the "raw" coordinates, possibly only scaled depending on the hints from the device.
  • cartesian: If the coordinate system used by the device is other than Cartesian, the acquisition interface will convert the coordinates to Cartesian system (native for HALCON's 3D object model). It will not attempt to further transform the coordinates from the device's internal ("anchor") coordinate system to the reference system.
  • reference: Default mode. Will transform to Cartesian coordinates if needed and then attempt to transform to the "reference" coordinate system if the device supports it and provides corresponding instructions. The purpose of the reference system is to allow merging and aligning data from multiple devices. The reference system is in contrast with the native ("anchor") coordinate system which is device specific and corresponds to its actual measurement system and actual configuration.
    The position and orientation of the reference system should be indicated by a reference point marker on the device's housing.
    This always directly implies the transformation to Cartesian coordinates because the reference coordinate system is always Cartesian.
'create_objectmodel3d' 'disable', 'enable' 'disable' string Controls whether the acquisition interface should attempt to generate HALCON 3D object model(s) when encountering 3D coordinates within the acquired data.
To obtain a 3D object model, the application has to use the grab_data/grab_data_async operators which can return the handles to the generated models through the control data outputs. The grab_image/grab_image_async operators cannot return the 3D object models.
IMPORTANT: the parameter is disabled by default. When enabling, the application is responsible for releasing the generated object models and associated resources using the clear_object_model_3d operator once it does not need given model(s) any more. It should do so by tracking which of the control data outputs of every single grab_data/grab_data_async calls carry 3D object model handle(s). This can be done using the 'data_contents' parameter.
When generating the 3D object model, the acquisition interface processes the 3D coordinates found in the acquired data and builds the point cloud with help of the information about the actual 3D configuration reported by the device. Refer to Using 3D Devices for more details.
'delay_after_stop' <milliseconds> 0 integer The time to wait (in milliseconds) between stopping the acquisition on the device (AcquisitionStop command) and GigE Vision Producer.
'do_abort_grab' --- Aborts the current image acquisition and unlocks parameters, that might be locked when acquisition is active. See acquisition overview.
'do_fileaccess_delete' --- Deletes content of device file 'fileaccess_remote_name', provided that the device supports the file delete operation.
Note that all file access related parameters are available only if given device supports the GenICam file access functionality.
'do_fileaccess_download' --- Downloads content of device file 'fileaccess_remote_name' into host file specified in 'fileaccess_file_path'.
Note that all file access related parameters are available only if given device supports the GenICam file access functionality.
'do_fileaccess_upload' --- Uploads data from host file 'fileaccess_file_path' into device file specified in 'fileaccess_remote_name'. It is user's responsibility that the size and content of the source file matches device's expectations.
Note that all file access related parameters are available only if given device supports the GenICam file access functionality.
'do_fwupdate_apply' --- Applies the firmware update selected in 'fwupdate_update_selector'.
Note that all firmware update related parameters are available only in the dedicated "safe mode", see Firmware Update.
'do_load_settings' <input_file> string Restores the previously stored settings of the opened device. The parameter 'settings_selector' specifies if the settings of the actual (remote) device, one of the GigE Vision Producer modules or the Consumer parameters (internal parameters of GigEVision2 image acquisition interface) are to be restored. See detailed description in section Parameters - Persisting Device Status.
'do_write_configuration' <output_file> string Writes a configuration (ini) file and additionally writes GenICam description files and persistence files with the current configuration of the device into the same directory.
The string parameter must be the filename (including full path) of the target ini file. The path must exist prior to writing. The written ini file contains a list of paths to the written description and persistence files.
GenICam description files are written for the remote device and each GigE Vision Producer module associated with currently opened device. Persistence files are written for the remote device and each GigE Vision Producer module as well as for the internal parameters of the GigEVision2 image acquisition interface.
The complete configuration can be loaded using the 'CameraType' parameter of open_framegrabber operator, see detailed description in the section about device opening. The persisted values of the internal parameters override the corresponding parameters passed to 'open_framegrabber' (in particular 'BitsPerChannel' and 'ColorSpace').
Instead of specifying the full name of the output ini file, 'default' or an empty string can be used. In this case the files will be written to a temporary directory (subject to availability of %TEMP%, %TMP%, $TMPDIR, /tmp or %HALCONROOT%) and the filename of the configuration file will be halcon_gentl_config.ini. This default option will also apply when using the Image Acquisition Assistant.
See also related sections Selection of GenICam Feature Description File(s) and Parameters – Persisting Device Status.
'do_write_settings' <output_file> string Writes the current settings of the opened device to be able to restore the settings later. The parameter 'settings_selector' specifies if the settings of the actual (remote) device, one of the GigE Vision Producer modules or the Consumer parameters (internal parameters of GigEVision2 image acquisition interface) are to be written. See detailed description in section Parameters - Persisting Device Status.
'event_data' '<list of genicam_feature/internal_parameter>' string Configures GenICam features and/or internal parameters (free mix) to be added to the message queue specified by 'event_message_queue' for feature change notifications for feature selected in 'event_selector'.
Features can be added individually or as a tuple - each 'set' operation for this parameter appends to the current list of event_data. To remove individual features, prepend them with a '~'. To clear all currently added features, call set_framegrabber_param(..., 'event_data', []).
Read more about the usage of this mechanism at Event Message Queues.
'event_message_queue' 0, '<queue_handle>' handle Selects a message queue to which the acquisition interface should send feature change notifications (see further details in Event Message Queues).
The corresponding feature/parameter needs to be previously selected by 'event_selector'.
Setting 0 (NULL) unregisters the previously selected message queue from notifications about given feature/parameter.
'event_notification_helper' 'disable', 'enable' 'disable' string Controls if the acquisition interface should attempt to automatically (un)set 'EventNotification' during set_framegrabber_callback if the callback is being (un)registered on an SFNC-compliant event. Note that this will only work if the callback is being registered on the actual event feature (e.g. 'EventExposureEnd'), not on one of the event data features (e.g. 'EventExposureEndTimestamp'). For further information on events, see Event Data.
'event_selector' '<genicam_feature/internal_parameter>' 'grab_timeout' string Selects a GenICam feature or internal parameter for which feature change notifications through message queues should be configured.
They are sent to the message queue specified by 'event_message_queue', together with additional data configured in 'event_data'.
Read more about the usage of this mechanism at Event Message Queues (which is another alternative to notifications through callbacks, Feature Change Notifications).
'fileaccess_file_path' '<file_path>' string Specifies full path to a local file (in host filesystem) that should be used for file exchange operations between host and the device, 'do_fileaccess_download', or 'do_fileaccess_upload'.
The current user/process must have sufficient rights to access the file. Note that all file access related parameters are available only if given device supports the GenICam file access functionality.
'fileaccess_remote_name' '<file_name>' string Selects a file on the device that should be subject to one of the file access handling operations, 'do_fileaccess_download', 'do_fileaccess_upload', or 'do_fileaccess_delete'.
The name must be one of the files implemented by the device - the set of valid names can be queried using 'fileaccess_remote_name_values'. Note that all file access related parameters are available only if given device supports the GenICam file access functionality.
'fwupdate_file_path' '<file_name>' string Path to the file carrying GenICam compatible firmware update (guf-file). When set, the file will be validated and included firmware updates enumerated. When invalid or when no updates matching the current device will be found, error will be raised. If successful, the set of matching updates can be queried using 'fwupdate_update_selector_values' and the actual update to apply selected using 'fwupdate_update_selector'. Finally, the selected update can be applied using 'do_fwupdate_apply'.
Note that all firmware update related parameters are available only in the dedicated "safe mode", see Firmware Update.
'fwupdate_update_selector' '<firmware_update_label>' string Selects firmware update that can be applied through 'do_fwupdate_apply'. The selector will become available after selecting a valid firmware update file in 'fwupdate_file_path'. The options (labels describing the matching firmware updates found in that file) can be queried using 'fwupdate_update_selector_values'.
Note that all firmware update related parameters are available only in the dedicated "safe mode", see Firmware Update.
'fwupdate_wait_after_reset' '<timeout>' integer Additional timeout (in milliseconds) applied before device re-discovery if a device reset is required during the firmware update procedure. The timeout is added to corresponding timeout specified in the firmware update file itself. Intended to resolve system-specific problems when the device cannot be safely re-discovered using the original timeout.
Note that all firmware update related parameters are available only in the dedicated "safe mode", see Firmware Update.
'grab_timeout' <milliseconds> 5000 integer Desired timeout (milliseconds) for aborting a pending grab. If -1 is specified, the timeout is set to INFINITE.
'image_height' --- 0 Unsupported (read-only parameter).
'image_width' --- 0 Unsupported (read-only parameter).
'register_<addr>_<len>' integer Direct register access for reading and writing integers. The value has to be hexadecimal, e.g. 0x0938. Note that only 4 or 8 Byte length values are accepted. There is no conversion of the device byte order. Caution: This is a dangerous function intended for debugging and special cases. Usually only features in the XML should be used.
'settings_selector' 'RemoteDevice', 'Stream', 'Device', 'System', 'Interface', 'Consumer' 'RemoteDevice' string Selects for which component (set of parameters) the streamable parameters are persisted into a file or restored from a file when using set_framegrabber_param(..., 'do_write_settings', []) and set_framegrabber_param(..., 'do_load_settings', []). Selects among the actual (remote) device, one of the GigE Vision Producer modules or the Consumer parameters (internal parameters of GigEVision2 image acquisition interface). Read more about the usage of this mechanism at Parameters – Persisting Device Status.
'split_param_values_into_dwords' 'disable', 'enable' 'disable' string Enables a special mode allowing the treatment of integer parameters as tuple of two 32-bit integers. For compatibility with the single-parameter mode, the first tuple element carries always the low 32-bit part of the value, second element carries the high 32-bit part. It is user's responsibility to combine the two parts correctly. This mode is intended especially to help to overcome the problem of 32-bit HALCON featuring only 32-bit integer parameters but having to face up to 64-bit wide GenICam features. In this mode, the get_framegrabber_param returns always a tuple of two integers, set_framegrabber_param accepts both a single parameter or a tuple. Note that this mode affects only integer parameters and only the GenICam based ones, not the internal parameters of HALCON GigEVision2 image acquisition interface - with few exceptions, the 'buffer_timestamp', 'buffer_timestamp_ns', 'device_timestamp_frequency' and 'buffer_frameid' internal parameters.
'start_async_after_grab_async' 'disable', 'enable' 'enable' string By default a new asynchronous grab command is automatically given to the acquisition device at the end of grab_image_async. If the parameter 'start_async_after_grab_async' is set to 'disable', this new grab command is omitted.
'start_column' --- 0 Unsupported (read-only parameter). Configure the image size through device parameters.
'start_row' --- 0 Unsupported (read-only parameter). Configure the image size through device parameters.
'volatile' 'disable', 'enable' 'disable' string When enabled, switches on the volatile mode in which the image buffers are used directly to create HALCON images. This is the fastest mode avoiding the copy of raw images in memory. However, be aware that older images might be overwritten by the acquisition engine with new data at any time. When changing the device configuration in a way that acquisition buffers must be reallocated, the older HALCON images would even become invalid (pointing to no more existing memory). See also details about acquisition buffer handling.
Please note that the volatile mode can be switched on at any time, regardless of the current configuration. However, at runtime only the acquired images compatible with the volatile mode will be delivered to the application (the others will be discarded). Compatible means in particular that the PixelFormat of the acquired image matches the color_space and bits_per_channel settings configured for HALCON image output format.

Parameters for get_framegrabber_param

There may exist additional read-only parameters with the following postfixes:

All these postfixed parameter names are not returned when calling info_framegrabber(.., 'parameters', ..) and are used to enable the easy parameterization via a generic graphical user interface, particularly the HDevelop Image Acquisition Assistant.

Parameter Values Default Type Kind Description
'[Consumer]exposure' real pre-defined Specifies the exposure time. Usually the exposure time is specified in microseconds. However, cameras might deviate from this standard. Consult the documentation of your camera for more detailed information. If [Consumer]exposure_auto is not set to 'Off', [Consumer]exposure access is either read-only or not available. Besides, this EasyParam depends on the camera parameter ExposureMode. If [Consumer]exposure is not available, you might need to change ExposureMode manually to 'Timed'.
'[Consumer]exposure_auto' 'Off', 'Continuous', 'Once' string pre-defined Specifies if the exposure time is set manually by the user or automatically by the camera.
  • Off: the exposure time is set manually by the user.
  • Once: the exposure time is automatically estimated by the camera device once, based on the next successfully captured image. This value might not be implemented on your device.
  • Continuous: the exposure time is automatically and continuously updated by the camera with every acquired image. This value might not be implemented on your device.
This EasyParam depends on the camera parameter ExposureMode. If [Consumer]exposure_auto is not available, you might need to change ExposureMode manually to 'Timed'
'[Consumer]gain' real pre-defined Allows to increase the image brightness by applying an amplification factor. Consult the documentation of your camera for more detailed information. If [Consumer]gain_auto is not set to 'Off', [Consumer]gain access is either read-only or not available.
'[Consumer]gain_auto' 'Off', 'Continuous', 'Once' string pre-defined Specifies if the gain is set manually by the user or automatically by the camera.
  • Off: the gain is set manually by the user.
  • Once: the gain is automatically estimated by the camera once, based on the next successfully captured image. This value might not be implemented on your device.
  • Continuous: the gain is automatically and continuously updated by the camera with every acquired image. This value might not be implemented on your device.
'[Consumer]info_general' handle pre-defined Returns a dictionary handle containing general information about the device. Each key in the dictionary maps a GenICam device information feature. If one key is not implemented on your device, its value will be set to 'ni' (i.e. not implemented). Contained keys:
  • DeviceVendorName (string)
  • DeviceModelName (string)
  • DeviceVersion (string)
  • DeviceFirmwareVersion (string)
  • DeviceSerialNumber (string)
  • DeviceFamilyName (string)
  • SensorWidth (integer)
  • SensorHeight (integer)
The HDevelop Image Acquisition Assistant does not support this MVTec EasyParam.
'[Consumer]trigger' 'Off', 'Software', 'Line<x>' string pre-defined Specifies the mode in which the image acquisition is being triggered.
  • Off: the trigger mode is deactivated and the device operates in free run mode, acquiring images continuously.
  • Software: the trigger mode is activated and [Consumer]trigger_software can be used to generate an internal trigger.
  • Line<x>: the trigger mode is activated and the specified physical line is configured as external source for the trigger signal. Other hardware trigger signals are not supported via this EasyParam.
'[Consumer]trigger_activation' 'RisingEdge', 'FallingEdge', 'AnyEdge', 'LevelHigh', 'LevelLow' string pre-defined Specifies the activation mode of the trigger. This EasyParam is available when using hardware trigger (i.e. [Consumer]trigger is 'Line<x>'), and if supported by your device.
  • RisingEdge: the trigger is considered valid on the rising edge of the source signal.
  • FallingEdge: the trigger is considered valid on the falling edge of the source signal.
  • AnyEdge: the trigger is considered valid on the falling or rising edge of the source signal.
  • LevelHigh: the trigger is considered valid as long as the level of the source signal is high.
  • LevelLow: the trigger is considered valid as long as the level of the source signal is low.
'[Consumer]trigger_delay' real pre-defined Specifies the delay that should apply after the trigger has been received before activating the image acquisition. Usually the delay is specified in microseconds. However, cameras might deviate from this standard. Consult the documentation of your camera detailed information.
'[Device]DeviceEventsThreadPriority' <thread_priority> integer pre-defined OS-specific thread priority value to be used for the internal event processing thread. The actual values are directly the priority identifiers of the operating system, e.g. THREAD_PRIORITY_HIGHEST under Windows or a real-time priority value under Linux.
The actual priority is applied only after executing the '[Device]DeviceEventsThreadApplyPriority' command parameter, possibly together with the '[Device]DeviceEventsThreadSchedulingPolicy' value if applicable on given system.
It is the responsibility of the application to ensure that the calling process has sufficient privileges to apply the priority change and that the value written to the parameter is a valid priority identifier. After applying '[Device]DeviceEventsThreadApplyPriority', the application can read back the priority value to verify if it was properly applied.
Note that when opening the device, the GigE Vision Producer attempts itself to elevate the thread priority to a suitable value.
The feature is not available for devices not supporting device events or if the event handling was disabled using the 'device_event_handling=0' generic parameter.
BEWARE: Setting this parameter can lead to an unusable or poorly performing system, use with care.
'[Device]DeviceEventsThreadSchedulingPolicy' <scheduling_policy> integer pre-defined OS-specific scheduling policy value to be used for the internal event processing thread. The actual values are directly the priority identifiers of the operating system, e.g. SCHED_FIFO under Linux. Note that this feature is not available under Windows.
The actual scheduling policy is applied only after executing the '[Device]DeviceEventsThreadApplyPriority' command parameter, together with the '[Device]DeviceEventsThreadPriority' value.
It is the responsibility of the application to ensure that the calling process has sufficient privileges to apply the scheduling policy and that the value written to the parameter is a valid scheduling policy identifier. After applying '[Device]DeviceEventsThreadApplyPriority', the application can read back the scheduling policy value to verify if it was properly applied.
The feature is not available for devices not supporting device events or if the event handling was disabled using the 'device_event_handling=0' generic parameter.
BEWARE: Setting this parameter can lead to an unusable or poorly performing system, use with care.
'[Device]DeviceLinkHeartbeatMode' 'Off', 'On' 'Off' string pre-defined Allows to disable the heartbeat control on the device. The parameter will be only present if supported by given device. It is usually only good idea to disable the heartbeat if debugging the application (to prevent losing the device connection when hitting a breakpoint). When disabling and not re-enabling the device and if the application fails to properly close the connection (such as during crash or hard debugger stop), the device will never assume the connection has expired and will have to be rebooted. In most cases leaving the default value intact is the best solution. A possible exception can be to significantly prolong the timeout while debugging, if given device does not support heartbeat disabling.
'[Device]DeviceLinkHeartbeatTimeout' <timeout> integer pre-defined Heartbeat timeout (in usec) after which the device disconnects if the application fails to maintain the heartbeat protocol. In most cases leaving the default value intact is the best solution. A possible exception can be to significantly prolong the timeout while debugging, if given device does not support heartbeat disabling.
'[Device]DeviceMessageChannelKeepAliveTimeout' 30000 float pre-defined Interval (in milliseconds) between keep-alive packets sent while listening for device events to the device's message channel port to simulate the events traffic is outbound rather than inbound, thus helping to receive the events reliably in presence of a firewall. The actual required interval might be specific to the actual firewall in use. Zero means no keep-alive packets are sent at all.
'[Device]EventDeviceLost' integer pre-defined Delivers notification about "device lost" event (losing connection with the device). To receive such notification, it is necessary to register 'DeviceLost' event delivery using '[Device]EventSelector' and '[Device]EventNotification' and register notification callback for this feature ('[Device]EventDeviceLost') as described in Feature Change Notifications. When receiving the notification, it is recommended to try to read the value of [Device]EventDeviceLost. If readable, the connection to the device was actually lost (note that the actually read value of this parameter is insignificant). After losing connection to the device, the device handle is no more usable and should be closed.
'[Device]EventNotification' 'Off', 'On' 'Off' string pre-defined Enables/disables delivery of GigE Vision Producer device module event selected in '[Device]EventSelector'.
'[Device]EventSelector' 'DeviceLost' string pre-defined Selects a GigE Vision Producer device module event to be enabled/disabled using '[Device]EventNotification'.
'[Device]GevDeviceGateway' <gateway> integer pre-defined Default gateway address of the device, in integer format.
'[Device]GevDeviceIPAddress' <ip_address> integer pre-defined IP address of the device, in integer format.
'[Device]GevDeviceMACAddress' <mac_address> integer pre-defined MAC address of the device, in integer format.
'[Device]GevDeviceSubnetMask' <subnet_mask> integer pre-defined Subnet mask of the device, in integer format.
'[Device]LinkCommandRetryCount' 3 integer pre-defined Specifies number of times the HALCON GigEVision2 should attempt to retry sending a given control command to the device when not receiving corresponding command acknowledge from the device (assuming the command got lost). Works together with '[Device]LinkCommandTimeout' and usually should stay intact.
'[Device]LinkCommandTimeout' 200000 integer pre-defined Specifies the timeout (in usec) the HALCON GigEVision2 should wait for device acknowledge for individual control commands before assuming the command got lost and trying to send it again. Works together with '[Device]LinkCommandRetryCount' and usually should stay intact.
'[Interface]GevDeviceForceGateway' <gateway> integer pre-defined Default gateway to be forced (together with IP address) into the device selected in '[Interface]DeviceSelector'. This parameter is only used to prepare the desired IP configuration values for the device (together with '[Interface]GevDeviceForceIPAddress' and '[Interface]GevDeviceForceSubnetMask', the settings are actually applied together using '[Interface]GevDeviceForceIP'.
Use with care, using configuration not matching the interface the device is connected to may render the device unreachable. Intended to fix exactly these kinds of situations. Applicable only on devices that are not currently open.
Note that the 'force_ip' generic parameter in open_framegrabber can serve similar purpose.
'[Interface]GevDeviceForceIP' 0, 1 integer pre-defined Sends request to change current IP settings (IP address, subnet mask and default gateway) to the device selected in '[Interface]DeviceSelector'. The requested new settings are those previously stored into parameters '[Interface]GevDeviceForceIPAddress', '[Interface]GevDeviceForceSubnetMask' and '[Interface]GevDeviceForceGateway'. Use with care, using configuration not matching the interface the device is connected to may render the device unreachable. Intended to fix exactly these kinds of situations. Applicable only on devices that are not currently open, opened devices will ignore the request. The settings will not persist the device's power cycle.
The operation will take potentially significant amount of time (seconds), the timeout used to wait for operation completion can be controlled by '[Interface]GevDeviceForceIPTimeout', see its documentation for further details. To query status of the operation, read back value of the '[Interface]GevDeviceForceIP' parameter after starting it: 0 means 'not yet done', 1 means 'operation finished'. Once 'finished' the actual success of the operation can be read using '[Interface]GevDeviceLastForceIPSuccess'.
Note that the 'force_ip' generic parameter in open_framegrabber can serve similar purpose.
'[Interface]GevDeviceForceIPAddress' <ip_address> integer pre-defined IP address to be forced (together with subnet mask and gateway) into the device selected in '[Interface]DeviceSelector'. This parameter is only used to prepare the desired IP configuration values for the device (together with '[Interface]GevDeviceForceSubnetMask' and '[Interface]GevDeviceForceGateway', the settings are actually applied together using '[Interface]GevDeviceForceIP'.
Use with care, using configuration not matching the interface the device is connected to may render the device unreachable. Intended to fix exactly these kinds of situations. Applicable only on devices that are not currently open.
Use '[Interface]GevDeviceProposeIP' to fill this parameter automatically with suitable value.
Note that the 'force_ip' generic parameter in open_framegrabber can serve similar purpose.
'[Interface]GevDeviceForceIPTimeout' [10000, 10000000] 7000000 integer pre-defined Timeout (in microseconds) to wait for result of the '[Interface]GevDeviceForceIP' operation. Note that devices respecting recommendation of the GigE Vision specification will verify usability (conflicts) of the required IP address through ARP mechanisms, which implies it might need to wait up to 7 seconds for the ARP response. Therefore 7 seconds is the default value of the timeout.
'[Interface]GevDeviceForceSubnetMask' <subnet_mask> integer pre-defined Subnet mask to be forced (together with IP address) into the device selected in '[Interface]DeviceSelector'. This parameter is only used to prepare the desired IP configuration values for the device (together with '[Interface]GevDeviceForceIPAddress' and '[Interface]GevDeviceForceGateway', the settings are actually applied together using '[Interface]GevDeviceForceIP'.
Use with care, using configuration not matching the interface the device is connected to may render the device unreachable. Intended to fix exactly these kinds of situations. Applicable only on devices that are not currently open.
Note that the 'force_ip' generic parameter in open_framegrabber can serve similar purpose.
'[Interface]GevDeviceLastForceIPSuccess' 0, 1 1 integer pre-defined Reports whether the last '[Interface]GevDeviceForceIP' operation was successful. This parameter only gives meaningful output after the operation was actually finished: its completion should be queried first by reading back the '[Interface]GevDeviceForceIP' parameter (see its documentation for further details).
'[Interface]GevInterfaceMACAddress' <mac_address> integer pre-defined MAC address of the host's network interface the device is connected to, in integer format.
'[Interface]GevInterfaceMTU' <timeout> integer pre-defined Maximum tramsmission unit (MTU) currently accepted by the host's network interface the device is connected to.
'[Interface]GevInterfaceSubnetIPAddress' <ip_address> integer pre-defined IP address of the host's network interface the device is connected to, in integer format.
'[Interface]GevInterfaceSubnetMask' <subnet_mask> integer pre-defined Subnet mask of the host's network interface the device is connected to, in integer format.
'[Stream]DeviceStreamChannelKeepAliveTimeout' 30000 float pre-defined Interval (in milliseconds) between keep-alive packets sent during active streaming to the device's stream channel port to simulate the stream traffic is outbound rather than inbound, thus helping to stream reliably in presence of a firewall. The actual required interval might be specific to the actual firewall in use. Zero means no keep-alive packets are sent at all.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]DeviceStreamChannelPacketSize' <packet_size> integer pre-defined Packet size configured for the device stream channel (similar feature might appear also in feature set of the remote device itself). Configures both the remote device and GigE Vision Producer.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]DeviceStreamChannelPacketSizeInc' --- integer pre-defined Controls desired increment of the packet size feature to be used for the stream channel. Affects both the direct control of the packet size ('[Stream]DeviceStreamChannelPacketSize') as well as the negotiation algorithm ('[Stream]DeviceStreamChannelNegotiatePacketSize').
The limit should be usually set in sync with actual limits imposed by the device itself, unless there are reasons to apply stricter limits. When the device limits are unknown, the initial value is set to 4.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]DeviceStreamChannelPacketSizeMax' --- integer pre-defined Controls desired maximum of the packet size feature to be used for the stream channel. Affects both the direct control of the packet size ('[Stream]DeviceStreamChannelPacketSize') as well as the negotiation algorithm ('[Stream]DeviceStreamChannelNegotiatePacketSize').
The limit should be usually set in sync with actual limits imposed by the device itself, unless there are reasons to apply stricter limits. When the device limits are unknown, the initial value is set to the MTU size accepted by the network interface the device is connected to.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]DeviceStreamChannelPacketSizeMin' --- integer pre-defined Controls desired minimum of the packet size feature to be used for the stream channel. Affects both the direct control of the packet size ('[Stream]DeviceStreamChannelPacketSize') as well as the negotiation algorithm ('[Stream]DeviceStreamChannelNegotiatePacketSize').
The limit should be usually set in sync with actual limits imposed by the device itself, unless there are reasons to apply stricter limits. When the device limits are unknown, the initial value is set to 46.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]EventNotification' 'Off', 'On' 'Off' string pre-defined Enables/disables delivery of GigE Vision Producer data stream module event selected in '[Stream]EventSelector'.
'[Stream]EventSelector' 'TransferEnd' string pre-defined Selects a GigE Vision Producer data stream module event to be enabled/disabled using '[Stream]EventNotification'.
'[Stream]EventTransferEnd' integer pre-defined Delivers notification about "transfer end" event (finishing transfer of a buffer within the streaming engine). To receive such notification, it is necessary to register 'TransferEnd' event delivery using '[Stream]EventSelector' and '[Stream]EventNotification' and register notification callback for this feature ('[Stream]EventTransferEnd') as described in Feature Change Notifications. The actual value read from this parameter is insignificant. Additional information about the event can be obtained using '[Stream]EventTransferEndFrameID' and '[Stream]EventTransferEndBufferUndeliverable'.
IMPORTANT: there is no 1:1 mapping between generated transfer end events and actually delivered buffers. Corrupted/undeliverable buffers will be discarded by the streaming engine. Even valid buffers can still be dropped within the output queue based on the queue state and '[Stream]StreamBufferHandlingMode' parameter.
'[Stream]EventTransferEndBufferUndeliverable' 0, 1 integer pre-defined Flag indicating whether the last buffer for which the transfer end event was signalled through '[Stream]EventTransferEnd' was deliverable (valid). Corrupted/undeliverable buffers will be discarded by the streaming engine. Even valid buffers can still be dropped within the output queue based on the queue state and '[Stream]StreamBufferHandlingMode' parameter.
'[Stream]EventTransferEndFrameID' integer pre-defined Frame ID of the last buffer for which the transfer end event was signalled through '[Stream]EventTransferEnd'.
'[Stream]EventTransferEndUndeliverabilityReason' 'Unspecified', 'InvalidPacket', 'IncompleteBuffer', 'ValidationFailedNoTrailer', 'ValidationFailed' string pre-defined String indicating why the last buffer was not deliverable. Usefull in cases when '[Stream]EventTransferEndBufferUndeliverable' == 1 to investigate the root cause.
'[Stream]GevStreamAbortCheckPeriod' 300000 float pre-defined Interval in microseconds defining how often the packet handling thread checks for stop requests. Shorter time assures faster acquisition stop, but implies higher thread activity at idle times.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamActiveEngine' 'SocketDriver', 'FilterDriver' string pre-defined Informs which stream engine (socket or filter driver is currently active). Available only on Windows systems (on other systems always socket driver is used).
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamAssumeImageInChunkPayload' 0, 1 1 integer pre-defined Controls how the GigeVision payload type chunk data is reported through GenTL. True (1): report as payload type image. False (0): report as payload type chunk only. If it is known that the device does indeed only transfer chunk data without any contained image, this parameter can be set to 0 before 'grab_image_start', in order to get access to the contained chunk data with 'grab_data_async'.
'[Stream]GevStreamDeliveredPacketCount' 0 integer pre-defined All packets successfully received in the delivered blocks. The packets from undelivered (skipped or discarded) blocks are not counted.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamDeliverIncompleteBlocks' 0, 1 1 integer pre-defined Flag indicating if incomplete buffers (with one or more missing packets) should be delivered or discarded. Note that if the leader or trailer of a block is missing it will be discarded anyway.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamDiscardedBlockCount' 0 integer pre-defined Number of blocks that were discarded for any reason including corruption, too many missing packets (according to the selected input parameters) or missing leader and/or trailer.
'[Stream]GevStreamDuplicatePacketCount' 0 integer pre-defined Packets that were received twice (typically because the resend request arrived too early).
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamEngineUnderrunCount' 0 integer pre-defined Number of blocks that were discarded because no buffers were scheduled into the acq engine when given block arrived.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamFullBlockTerminatesPrev' 0, 1 0 integer pre-defined Flag indicating whether receiving a complete buffer immediately terminates any previous ones in the acquisition queue, no matter if resend is still pending for them, thus avoiding blocking the full one.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamIncompleteBlockCount' 0 integer pre-defined Number of blocks that were delivered incomplete (with one or more missing packets in them).
'[Stream]GevStreamLostPacketCount' 0 integer pre-defined All packets missing (even after resends) in the delivered blocks. The packets from undelivered (skipped or discarded) blocks are not counted.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamMaxBlockDuration' 0 float pre-defined Maximal duration ('on the wire') of a block in microseconds. When it expires, the engine will assume the block trailer (block trailing control packet) should be already received - and if packet resend is supported, it will ask to resend it.
Zero means no limit, which is suitable for example for line scan devices with sparse line triggers.
Note: for filter driver this is rounded to milliseconds. If it expires the oldest block is checked if it can be delivered. If this is not the case resends for the oldest block are requested. This block is also marked for delivery if more packets than the trailing ones are missing. When the timer expires a second time marked blocks are either discarded or delivered.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamMaxPacketGaps' 30 integer pre-defined Socket driver: Maximal number of packet gaps in a block. Affects the amount of resources allocated for the resend mechanism.
Filter driver: Percentage of allowed missing packets for an incomplete block. Consequently this is also the maximum number of resend requests sent out per block.
When exceeded, the engine will give up trying to finish this block and will discard it.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamOversizedBlockCount' 0 integer pre-defined Number of blocks that were detected as oversized, i.e. one or more packets did not fit into the allocated buffer. Counted no matter if the buffer was actually delivered or not.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamPacketOrderDelay' 10 float pre-defined Control how long to wait for packets arriving out of order before requesting resends. For the socket driver this is a time period in microseconds, for the filter driver it is the number of packets to wait before checking for missing packets and eventually triggering a resend. The main purpose is to avoid resend request too early in situations when out of order packets are expectable (such as with link aggregation based connections or cameras which send packets out of order e.g. due to improper usage of multiple sensor tabs).
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamReceiveSocketSize' 128000 integer pre-defined Size (in bytes) of the socket receive buffer. Maps directly to the SO_RCVBUF socket option. Applicable for socket driver only, not used by the filter driver.
On Linux systems, increasing this value significantly, as far as allowed by limit imposed by the sysctl 'rmem_max' parameter usually brings significant improvement when experiencing performance issues (packet loss) with very high speed devices.
On Windows systems, increasing the value up to 512000 usually brings performance improvement, increasing any further might have no or even negative impact (subject to test on each system). Instead, '[Stream]GevStreamRingBufferSize' might have greater impact.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamResendCommandCount' 0 integer pre-defined Number of resend requests (no matter if single or multi-packet ones). Each resend is counted, even if sent multiple times for the same packet. Even those belonging to buffers which never get delivered are counted.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamResendPacketCount' 0 integer pre-defined Number of resend-requested packets. Each resend is counted, even if sent multiple times for the same packet. Even those belonging to buffers which never get delivered are counted. When asking for resend of buffer tail (with unknown number of packets in it) only a single packet is counted.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamRingBufferSize' 256000 integer pre-defined Size of the stream engine ring buffer to store packets (in bytes). The ring buffer separates the socket draining and packet handling threads. Applicable for socket driver only, not used by the filter driver.
The ring buffer can help to overcome performance peaks and prevent packet loss if the system load is very high.
The optimal value should be found by experiment when experiencing performance issues (packet loss) with a high speed device. Setting it as high as the size of few full buffers might give best results on Windows systems.
On Linux systems, '[Stream]GevStreamReceiveSocketSize' might have greater impact.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamSeenPacketCount' 0 integer pre-defined All packets (even invalid or duplicates) seen by the stream.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]GevStreamSkippedBlockCount' 0 integer pre-defined Number of blocks that were skipped somewhere (we have never seen any valid packet belonging to them).
'[Stream]GevStreamUnavailablePacketCount' 0 integer pre-defined All packets explicitly announced as unavailable (after resend) by the device (contrary to those that were simply silently not resent). This typically means the resend request came too late.
Available only for GVSP streams, not applicable for RDMA streams (see GVSP vs. RDMA stream types).
'[Stream]StreamBufferHandlingMode' 'OldestFirst', 'OldestFirstOverwrite', 'NewestOnly' 'OldestFirst' string pre-defined Selects the mode the streaming engine uses to handle newly acquired data, in particular when the camera runs faster than the application processing. The parameter is writeable only if no acquisition is active. Supported values are:
  • 'OldestFirst': The acquired buffers are always delivered in FIFO manner (oldest first). If the acquisition engine receives a new buffer from the camera but has no available free buffer to fill it in, the new data is discarded.
  • 'OldestFirstOverwrite': The acquired buffers are always delivered in FIFO manner (oldest first). If the acquisition engine receives a new buffer from the camera but has no available free buffer to fill it in, it checks, whether there are older buffers waiting for delivery, not yet picked up by the Consumer. If yes, it takes the oldest of them, overwrites it with the new data and appends it to the end of the output queue. If the output queue is empty (no buffer available for overwriting), the new data is discarded. Applicable for socket driver only, undefined behavior with filter driver.
  • 'NewestOnly': The output queue of buffers waiting for delivery never contains more than a single (newest) buffer. If the acquisition engine receives a new buffer and there is already an older buffer waiting for delivery in the output queue, the new buffer is put to the output queue instead and the old one is reused for next acquisition. If there are no available free buffers and the output queue is also empty, new data is discarded.
'[Stream]StreamThreadPriority' <thread_priority> integer pre-defined OS-specific thread priority value to be used for the internal stream processing thread. The actual values are directly the priority identifiers of the operating system, e.g. THREAD_PRIORITY_HIGHEST under Windows or a real-time priority value under Linux.
The actual priority is applied only after executing the '[Stream]StreamThreadApplyPriority' command parameter, possibly together with the '[Stream]StreamThreadSchedulingPolicy' value if applicable on given system.
It is the responsibility of the application to ensure that the calling process has sufficient privileges to apply the priority change and that the value written to the parameter is a valid priority identifier. After applying '[Stream]StreamThreadApplyPriority', the application can read back the priority value to verify if it was properly applied.
Note that when opening the device, the GigE Vision Producer attempts itself to elevate the thread priority to a suitable value.
BEWARE: Setting this parameter can lead to an unusable or poorly performing system, use with care.
'[Stream]StreamThreadSchedulingPolicy' <scheduling_policy> integer pre-defined OS-specific scheduling policy value to be used for the internal stream processing thread. The actual values are directly the priority identifiers of the operating system, e.g. SCHED_FIFO under Linux. Note that this feature is not available under Windows.
The actual scheduling policy is applied only after executing the '[Stream]StreamThreadApplyPriority' command parameter, together with the '[Stream]StreamThreadPriority' value.
It is the responsibility of the application to ensure that the calling process has sufficient privileges to apply the scheduling policy and that the value written to the parameter is a valid scheduling policy identifier. After applying '[Stream]StreamThreadApplyPriority', the application can read back the scheduling policy value to verify if it was properly applied.
BEWARE: Setting this parameter can lead to an unusable or poorly performing system, use with care.
'[System]GevTLSubsystemInfo' '<subsystem_info>' string pre-defined Information about the subsystems in GigE Vision Producer implementation. Intended primarily for troubleshooting and support.
'add_objectmodel3d_overlay_attrib' 'disable', 'enable' 'disable' string pre-defined Controls if the acquisition interface should attempt to append the intensity/color overlay to the generated 3D object models. Applicable only if a 3D object model is being output from given grab operator. When switched on, the acquisition interface will try to find suitable information within the acquired data (if it is provided by the device). If so, it appends the overlay information for each point in the output model in form of an extended attribute. Note that in some advanced use cases there might be multiple potential overlay images output by the device, the acquisition interface therefore attempts to find the most suitable one.
First, it tries to identify data marked as "intensity" image in the acquired data. If found and provided as monochrome 2D image, it is appended as '&intensity_gray' extended attribute. If found and provided as RGB image, it is appended as three extended attributes, '&intensity_red', '&intensity_green' and '&intensity_blue'.
If "intensity" data cannot be identified, it tries to find data marked as "reflectance". If found and provided as monochrome 2D image, it is appended as '&reflectance_gray' extended attribute. If found and provided as RGB image, it is appended as three extended attributes, '&reflectance_red', '&reflectance_green' and '&reflectance_blue'.
Finally, if neither "intensity" nor "reflectance" data can be identified (either not present or not correctly marked by the device, it picks the first 2D image within the acquired data than can be mapped to the 3D coordinates. If found and provided as monochrome 2D image, it is appended as '&overlay_gray' extended attribute. If found and provided as RGB image, it is appended as three extended attributes, '&overlay_red', '&overlay_green' and '&overlay_blue'.
If no suitable 2D image is found, no overlay is appended. The actually appended extended attributes can be queried for example using the get_object_model_3d_params operator with the 'extended_attribute_names' parameter. The overlay can be also used for visualization purposes.
'available_callback_types' ['<callback_types>'] string dynamic Returns a list containing all parameters, for which a callback can be registered. This includes all parameters published by the device and GigE Vision Producer via the GenICam interface, including those temporarily unavailable, because availability change might be coupled with the callback.
'available_easyparam_names' '[Consumer]exposure_auto', '[Consumer]exposure', '[Consumer]gain_auto', '[Consumer]gain', '[Consumer]info_general' , '[Consumer]trigger', '[Consumer]trigger_activation', '[Consumer]trigger_delay', '[Consumer]trigger_software' string pre-defined Returns a list containing all MVTec EasyParams (see MVTec EasyParams).
'available_param_names' ['<names>'] string dynamic Returns a list containing all available parameters, i.e. those used by the HALCON GigEVision2 image acquisition interface (excluding the MVTec EasyParams, which can be listed using 'available_easyparam_names') and those published by the device and GigE Vision Producer via the GenICam interface (see parameter naming conventions). The availability of some parameters might depend on acquisition status, values of other parameters or other conditions, so the list dynamically changes during runtime.
'bits_per_channel' -1, 8, 10, 12, 14, 16 -1 integer pre-defined Number of bits per channel of the resulting HALCON image. In case of -1 the bit depth of each respective acquired buffer is used. By specifying a value greater than 8 the grabbed images are delivered as uint2 images.
'buffer_frameid' <frame_id> integer dynamic Frame ID attached to the last grabbed (image) buffer by the device (or GigE Vision Producer). Typically sequentially incremented number of the frame. Skipped ID's in the sequence could indicate that one or more frames was dropped in the device or GigE Vision Producer, for example due to acquisition engine overflow reasons. Note that on 32-bit systems only the lower 32-bit part of up to 64-bit timestamp is delivered (unless 'split_param_values_into_dwords' parameter is enabled). See acquisition buffer handling.
'buffer_is_incomplete' 0, 1 integer dynamic Shows if the last grabbed image is incomplete (e.g. due to lost packets). See acquisition buffer handling.
'buffer_reallocation_mode' 'only_increase_size', 'follow_payloadsize' 'only_increase_size' string pre-defined Defines the strategy to follow when reallocating the buffers for a new acquisition. In case of 'only_increase_size', the buffers will be only reallocated when the payload size increases. In case of 'follow_payloadsize', the buffers will be reallocated every time the payload size changes.
'buffer_timestamp' <timestamp> integer dynamic Timestamp attached to the last grabbed (image) buffer by the device (or GigE Vision Producer). The unit and actual meaning of the timestamp (when it is generated) is device specific. If the frequency of the timestamp counter is known, the value in nanoseconds can be read from 'buffer_timestamp_ns'. Note that on 32-bit systems only the lower 32-bit part of up to 64-bit timestamp is delivered (unless 'split_param_values_into_dwords' parameter is enabled). See acquisition buffer handling.
'buffer_timestamp_ns' <timestamp> integer dynamic Timestamp attached to the last grabbed (image) buffer by the device (or GigE Vision Producer). The value is in nanoseconds, but might not be available if the timestamp frequency is unknown (refer also to 'buffer_timestamp' and 'device_timestamp_frequency'). Note that on 32-bit systems only the lower 32-bit part of up to 64-bit timestamp is delivered (unless 'split_param_values_into_dwords' parameter is enabled). See acquisition buffer handling.
'camera_type' 'default', <ini/xml filename> 'default' string pre-defined Returns the path to the configuration file used for the CameraType parameter in open_framegrabber.
'clear_buffer' 'disable', 'enable' 'disable' string pre-defined If enabled, each buffer content is cleared before re-queueing (all bytes set to 0xF0 regardless the expected pixel format), so you can see which parts of an image are missing, in case e.g. the transfer of some image packets failed. This parameter adds of course a runtime overhead to write the 0xF0 data every time a buffer is queued. It is mainly useful for debugging in combination with transport layers which do not guarantee the transfer of complete images. Please note, that this parameter does not modify the buffer queue, only the content of a buffer will be set to a defined state.
'color_space' 'default', 'gray', 'raw', 'rgb', 'rgbx', 'yuv' 'default' string pre-defined Returns the current color space.
'confidence_mode' 'off', 'object_model_3d' 'off' string pre-defined Controls if (and how) the information about pixel confidence level is used by the acquisition interface. Applicable only for devices and use cases where the confidence information is delivered (per-pixel) together with the actual pixel data.
The threshold to distinguish between valid and invalid pixels is controlled using the 'confidence_threshold' parameter.
Note that in some use cases there might be other criteria how to mark given pixel invalid, for example if the device uses "invalid pixel value" for a 3D coordinate. These cases are not covered by the 'confidence_mode' parameter and such invalid pixels are always rejected from the 3D object model. Possible values are:
  • off: Default value. The pixel confidence information is not applied to any of the grab operator outputs, even if supplied by the device.
  • object_model_3d: If the pixel confidence level information is available, it is applied to the eventually generated 3D object models (but not to any other outputs, in particular not to the image outputs). This means that pixels ("points") with confidence lower than the configured threshold are not included in the generated 3D object model.
'confidence_threshold' [0.0, 1.0] 0.5 float pre-defined Threshold separating between valid and invalid pixels. Applicable only for devices and use cases where the confidence information is delivered (per-pixel) together with the actual pixel data. The decision how (to which outputs) the confidence threshold is applied is controlled using the 'confidence_mode' parameter.
The threshold is interpreted as a (float) ratio between 0.0 and 1.0. The acquisition interface will remap this ratio to the actual confidence range provided by the device and use it to decide which pixels are valid and which not. Pixels with confidence lower than the specified threshold are considered invalid.
'coordinate_transform_mode' 'none', 'cartesian', 'reference' 'reference' string pre-defined Controls which coordinate transformation operations should the acquisition interface attempt to perform when building the 3D object model from acquired 3D coordinates. Note that the decision which transformation should be performed and which parameters should be used fully depends on the 3D configuration information provided by the device together with the acquired data. If this information is insufficient or coordinates are inaccurate, the result of the transformation(s) might be meaningless or unpredictable. Refer to Using 3D Devices for more details.
Possible values are:
  • none: The acquisition interface will not perform any coordinate transformation. The 3D object model will contain the "raw" coordinates, possibly only scaled depending on the hints from the device.
  • cartesian: If the coordinate system used by the device is other than Cartesian, the acquisition interface will convert the coordinates to Cartesian system (native for HALCON's 3D object model). It will not attempt to further transform the coordinates from the device's internal ("anchor") coordinate system to the reference system.
  • reference: Default mode. Will transform to Cartesian coordinates if needed and then attempt to transform to the "reference" coordinate system if the device supports it and provides corresponding instructions. The purpose of the reference system is to allow merging and aligning data from multiple devices. The reference system is in contrast with the native ("anchor") coordinate system which is device specific and corresponds to its actual measurement system and actual configuration.
    The position and orientation of the reference system should be indicated by a reference point marker on the device's housing.
    This always directly implies the transformation to Cartesian coordinates because the reference coordinate system is always Cartesian.
'create_objectmodel3d' 'disable', 'enable' 'disable' string pre-defined Controls whether the acquisition interface should attempt to generate HALCON 3D object model(s) when encountering 3D coordinates within the acquired data.
To obtain a 3D object model, the application has to use the grab_data/grab_data_async operators which can return the handles to the generated models through the control data outputs. The grab_image/grab_image_async operators cannot return the 3D object models.
IMPORTANT: the parameter is disabled by default. When enabling, the application is responsible for releasing the generated object models and associated resources using the clear_object_model_3d operator once it does not need given model(s) any more. It should do so by tracking which of the control data outputs of every single grab_data/grab_data_async calls carry 3D object model handle(s). This can be done using the 'data_contents' parameter.
When generating the 3D object model, the acquisition interface processes the 3D coordinates found in the acquired data and builds the point cloud with help of the information about the actual 3D configuration reported by the device. Refer to Using 3D Devices for more details.
'data_contents' 'unknown', 'object_model_3d', 'text_report' 0 string pre-defined Tuple describing logical type of the control data outputs returned by the last grab operator. Not applicable if last successful grab was performed through grab_image/grab_image_async. In case of grab_data/grab_data_async it returns a tuple of the size corresponding to the number of control data values returned through those operators. Possible values are:
  • unknown: The logical type of the data could not be identified.
  • object_model_3d: Integer representing a handle of the 3D object model generated from the acquired data. IMPORTANT: the model has to be released (clear_object_model_3d) when no more used, otherwise the associated resources will be leaking. The generation of the 3D object models is controlled using 'create_objectmodel3d' parameter (disabled by default). Beware that in special use cases more than one object models can be generated.
  • text_report: Might be used for internal purposes and during support cases. Should be ignored by all applications.
'data_purpose_id' --- 0xFFFFFFFFFFFFFFFF integer pre-defined Tuple of integer values allowing to track data purpose IDs associated to individual control data outputs returned by the last grab operator. Intended for advanced use cases when the data should be matched with the device configuration. The use of the parameter is application specific and requires knowledge of the GenICam SFNC data model and specific device. Not applicable if last successful grab was performed through grab_image/grab_image_async. In case of grab_data/grab_data_async it returns a tuple of the size corresponding to the number of control data values returned through those operators. If the ID could not be identified (e.g. because the underlying communication protocol does not provide such information), invalid value will be returned (max value of given integer range).
'data_region_id' --- 0xFFFFFFFFFFFFFFFF integer pre-defined Tuple of integer values allowing to track region IDs associated to individual control data outputs returned by the last grab operator. Intended for advanced use cases when the data should be matched with the device configuration. The use of the parameter is application specific and requires knowledge of the GenICam SFNC data model and specific device. Not applicable if last successful grab was performed through grab_image/grab_image_async. In case of grab_data/grab_data_async it returns a tuple of the size corresponding to the number of control data values returned through those operators. If the ID could not be identified (e.g. because the underlying communication protocol does not provide such information), invalid value will be returned (max value of given integer range).
'data_source_id' --- 0xFFFFFFFFFFFFFFFF integer pre-defined Tuple of integer values allowing to track source IDs associated to individual control data outputs returned by the last grab operator. Intended for advanced use cases when the data should be matched with the device configuration. The use of the parameter is application specific and requires knowledge of the GenICam SFNC data model and specific device. Not applicable if last successful grab was performed through grab_image/grab_image_async. In case of grab_data/grab_data_async it returns a tuple of the size corresponding to the number of control data values returned through those operators. If the ID could not be identified (e.g. because the underlying communication protocol does not provide such information), invalid value will be returned (max value of given integer range).
'delay_after_stop' <milliseconds> 0 integer pre-defined The time to wait (in milliseconds) between stopping the acquisition on the device (AcquisitionStop command) and GigE Vision Producer.
'device' ' | device:<device id> | unique_name:<unique name> | user_name:<user-defined name> | interface:<interface id> | producer:mvtec_gigevision | device_ip:<device ip> | device_sn:<serial number>', '<device id>' string dynamic Returns the Device parameter string used when opening the device (open_framegrabber).
'device_event_handling' 0, 1 1 integer pre-defined Value of the device_event_handling generic parameter specified in open_framegrabber. The device_event_handling is by default switched on for devices with event delivery (message channel) support and off for devices without the event capability. The generic parameter device_event_handling explicitly allows switching the event handling functionality off even for devices with event support.
'device_timestamp_frequency' <frequency_hz> integer dynamic Frequency of the timestamp counter of the device, in ticks per second (Hz). The frequency might not be known for all devices. The counter is used for example to attach timestamps to acquired buffers. Note that on 32-bit systems only the lower 32-bit part of up to 64-bit timestamp is delivered (unless 'split_param_values_into_dwords' parameter is enabled).
'direct_connection' 'disable', 'enable' 'disable' string pre-defined Value of the direct_connection generic parameter specified in open_framegrabber.
'event_data' '<list of genicam_feature/internal_parameter>' string pre-defined Configures GenICam features and/or internal parameters (free mix) to be added to the message queue specified by 'event_message_queue' for feature change notifications for feature selected in 'event_selector'.
Features can be added individually or as a tuple - each 'set' operation for this parameter appends to the current list of event_data. To remove individual features, prepend them with a '~'. To clear all currently added features, call set_framegrabber_param(..., 'event_data', []).
Read more about the usage of this mechanism at Event Message Queues.
'event_message_queue' 0, '<queue_handle>' handle pre-defined Selects a message queue to which the acquisition interface should send feature change notifications (see further details in Event Message Queues).
The corresponding feature/parameter needs to be previously selected by 'event_selector'.
Setting 0 (NULL) unregisters the previously selected message queue from notifications about given feature/parameter.
'event_notification_helper' 'disable', 'enable' 'disable' string pre-defined Controls if the acquisition interface should attempt to automatically (un)set 'EventNotification' during set_framegrabber_callback if the callback is being (un)registered on an SFNC-compliant event. Note that this will only work if the callback is being registered on the actual event feature (e.g. 'EventExposureEnd'), not on one of the event data features (e.g. 'EventExposureEndTimestamp'). For further information on events, see Event Data.
'event_selector' '<genicam_feature/internal_parameter>' 'grab_timeout' string pre-defined Selects a GenICam feature or internal parameter for which feature change notifications through message queues should be configured.
They are sent to the message queue specified by 'event_message_queue', together with additional data configured in 'event_data'.
Read more about the usage of this mechanism at Event Message Queues (which is another alternative to notifications through callbacks, Feature Change Notifications).
'external_trigger' <default> 'false' string pre-defined The value is not used, so a default value is returned.
'field' '<default>' 'progressive' string pre-defined The value is not used, so a default value is returned.
'fileaccess_file_path' '<file_path>' string pre-defined Specifies full path to a local file (in host filesystem) that should be used for file exchange operations between host and the device, 'do_fileaccess_download', or 'do_fileaccess_upload'.
The current user/process must have sufficient rights to access the file. Note that all file access related parameters are available only if given device supports the GenICam file access functionality.
'fileaccess_remote_name' '<file_name>' string pre-defined Selects a file on the device that should be subject to one of the file access handling operations, 'do_fileaccess_download', 'do_fileaccess_upload', or 'do_fileaccess_delete'.
The name must be one of the files implemented by the device - the set of valid names can be queried using 'fileaccess_remote_name_values'. Note that all file access related parameters are available only if given device supports the GenICam file access functionality.
'fwupdate_file_path' '<file_name>' string pre-defined Path to the file carrying GenICam compatible firmware update (guf-file). When set, the file will be validated and included firmware updates enumerated. When invalid or when no updates matching the current device will be found, error will be raised. If successful, the set of matching updates can be queried using 'fwupdate_update_selector_values' and the actual update to apply selected using 'fwupdate_update_selector'. Finally, the selected update can be applied using 'do_fwupdate_apply'.
Note that all firmware update related parameters are available only in the dedicated "safe mode", see Firmware Update.
'fwupdate_update_selector' '<firmware_update_label>' string pre-defined Selects firmware update that can be applied through 'do_fwupdate_apply'. The selector will become available after selecting a valid firmware update file in 'fwupdate_file_path'. The options (labels describing the matching firmware updates found in that file) can be queried using 'fwupdate_update_selector_values'.
Note that all firmware update related parameters are available only in the dedicated "safe mode", see Firmware Update.
'fwupdate_wait_after_reset' '<timeout>' integer pre-defined Additional timeout (in milliseconds) applied before device re-discovery if a device reset is required during the firmware update procedure. The timeout is added to corresponding timeout specified in the firmware update file itself. Intended to resolve system-specific problems when the device cannot be safely re-discovered using the original timeout.
Note that all firmware update related parameters are available only in the dedicated "safe mode", see Firmware Update.
'generic' '', ['num_buffers=<num>' , 'direct_connection=<mode>' , 'streaming_mode=0' , 'device_event_handling=0' ], -1 -1 mixed pre-defined Values of the Generic parameter.
'grab_timeout' <milliseconds> 5000 integer pre-defined Current grab timeout in milliseconds.
'horizontal_resolution' 0, 1, resolution 1 integer pre-defined Current value of horizontal resolution.
'image_available' 0, 1 integer dynamic Shows if there is currently an image waiting for delivery by the GigE Vision Producer.
'image_contents' 'unknown', 'image', 'coord_a', 'coord_b', 'coord_c', 'coord_mixed', 'confidence' 0 string pre-defined Tuple describing the logical type of the image data returned by the last grab operator. If the last successful grab was performed through grab_image/grab_image_async, the parameter returns always single value. In case of grab_data/grab_data_async it returns a tuple of the size corresponding to the number of images returned through those operators. Possible values are:
  • unknown: The logical type of the image could not be identified, typically this means some kind of custom, possibly raw data.
  • image: A regular 2D image. The format of the generated HALCON image is affected by the parameters 'bits_per_channel' and 'color_space' if used.
  • coord_a: The output HALCON image contains data corresponding to the 3D "coordinate A" according to the GenICam 3D model. The interpretation of the coordinate depends on the coordinate system used by the device: X for Cartesian, theta for spherical and theta for cylindrical coordinates (refer to GenICam SFNC standard for further details). The data are provided without any conversion, ignoring the 'bits_per_channel' and 'color_space' parameters.
  • coord_b: The output HALCON image contains data corresponding to the 3D "coordinate B" according to the GenICam 3D model. The interpretation of the coordinate depends on the coordinate system used by the device: Y for Cartesian, phi for spherical and Y for cylindrical coordinates (refer to GenICam SFNC standard for further details). The data are provided without any conversion, ignoring the 'bits_per_channel' and 'color_space' parameters.
  • coord_c: The output HALCON image contains data corresponding to the 3D "coordinate C" according to the GenICam 3D model. The interpretation of the coordinate depends on the coordinate system used by the device: Z for Cartesian, rho for spherical and rho for cylindrical coordinates (refer to GenICam SFNC standard for further details). The data are provided without any conversion, ignoring the 'bits_per_channel' and 'color_space' parameters.
  • coord_mixed: Used when the data is recognized as 3D coordinates but the format is unknown. In this case the data are output in the HALCON image "as is" without any transformations, i.e. the application has to know how to treat the custom data format. The data are provided without any conversion, ignoring the 'bits_per_channel' and 'color_space' parameters.
  • confidence: The output HALCON image contains data corresponding to the pixel confidence, which expresses the level of validity of corresponding pixel. The interpretation depends on the actual underlying pixel format used by the device to represent confidence (refer to GenICam SFNC standard for further details). The data are provided without any conversion, ignoring the 'bits_per_channel' and 'color_space' parameters.
'image_height' <height> 0 integer pre-defined Height of the last acquired image. See acquisition buffer handling. If there is no valid last buffer available, the last queried value of the 'Height' parameter of the remote device is returned.
'image_pixel_format' --- 0 integer pre-defined Tuple of integer values representing the ID of the original pixel formats of the source data used to generate individual image outputs. This is typically the PFNC 32-bit ID of given pixel format - if unknown or if the data used to generate given image output is not naturally an image, zero will be reported. If the source data is a multi-component image (such as RGB or multi-component 3D coordinate format), the original multi-component pixel format is reported, no matter if all of the components were used to generate given image output (such as an RGB image) or if the image output reflects only one of the components (such as individual 3D coordinate planes, output as separate HALCON images). The original multi-component pixel format might be planar format or not. Note that the color space and bit depth of the actual HALCON image might significantly differ from the source format if the user requests color space conversion through the 'bits_per_channel' and 'color_space' parameters.
'image_purpose_id' --- 0xFFFFFFFFFFFFFFFF integer pre-defined Tuple of integer values allowing to track data purpose IDs associated to individual image outputs returned by the last grab operator. Intended for advanced use cases when the data should be matched with the device configuration. The use of the parameter is application specific and requires knowledge of the GenICam SFNC data model and specific device. If the last successful grab was performed through grab_image/grab_image_async, the parameter returns always single value. In case of grab_data/grab_data_async it returns a tuple of the size corresponding to the number of images returned through those operators. If the ID could not be identified (e.g. because the underlying communication protocol does not provide such information), invalid value will be returned (max value of given integer range).
'image_raw_buffer_padding_bytes' --- 0 integer pre-defined Tuple of integers reporting for raw buffers of type 'blob' (see 'image_raw_buffer_type') the size of unused padding bytes at the end of such grabbed HALCON image. Because artificial dimensions need to be chosen for the resulting HALCON image in this case, the size of such image might not exactly equal the size of the buffer data and thus the padding might be needed. Zero is reported for buffers of type 'image'. Applies only in case of the 'raw' color format. See raw output format chapter. If the last successful grab was performed through grab_image/grab_image_async, the parameter returns always single value. In case of grab_data/grab_data_async it returns a tuple of the size corresponding to the number of images returned through those operators.
'image_raw_buffer_type' 'image', 'blob' 0 string pre-defined Tuple of strings showing whether the last grabbed HALCON image(s) is created from buffer containing real image data with known properties (in particular image size and pixel format) or if it is created from a blob of other data (non-image data or image data of unknown format). Note that in case of the blob data the dimensions of the HALCON image are meaningless. Applies mainly in case of the 'raw' color format. Possible values are 'image' and 'blob'. See raw output format chapter. If the last successful grab was performed through grab_image/grab_image_async, the parameter returns always single value. In case of grab_data/grab_data_async it returns a tuple of the size corresponding to the number of images returned through those operators.
'image_region_id' --- 0xFFFFFFFFFFFFFFFF integer pre-defined Tuple of integer values allowing to track region IDs associated to individual image outputs returned by the last grab operator. Intended for advanced use cases when the data should be matched with the device configuration. The use of the parameter is application specific and requires knowledge of the GenICam SFNC data model and specific device. If the last successful grab was performed through grab_image/grab_image_async, the parameter returns always single value. In case of grab_data/grab_data_async it returns a tuple of the size corresponding to the number of images returned through those operators. If the ID could not be identified (e.g. because the underlying communication protocol does not provide such information), invalid value will be returned (max value of given integer range).
'image_source_id' --- 0xFFFFFFFFFFFFFFFF integer pre-defined Tuple of integer values allowing to track source IDs associated to individual image outputs returned by the last grab operator. Intended for advanced use cases when the data should be matched with the device configuration. The use of the parameter is application specific and requires knowledge of the GenICam SFNC data model and specific device. If the last successful grab was performed through grab_image/grab_image_async, the parameter returns always single value. In case of grab_data/grab_data_async it returns a tuple of the size corresponding to the number of images returned through those operators. If the ID could not be identified (e.g. because the underlying communication protocol does not provide such information), invalid value will be returned (max value of given integer range).
'image_width' <width> 0 integer pre-defined Width of the last acquired image. See acquisition buffer handling. If there is no valid last buffer available, the last queried value of the 'Width' parameter of the remote device is returned.
'line_in' <default> 0 integer pre-defined The value is not used, so a default value is returned.
'name' 'GigEVision2' string pre-defined Name of the HALCON interface.
'num_buffers' <number> 4 integer pre-defined Number of buffers used for the image acquisition.
'num_buffers_await_delivery' <number> integer dynamic Number of (image) buffers waiting for delivery by the GigE Vision Producer.
'num_buffers_underrun' <number> integer dynamic Number of lost buffers due to buffer queue underrun since opening the device. Queue underrun occurs when the GigE Vision Producer has a new image data available, but it has no free buffer to store them.
'port' <port> -1 integer pre-defined The value is not used, so a default value is returned.
'register_<addr>_<len>' integer pre-defined Direct register access for reading and writing integers. The value has to be hexadecimal, e.g. 0x0938. Note that only 4 or 8 Byte length values are accepted. There is no conversion of the device byte order. Caution: This is a dangerous function intended for debugging and special cases. Usually only features in the XML should be used.
'revision' '<revision>' string pre-defined Revision number of the GigEVision2 interface.
'settings_selector' 'RemoteDevice', 'Stream', 'Device', 'System', 'Interface', 'Consumer' 'RemoteDevice' string pre-defined Selects for which component (set of parameters) the streamable parameters are persisted into a file or restored from a file when using set_framegrabber_param(..., 'do_write_settings', []) and set_framegrabber_param(..., 'do_load_settings', []). Selects among the actual (remote) device, one of the GigE Vision Producer modules or the Consumer parameters (internal parameters of GigEVision2 image acquisition interface). Read more about the usage of this mechanism at Parameters – Persisting Device Status.
'split_param_values_into_dwords' 'disable', 'enable' 'disable' string pre-defined Enables a special mode allowing the treatment of integer parameters as tuple of two 32-bit integers. For compatibility with the single-parameter mode, the first tuple element carries always the low 32-bit part of the value, second element carries the high 32-bit part. It is user's responsibility to combine the two parts correctly. This mode is intended especially to help to overcome the problem of 32-bit HALCON featuring only 32-bit integer parameters but having to face up to 64-bit wide GenICam features. In this mode, the get_framegrabber_param returns always a tuple of two integers, set_framegrabber_param accepts both a single parameter or a tuple. Note that this mode affects only integer parameters and only the GenICam based ones, not the internal parameters of HALCON GigEVision2 image acquisition interface - with few exceptions, the 'buffer_timestamp', 'buffer_timestamp_ns', 'device_timestamp_frequency' and 'buffer_frameid' internal parameters.
'start_async_after_grab_async' 'disable', 'enable' 'enable' string pre-defined Status of 'start_async_after_grab_async'.
'start_column' <column> 0 integer pre-defined Unsupported, returns always 0.
'start_row' <row> 0 integer pre-defined Unsupported, returns always 0.
'streaming_mode' 0, 1 1 integer pre-defined Value of the streaming_mode generic parameter specified in open_framegrabber. The streaming_mode is by default switched on for devices with streaming support and off for peripheral devices (devices without any data streams). The generic parameter streaming_mode explicitly allows switching the streaming functionality off, even for devices with streaming support.
'vertical_resolution' 0, 1, resolution 1 integer pre-defined Current value of vertical resolution.
'volatile' 'disable', 'enable' 'disable' string pre-defined Current value of the volatile mode.

Operator set_framegrabber_lut

Not supported by this interface.

Operator get_framegrabber_lut

Not supported by this interface.

Operator set_framegrabber_callback

This interface supports feature change callbacks via the operators set_framegrabber_callback and get_framegrabber_callback.
The callback can be registered for any GenICam based features, i.e., features published by the device and GigE Vision Producer through the GenICam description files as well as for internal parameters of the acquisition interface.
The list of supported callback targets can be queried by calling get_framegrabber_param(..., 'available_callback_types', ...).
One of the important use cases for feature change callbacks is the device event delivery mechanism, see details in event data and feature notifications sections. The 'CallbackType' parameter of set_framegrabber_callback defines the feature for which the callback is registered. It is the same plain feature name as used with set_framegrabber_param, including a possible prefix, such as '[Device]' (refer to the parameter naming convention).
The registered callback function would be called whenever a given feature is potentially changed (including its other properties such as range or access mode). Note that it does not necessarily always mean that the feature actually has a new value. If the callback function is set to NULL, the corresponding callback will be unregistered. Note that the interface keeps just a single registration for every feature, if you attempt to register a new callback for a feature that already had a callback registered, the previous registration will be replaced with the new one.

The signature of the callback function is Herror (__stdcall *HAcqCallback)(void *AcqHandle, void *Context, void *UserContext) and uses the following parameters:

Note that the execution time of a user-specific callback function must always be as short as possible since during the execution of a callback function the handling of further internal callbacks might be blocked. This can be achieved by removing the current processing from the user-specific callback function to a separate thread that is controlled via signals or events. The callback function is executed in the context of the underlying interface or driver.
It is also important to understand that the callbacks might be fired as a side-effect of parameter-setting or grab operations, ie. it might be called from within their respective locks. The user is responsible to take this into account in the callback handler to avoid risk of a deadlock.

Operator get_framegrabber_callback

This interface supports feature callbacks via the operators set_framegrabber_callback and get_framegrabber_callback. For more information see set_framegrabber_callback.

Operator grab_image_start

Starts a new asynchronous grab. See also grab_image_start and section about acquisition control. Note that this operator starts acquisition on the GigE Vision Producer and device and locks features protected during acquisition. If grab_image_start is called repeatedly, the acquisition is restarted on both GigE Vision Producer and device. That means, that the buffer queue and all stream related statistics parameters like 'buffer_frameid' are reset. The acquisition can be stopped (and the features unlocked) using set_framegrabber_param(..., 'do_abort_grab', ...).

Operator grab_image

grab_image starts a new synchronous grab of a single image. See also grab_image, section about acquisition control and about grab operators. Note that the interface converts the acquired image to the desired image format specified by the parameters 'bits_per_channel' and 'color_space'.

Operator grab_image_async

grab_image_async returns a single image and starts the next asynchronous grab. See also grab_image_async, section about acquisition control and about grab operators. Note that the interface converts the acquired image to the desired image format specified by the parameters 'bits_per_channel' and 'color_space'.
The 'MaxDelay' parameter of the grab_image_async operator is ignored by the HALCON GigEVision2 acquisition interface, because there is no way to support it reliably . If needed, the application needs to implement alternative functionality on its own.

Operator grab_data

grab_data starts a new synchronous grab, resulting possibly in tuple of output images and tuple of data outputs of various kind, depending on the input and configuration. See also grab_data, section about acquisition control and about grab operators. Note that the interface converts the acquired images to the desired image format specified by the parameters 'bits_per_channel' and 'color_space'. The output tuples are described using the 'data_contents', 'image_contents' and related parameters.

Operator grab_data_async

grab_data_async returns acquired images/data and starts the next asynchronous grab. See also grab_data_async, section about acquisition control and about grab operators. Note that the interface converts the acquired image to the desired image format specified by the parameters 'bits_per_channel' and 'color_space'. The output tuples are described using the 'data_contents', 'image_contents' and related parameters.
The 'MaxDelay' parameter of the grab_image_async operator is ignored by the HALCON GigEVision2 acquisition interface, because there is no way to support it reliably . If needed, the application needs to implement alternative functionality on its own.

Operator close_framegrabber

This operator closes the device. See also close_framegrabber.

HDevelop Examples

For this interface there are the following examples available:

Switching From Previous Implementation of the GigEVision Interface

This chapter is intended as a help for users switching to the new version of this acquisition interface (GigEVision2) from its previous implementation (GigEVision). Users starting new applications directly based on GigEVision2 interface can fully ignore contents of this chapter.

The GigEVision2 interface is a significant rewrite of the previous interface targetting support of the GigE Vision 2 specification, thorough compatibility with the modern versions of the GenICam standards family and similar user experience among all GenICam based HALCON acquisition interfaces (in particular GigEVision2, USB3Vision and GenICamTL). It was not therefore possible to keep full backward compatibility with the previous version of this interface.

The most important new features introduced in GigEVision2: Current limitations that will be addressed in future updates of the interface: Changes related to opening the device (open_framegrabber and info_framegrabber): Various parameters configuring the acquisition interface and the connected device has changed or were removed in the GigEVision2 interface version. This reflects the significantly changed internal architecture, now following the GenICam GenTL architecture model reused by all GenICam based HALCON acquisition interfaces. See details in getting framegrabber parameters and setting framegrabber parameters. The following callback (set_framegrabber_callback) is currently not supported:

Troubleshooting

In case of problems with the HALCON GigEVision2 Interface the following hints might help to solve them.

General: GigE Vision 3.0 RDMA stream based devices: Filter driver (MVTec GigE Vision Streaming Filter): GenICam: If there are still problems, please contact your local distributor.

The following information is needed for your support request to avoid unnecessary inquiries. Please run the HDevelop example gigevision2_information.hdev to gather information about the system and the camera configuration, and then attach the resulting files when requesting support.

Usage of third-party libraries

This interface depends on third-party libraries. See the file third_party_gigevision2.txt in the HALCON base directory for copyright and license information. Libraries are used without modifications unless explicitly stated in the file.

You can request the source for those third-party libraries licensed under GPL or LGPL via email to info@mvtec.com with the subject "Request source code of third-party libraries".

Release Notes


Legal disclaimer regarding hyperlinks: This page may provide users with access by hypertext links to external, non-MVTec websites. Any such access is provided with the understanding that the contents of non-MVTec sites are beyond the control of MVTec Software GmbH, that MVTec Software GmbH makes no representations whatsoever about such sites, and that users shall proceed at their own risk. MVTec Software GmbH is not responsible for the privacy practices or the content of external, non-MVTec websites.
Copyright notes: © Copyright MVTec Software GmbH. All rights reserved. Unless otherwise stated, the copyright and similar rights in the contents of this page, including but not limited to all text, designs and images appearing herein, are copyrighted works owned by MVTec Software GmbH. "MVTec Software GmbH" and "HALCON" are registered trademarks of MVTec Software GmbH. All other brand names, designs, service marks and trademarks (whether or not registered) referenced or used herein are the property of their respective owners.