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
- Intel compatible PC with Windows 7 (32-bit or 64-bit) or newer,
also WoW64 (using 32-bit HALCON on 64-bit Windows),
Linux with kernel 2.6 (or higher)
, or macOS.
- Gigabit Ethernet network adapter. It is recommended to use a PCIe network
adapter which supports Jumbo frames. Please configure the network
adapter accordingly, e.g., to a MTU value of 9000, to reduce the amount
of interrupts. Furthermore, the camera should be connected directly to
the network adapter to avoid interference with other network traffic.
Please be aware that networking equipment like switches not necessarily
supports Jumbo frames.
- If you are using a firewall please make sure that your firewall
configuration allows your application or HDevelop to connect to the camera
and to receive incoming images, otherwise the grabbing will fail.
Cameras that support firewall traversal might work anyway.
- For devices with GigE Vision 3.0 RDMA streaming support:
- Windows: network adapter with RDMA/RoCEv2 support under Windows.
Up-to-date drivers must be installed including the NDSPI
interface (Windows user mode RDMA/RoCEv2 support). Refer to the network adapter
manufacturer documentation for details.
- Linux: network adapter with RDMA/RoCEv2 support under Linux.
Up-to-date drivers/firmware must be installed. Up-to-date versions of the
ibverbs and rdmacm libraries must be installed including corresponding ibverbs
provider for given adapter. Refer to the network adapter manufacturer
documentation for details.
- macOS: RDMA/RoCEv2 is not supported by the macOS operating system.
- MVTec GigE Vision Streaming Filter under Windows x86,
WoW64 or Windows x64:
The HALCON GigEVision2 interface automatically
uses a filter driver to enhance the performance while streaming images.
When installing HALCON
the filter driver will be automatically installed, if you enable the
corresponding check box during installation.
Please make sure that at least the driver version v2.1.8.0
is actually installed (check your network properties). Older driver
versions will not work! For full functionality you need
driver version v2.2.8.4.
- GenICam GenApi. The corresponding files are part of the
HALCON GigEVision2 package and are located in the directory
genicam within the HALCON base directory %HALCONROOT%.
See section GenICam GenApi for more details.
- Windows:
HALCON image acquisition interface hAcqGigEVision2.dll or
hAcqGigEVision2xl.dll, respectively. If you
have properly installed the interface, all these DLLs should reside in
bin\%HALCONARCH% within the HALCON base directory
%HALCONROOT% you have chosen during the installation of HALCON.
Linux: HALCON image acquisition interface hAcqGigEVision2.so
or hAcqGigEVision2xl.so, respectively.
If you have properly installed the interface, the shared objects should
reside in lib\$HALCONARCH within the HALCON base directory
$HALCONROOT you have chosen during the installation of HALCON.
macOS: HALCON image acquisition interface
hAcqGigEVision2.dylib or hAcqGigEVision2xl.dylib,
respectively. If you have properly installed the interface, the shared
objects should reside in the HALCON framework
/Library/Frameworks/HALCON.framework or the HALCON XL framework
/Library/Frameworks/HALCONxl.framework in the Libraries
subdirectory.
- The default acquisition mode assumes the computer is fast enough to
process all buffers from the camera. If this is not the case, they are
silently discarded.
Environment Variables
The interface can be controlled through several environment variables:
- HALCON_ACQUIRED_FILE_PAYLOAD_DIR is used to specify the directory
where non-image payload types (usually files or 'raw' data) are stored
using the filename given by the
device.
- When specifying a directory with HALCON_GENICAM_WRITE_XMLFILE
and/or HALCON_GENICAM_WRITE_RAW_XMLFILE, the GenICam description
files (in XML and/or raw format) will be stored there while working with
HALCON. These files can also be stored by setting the interface parameter
'do_write_configuration'.
- If you want to use an already installed GenApi version instead of the
one supplied with HALCON, you must set the environment variable
HALCON_USE_EXTERNAL_GENAPI. Additionally, all environment variables
which are necessary for GenApi must also be set in this case. This is
only for experts, see also section
GenICam GenApi.
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:
- Windows: Extract the archive containing the interface files to the
HALCON base directory %HALCONROOT% (Note: Administrator privileges may be
required for this step). Additionally, you have to move the interface
examples to the directory %HALCONEXAMPLES% manually.
- Linux: Extract the archive containing the interface files to the
HALCON base directory $HALCONROOT.
- OS X: Extract the archive. Manually move the following files:
- The .dylib files located in lib/x64-macosx to
/Library/Frameworks/HALCON.framework/Libraries or
/Library/Frameworks/HALCONxl.framework/Libraries repectively.
- The genicam folder to /Library/Frameworks/HALCON.framework/Libraries
or /Library/Frameworks/HALCONxl.framework/Libraries respectively.
- The examples folder to the version subdirectory at
/Users/Shared/Library/Application Support
- The doc folder to the version subdirectory at
/Library/Application Support
Features
- User-space implementation of the GigE Vision protocol.
For Windows the MVTec GigE Vision Streaming Filter is
available and used if installed to improve performance.
- Support for GigE Vision 1.0 up to 3.0.
- Support of RDMA streaming over the RoCEv2 protocol.
- Support of GenDC streaming.
- Grabbing from multiple cameras.
- Synchronous and asynchronous grabbing.
- Grabbing of 3D data and creation of object model 3d.
- Support of Jumbo frames and automatic packet size optimization.
- Software control of all generic camera parameters using GenApi.
- Software control of transport layer-dependent parameters.
- Support of various pixel formats and flexible color transformation.
- No Administrator or root privileges required, except for the installation
of the filter driver (and internal thread priority control).
- Support of Forced IP.
- Support of 'Continuous', 'SingleFrame', and also 'MultiFrame' acquisition
modes.
- Support of GenICam action control.
- Support of GenICam chunk data.
- Support of GenICam event data.
- Support of GenICam feature persistence.
- Support of GenICam file access.
- Support of GenICam FWUpdate.
- Support of callbacks for feature change notifications.
- Support of non-streamable devices (devices that can be controlled by means
of GenICam, but do not stream any image (or other) data.
- Support of pending acknowledges which allow to wait for device response
to long taking commands without needing to manually adjust the timeout.
Limitations
- The MVTec GigE Vision Streaming Filter is available only under Windows. For more details see paragraph MVTec GigE Vision
Streaming Filter.
- Only stream channel 0 supported.
- No support of acquisition from devices with read-only access mode.
GigE Vision Compatibility
- This interface implements GigE Vision specification version 2.2 and the latest draft of version 3.0, covering all three basic protocols it defines:
control, image/data streaming and asynchronous device events.
- The interface supports GenDC streaming used e.g. by 3D devices.
- The interface is also fully compatible with older cameras implementing the
GigE Vision 1.0, 1.1 or 1.2 standard.
GenICam GenApi
- This interface uses GenApi version 3.5.0, for more details refer to the GenICam homepage. The
corresponding files are part of the HALCON runtime installation and are
located in the directory genicam within the HALCON base
directory %HALCONROOT% or $HALCONROOT, respectively.
This version is the same as the officially released version at the time
of writing.
- The HALCON GigEVision2 interface sets all necessary environment
variables on its own and ignores other installed GenICam
packages by default.
If you want to use another GenICam package, you need to set the
environment variable HALCON_USE_EXTERNAL_GENAPI. This skips
the step of setting all necessary variables and paths internally, so
you have to make sure they are set correctly. Please note that it might
not be possible to use different GenApi versions with different interfaces
at the same time and that you must use the required GenApi version for
this interface.
- The caching of device XML files is activated to speed up processing,
writing to a temporary directory subject to availability of %TEMP%,
%TMP%, $TMPDIR, /tmp or %HALCONROOT%.
- The remote device control features as well as the GigE Vision Producer
control features of this interface are controlled via GenApi.
GigE Vision Device Access
To ensure full access to the device, the following preconditions have to be fulfilled:
General:
- If a firewall is active in the system, it has to be configured in a way
so that all applications expected to be using the GigE Vision devices
(e.g. HDevelop, but also any user-developed applications) have full
access to the connected devices.
Cameras that support firewall traversal might work anyway.
- If possible, guarantee that the used devices are configured properly
to match IP configuration of the network interface they are connected to
(either by means of Persistent IP configuration of the device or by means
of DHCP).
- If the device's IP configuration does not match that of the network interface
the device is connected to, the HALCON GigEVision2 acquisition
interface will discover the device, but will mark it as inaccessible
and opening it will not be possible.
- If you are using the HDevelop Image Acquisition Assistant, it will
automatically prompt you to add the correct generic parameter to force
a suitable temporary IP address to the device.
Please keep in mind that this temporary IP address will not survive
the device's power cycle. It is still desirable to configure the device
properly (Persistent IP or DHCP) so that it starts with suitable
IP configuration upon next power up.
Linux:
- On Linux, the discovery of misconfigured (wrong subnet) devices might not
be possible if 'reverse path filtering' is switched on in the system.
Reverse path filtering is a security option dropping incoming packets on
the interface if the reverse path traffic (to the source of the incoming
packet) would not be routed on that interface. In practice this means that
the discovery packet where the device announces itself would be dropped.
To prevent this, we recommend to switch off reverse path filtering option
on any interfaces where GigE Vision devices are to be discovered (perhaps
unless you are sure that the devices will never be misconfigured).
To temporarily disable reverse path filtering on eth0, execute
sudo sysctl -w net.ipv4.conf.all.rp_filter=0
sudo sysctl -w net.ipv4.conf.eth0.rp_filter=0
To make the changes permanent, adjust these options in the sysctl configuration
file (such as /etc/sysctl.conf or /etc/sysctl.d tree):
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.eth0.rp_filter=0
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:
- If the device supports GigE Vision RDMA streaming and is connected to a network adapter
supporting RDMA/RoCEv2 on the given system, the RDMA stream type will be selected.
- Otherwise the GVSP stream type will be used if the device supports it.
- If the device supports only RDMA streaming, but is connected to a network adapter
without RDMA/RoCEv2 support on the given system, the GigEVision2 acquisition interface
cannot choose either of the stream types and the device will be treated
as non-streamable. It will be possible to control the device parameters,
but acquisition using the grab operators will not be possible.
MVTec GigE Vision Streaming Filter
- For Windows x86 and x64 a so-called 'filter driver' is available. It is used automatically, if it is installed and activated. This kernel
mode driver enhances the performance and should be used if possible.
Applicable for devices using the GVSP stream type (see
GVSP vs. RDMA stream types).
- Installation:
When installing HALCON the filter driver will be installed automatically,
if you enable the corresponding check box during installation.
The filter driver can also be installed separately.
The necessary installer can be found in %HALCONROOT%\misc.
If you downloaded the GigEVision2 package individually from the MVTec
website, the filter driver installer can be found in the subfolder
misc inside the package.
To install, close all your network connections and execute the installer
as administrator.
It will install and enable the filter on all your Ethernet interfaces.
The driver files will additionally be placed in
%HALCONROOT%\..\GevStreamingFilter.
To disable the filter for a specific interface, you can deselect the
'MVTec GigE Vision Streaming Filter' in the network interface
properties. The filter driver can be uninstalled completely
by the uninstaller in %HALCONROOT%\..\GevStreamingFilter.
To do this, close all your network connections and execute
the uninstaller as administrator.
Please reboot after the installation of the driver to make sure it
can be used.
- Update Installation:
When updating the GigEVision2 interface and a new version of the filter
driver is included, you should also update the driver. Check the version number
of the 'GevStreamingFilter' installer inside the misc subfolder of the
package and compare it with the version found in the network interface properties.
Then, if necessary, de-install the old version first before installing
the new version (see instructions above). Please reboot to make sure the
new version will be used.
- Versioning:
The filter driver version number has 4 digits. The first two digits
indicate the maximum GigE Vision standard that is supported.
The third digit indicates the major version, which is used by the
GigEVision2 interface to decide if binary compatibility is given
(i.e. if the filter driver can be actively used). The fourth digit is
the minor version, indicating that internal changes have been made to the
driver.
Example:
2.2.x.x = Cameras with features according to the GigE Vision Standard 2.2
are fully supported by the driver. Older versions of the standard are always
included.
x.x.8.1 = Major version 8, minor version 1. If the GigEVision2
interface expects a major version 8 the driver will be used. This is
reflected in the parameter [System]GevTLSubsystemInfo, which would
for example display filter driver: 2020803/2010802. This means
the native version for the GigEVision2 interface is 2.2.8.3,
installed on the system is the driver version 2.1.8.2, compatibility is
given because x.x.8.x == x.x.8.x.
If on this system a version x.x.7.x were installed, it would not be used.
We strongly recommend to always update the filter driver, such that also
the minor version matches.
- Note that the filter driver is officially signed with Microsoft
Authenticode, but not
WHQL-certified, i.e., the installation might warn that the
driver is not Windows logo certified. This warning can be safely ignored.
- The generic parameter 'force_sockdrv' is available,
when it is necessary to disable the use of the filter driver for a specific
device.
- The parameter '[Stream]GevStreamActiveEngine' can be queried
to check if a specific device uses the filter driver.
- The filter driver may run out of kernel memory, although there is
enough free user memory. Please decrease the generic parameter
'num_buffers' in this case.
- If the filter driver cannot be used, the underlying GVSP streaming is
performed in user-space by the socket driver which increases the CPU load.
- When using the MVTec GigE Vision Streaming Filter some parameters behave
different from socket driver as documented.
Using Multiple Cameras
- The recommended way of using multiple cameras is to attach each camera to its own interface.
- If cameras share a single interface, you need to calculate the resulting
load on the link. You can do this roughly, if you multiply the size of
one image with the frame rate. This means, e.g., for a VGA gray-scale
image with a depth of 8 bit per pixel and a frame rate of 100
frames/s:
640*480*1 Byte*100/s = 3072000 Byte/s or about 30 MByte/s
As a GigE link can transport about 120 MByte/s, theoretically
4 cameras can be attached to one link, in practice it might be limited
to 3 cameras. The reason for this smaller number is the overhead for the
GVSP protocol and maybe necessary resends, which the above calculation
does not take into account. Also depending on the behavior of the camera
and the network interface the single packets of the frames (also called
blocks) are sent as a burst or equally distributed over a frame time.
Additionally, the behavior of the necessary network equipment, like a
switch, needs to be taken into account and might result in using small
packets and even loss of packets.
In such case adjusting network relevant parameters like
device's inter-packet delay might be necessary to improve the performance.
When in doubts, follow also performance related recommendations
of the corresponding device manufacturer.
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:
- Features of the connected device
("remote device"),
typically a camera, are usually loaded directly from the connected device.
- Features of the GigE Vision Producer are exposed through
a set of GenICam description files, one for each internal entity to control
the device tree:
- The "system" – representing the overall behavior of the acquisition
interface
- The interface used to connect the device to the system.
- A proxy (called "local device") to the device, controlling the
GigE Vision Producer view of the device.
- The data stream used for the acquisition (if the device provides any
data streams).
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:
- Internal parameters of the MVTec GenTL Consumer itself (GenICamTL acquisition interface).
These are named following the "underscore" naming style, e.g., color_space, and are all lowercase.
However, MVTec EasyParams are prefixed with "[Consumer]", e.g., [Consumer]gain.
- GenICam-based parameters of the
device, usually a camera, use by convention the "CamelCase" style, e.g., ExposureTime.
- GenICam-based parameters of the individual GigE Vision Producer
modules (system, interface, device and data stream) use by convention
the same style but are prefixed with the module name in square brackets.
Beware that the system and interface modules might potentially be shared by
multiple opened devices, so changing their configuration might have side
effects on other connections as well. The following prefixes are used:
- "[System]", e.g., [System]TLVendorName.
- "[Interface]", e.g., [Interface]InterfaceType.
- "[Device]", e.g., [Device]DeviceID.
- "[Stream]", e.g., [Stream]StreamBufferHandlingMode.
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
- integer – signed integer, 64-bit on 64-bit platforms, 32-bit on
32-bit ones
- real – floating point type
- string – classical string
When accessing GenICam-based features, the GenICam data types must be mapped
to the parameter types recognized by HALCON. GenICam offers the following
types:
- IInteger – integer value, mapped directly to HALCON's
integer parameter type. It will also accept real
parameters. When the GenICam feature in question has a representation
associated that identifies it as IPV4Address, MACAddress or HexNumber, the
corresponding string representation will also be accepted. It should
be highlighted that a problem can occur when running HALCON on a 32-bit
platform (where integer parameters are 32-bit wide)
and accessing a GenICam feature that is naturally 64-bit. In such
cases the full range of the feature will not be available to the
application and its value might be truncated. Also the sign of the
parameter might be misinterpreted. To solve this problem, the parameter
'split_param_values_into_dwords' can be used. This maps the 64-bit IInteger
value into two 32-bit integer values and vice versa.
- IFloat – floating point value, mapped directly to HALCON's
real parameter type. It will also accept integer
parameters.
- IString – string value, mapped directly to HALCON's
string parameter type.
- IBoolean – boolean type is handled through HALCON's
integer parameters, a value of 0 (zero) means logical false, other
values mean logical true.
- IEnumeration – enumeration is a type that allows selecting from
a set of values that are primarily identified by their name (the values are
called 'enum entries'). Enumerations are interfaced through HALCON's
string parameter type, while the enum entry names are used as the
parameter values.
- ICommand – The command type allows to "execute" actions. To
execute a command, use set_framegrabber_param with an integer
parameter of any value (the value is ignored). Some commands' execution
might take longer time and the command provides feedback when it is done.
To query the status, use get_framegrabber_param for that command. It will
return an integer value of 1 if it "is done" (command execution
has finished), 0 if it has not finished yet. Note that if some other features
are designed to be dependent on the command, querying the "is done" status
might be essential to get the depending features invalidated (and updated
with new values) as soon as the command execution finishes.
- IRegister – The register data type is used for plain memory blobs
that cannot be mapped to any other data type. They are interfaced through
HALCON's string parameter type, the register value is the
hexadecimal string representation of the register's memory.
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:
- General device information:
- Exposure feature:
- [Consumer]exposure_auto
- [Consumer]exposure
- Gain feature:
- [Consumer]gain_auto
- [Consumer]gain
- Trigger feature:
- [Consumer]trigger
- [Consumer]trigger_activation
- [Consumer]trigger_delay
- [Consumer]trigger_software
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.
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:
- The application (you) explicitly changed that feature.
- Another feature has changed and the notified feature "depends" on the
changed feature (the dependencies are defined in the GenICam description
file).
- Access mode or current range for the feature has changed.
- As a result of regular "polling" in case of uncached features.
- As a result of device event delivery if the feature is connected to that
event.
- As a result of new buffer delivery for features corresponding to chunk
data.
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:
- Some parameters depend on special conditions, e.g., a valid buffer or
another parameter activated. After opening the camera these conditions
may not yet be fulfilled, so the depending parameters are not shown.
By using the 'Refresh' button, all parameters are read again and the
depending parameters should appear if the conditions are fulfilled
then.
- There are also some parameters regarding the image size and the payload
size, which can only be changed if no acquisition takes place. The
safest way to ensure this is to apply the action parameter
'do_abort_grab'. Please note that 'Update Image' has to be disabled
first.
- The behavior of allowing changes to parameters while streaming is
active depends on the capabilities of the device. It is possible that
some cameras give you control over, e.g., the exposure time, while
streaming and others do not.
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:
- Bayer pattern to 'rgb':
| Bayer_LMMN |
|
|
|
|
⇾
|
[R,G,B] |
[R,G,B] |
[R,G,B] |
[R,G,B] |
|
|
| Bayer_NMML |
|
|
|
|
⇾
|
[R,G,B] |
[R,G,B] |
[R,G,B] |
[R,G,B] |
|
|
with G = (G1 + G2) / 2.
- Y'CbCr to 'rgb' (Note: gamma correction is not considered):
R = Y' + 1.4020 * (Cr- M)
G = Y' - 0.34414 * (Cb- M) -0.71414 * (Cr- M)
B = Y' + 1.7720 * (Cb - M)
- RGB to 'yuv' ('yuv' corresponds to Y'CbCr of PFNC, Note: gamma correction is not considered):
Y' = 0.299 * R + 0.587 * G + 0.114 * B
Cb = -0.16874 * R - 0.33126 * G + 0.5 * B + M
Cr = 0.5 * R - 0.41869 * G - 0.08131 * B + M
- RGB to 'gray':
Y' = 0.299 * R + 0.587 * G + 0.114 * B
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.
| 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. |
| 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. |
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.
|
There may exist additional read-only parameters with the following postfixes:
- '_access': These parameters provide the access permissions of
the corresponding parameter as a string. Possible values are
'ro' (read-only), 'wo' (write-only),
'rw' (read/write), 'na' (not available), and
'ni' (not implemented).
- '_category': These parameters provide the category of the
corresponding parameter as a string.
- '_description': These parameters provide the tool-tip of the
corresponding parameter as a string.
- '_displayname': These parameters provide the displayname of the
corresponding parameter as a string.
- '_longdescription': These parameters provide the description of the
corresponding parameter as a string.
- '_range': These parameters provide the minimum, maximum,
step width, and current values for the corresponding integer or float
parameter as a tuple with 4 elements, e.g.,
get_framegrabber_param(.., 'Shutter_range', ..) will return
the output tuple [min, max, step, current].
- '_representation': These parameters provide the GenICam representation
of the corresponding parameter as a string. They only exist for integer-parameters.
Possible values are 'Linear', 'Logarithmic', 'Boolean',
'PureNumber', 'HexNumber', 'IPV4Address'
and 'MACAddress'. The purpose of the representation is to aid in GUI design.
- '_streamable': These parameters provide the persistence of the
corresponding parameter as an integer. Possible values are
0 if false or 1 if true.
- '_string': These parameters provide the integer values formatted as
a string according to the '_representation' postfix. Especially
useful for the '_representation' values 'IPV4Address',
'MACAddress' and 'HexNumber'.
- '_type': These parameters provide the type of the corresponding
parameter as string.
- '_values': These parameters provide the valid value list for
the corresponding parameter as a tuple, e.g.,
get_framegrabber_param(.., 'volatile_values', ..) will return
the output tuple ['enable', 'disable'].
- '_visibility': These parameters provide the visibility of the
corresponding parameter as a string. Possible values are
'beginner', 'expert', and 'guru'.
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. |
Not supported by this interface.
Not supported by this interface.
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:
- AcqHandle:
Acquisition handle of the corresponding image acquisition instance.
- Context:
Optional context data of the specific callback. Up to now, this
parameter is not used, i.e., Context is set to NULL.
- UserContext:
Optional context data of the specific callback. Up to now,
this parameter is not used, i.e., UserContext is set to NULL.
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.
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', ...).
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.
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.
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.
HDevelop Examples
For this interface there are the following examples available:
- gigevision2.hdev -
Benchmark.
- gigevision2_2cameras.hdev -
Grabbing images from two cameras.
- gigevision2_acquisition_events.hdev - Example how to handle events
with additional event data using message queues.
- gigevision2_action_control.hdev -
Using Action Control feature.
- gigevision2_automation_technology_c4_objectmodel3d.hdev -
Acquisition and visualization of 3D data for the Automation Technology
C4 sensor.
- gigevision2_chunkdata.hdev -
Using GigE Vision Chunk Data.
- gigevision2_crop.hdev -
Example for grabbing images with software and hardware image cropping.
- gigevision2_devicelost_event.hdev - Example how to handle
DeviceLost event with message queues.
- gigevision2_do_abort_grab.hdev -
Aborting an ongoing image acquisition.
- gigevision2_easyparams.hdev - Handling MVTec EasyParams.
- gigevision2_fileaccess.hdev -
Example how to upload and download files from GenICam devices.
- gigevision2_flir_ax5.hdev -
Acquisition from a FLIR AX5 thermal imaging camera, visualization using
an iron LUT and temperature alarm detection.
- gigevision2_forceip.hdev -
Using ForceIP to correctly configure a misconfigured GigE
Vision device.
- gigevision2_frame_rate.hdev - Example to measure the effective
frame rate of an acquisition device.
- gigevision2_fwupdate.hdev -
Example how to apply a firmware update through GenICam FWUpdate.
- gigevision2_hardware_trigger.hdev -
Usage of hardware trigger.
- gigevision2_information.hdev -
Program for gathering information about the system and the camera
configuration. Please attach the resulting files when requesting
support.
- gigevision2_interpacket_delay.hdev -
Adjusting interpacket delay to enable the use of two cameras connected
via a single switch to one network interface.
- gigevision2_io_control.hdev - Example how to control the GPIOs of
a device.
- gigevision2_ip_address_handling.hdev -
Reading IPv4 address and assigning IPv4 address statically.
- gigevision2_link_aggregation.hdev -
Show usage in combination with static link aggregation (LAG).
- gigevision2_multiframe.hdev - Show usage of MultiFrame mode.
- gigevision2_parameters.hdev -
Lists all parameters of a device.
- gigevision2_parameter_persistence.hdev -
Demonstrates writing parameter values to files and restoring parameter
values from files.
- gigevision2_photonfocus3d_objectmodel3d.hdev -
Acquisition and visualization of 3D data for the Photonfocus 3D sensor.
- gigevision2_roboception_rcvisard_objectmodel3d.hdev -
Acquisition and visualization of 3D data for the Roboception rc_visard
sensors.
- gigevision2_scheduled_action_command_ptp_ieee1588.hdev -
Trigger multiple cameras synchronously with the GigE Vision feature
'scheduled action commands'.
- gigevision2_sick_ranger3_objectmodel3d.hdev -
Acquisition and visualization of 3D data for the Sick Ranger3 sensor.
- gigevision2_simple.hdev -
A simple example to show the usage of the interface.
- gigevision2_software_trigger.hdev -
Usage of software trigger.
- gigevision2_hyperspectral_linescan.hdev -
Example how to generate multi-channel images from
hyperspectral linescan camera data.
- gigevision2_wenglor_shapedrive_objectmodel3d.hdev -
Acquisition and visualization of 3D data for the wenglor ShapeDrive
sensors.
- gigevision2_wenglor_wecat3d_objectmodel3d.hdev -
Acquisition and visualization of 3D data for the wenglor weCat3D
sensors.
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:
- The streaming filter is intended to keep working with both versions of the acquisition
interface. Its current version does not yet implement all of the stream
engine parameters (stream control and statistics) of the GigEVision2
interface. All those differences are clearly highlighted in sections about
getting framegrabber parameters and
setting framegrabber parameters.
Changes related to opening the device (
open_framegrabber and
info_framegrabber):
- The name of the acquisition interface itself has changed (GigEVision2
instead of GigEVision) while both versions currently co-exist.
- The format of the string identifying the device and the set of options to identify
the device has changed, see details about the current format in
Identifying and Opening a Device. The same changes are also
reflected in the device and info_boards queries in info_framegrabber operator.
- Following parameters are ignored in the open_framegrabber operator: ImageWidth,
ImageHeight, StartRow, StartColumn, Field,
ExternalTrigger, Port, LineIn. Corresponding functionality
should be configured by setting the GenICam features of each corresponding device.
- The ability to detect misconfigured devices (IP subnet not matching the network interface
the device is connected to) and option to force new temporary IP address to the device
while opening still exists - but the format of the string requesting the new IP address
has changed to match the new underlying device discovery architecture. Refer to the
force_ip generic parameter in open_framegraber (replacing the old
GtlForceIP generic parameter that was using different internal format).
- Following generic parameters in open_framegrabber have new names:
- force_sockdrv instead of GtlForceSocketDriver
- num_buffers instead of GtlNumBuffers
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.
- Generic parameters GtlGVCPRetries and GtlGVCPTimeout are not supported,
their functionality is newly accessible through set_framegrabber_param parameters
[Device]LinkCommandRetryCount and [Device]LinkCommandTimeout.
- Generic parameters GtlUseCameraPacketSize and GtlDisableAutomaticTestPackets
are currently not supported at all.
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 parameters starting with the Gtl prefix no more exist (see below to find
which of them were replaced by similar parameters with different name).
- The parameters starting with the Gev prefix no more exist (depending on the actual
connected device, some of these parameters might still be available, if the device itself
provides them).
- Following additional parameters are no more supported:
- do_flush_buffers
- do_flush_callback_queue, max_num_queued_callbacks, num_queued_callbacks,
callback_timeout
- do_write_xml_file
- DeviceID, DeviceModelName, DeviceVendorName (similar as for the
parameters with Gev prefix, these might be available if the device itself
supports them).
- parameters_hidden
- GenApiCNodeMapRefPtr
- Some of the missing parameters listed above were replaced by same or similar purpose parameters
with new names (old name of the parameter mentioned in brackets):
- [Device]DeviceID (DeviceID)
- [Device]DeviceVendorName (DeviceVendorName)
- [Device]DeviceModelName (DeviceModelName)
- [Device]DeviceSerialNumber (GtlSerialNumber)
- [Device]GevDeviceIPAddress (GtlCurrentIPAddress)
- [Device]GevDeviceMACAddress (GtlDeviceMACAddress)
- [Device]LinkCommandRetryCount/[Device]LinkCommandTimeout (GtlGVCPRetries/GtlGVCPTimeout)
- [Stream]StreamBufferHandlingMode (GtlBufferHandlingMode) - refer to the documentation
of the new parameter, the list of supported values is different
- [Stream]GevStreamDeliverIncompleteBlocks (GtlGVSPDiscardIncompleteBuffers) - beware
of the reversed logic of the flag
- [Stream]GevStreamMaxBlockDuration (GtlBlockTimeout) - the new feature supports specifying
'infinite' duration, refer to the feature documentation for details
- [Stream]GevStreamActiveEngine (GtlAcquisitionEngine) - beware of different output strings
- [Stream]GevStreamIncompleteBlockCount (GtlIncompleteBuffers)
- [Stream]GevStreamPacketOrderDelay (GtlGVSPResendWait)
- [Interface]InterfaceID (GtlInterfaceID) - beware of different output strings
- GevSCPD (GtlGVSPInterpacketDelay) - note that this is a device feature, not mandatory
- buffer_is_incomplete (GtlBufferIncomplete)
- buffer_timestamp (GtlBufferTimestamp)
- buffer_frameid (GtlBlockID)
- do_write_configuration (do_write_xml_file) - the new parameter does not only replace
the old one but extends it with wider functionality
- We recommend to refer to the documentation of all the currently available parameters
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:
- Check if the latest revision
of the HALCON GigEVision2 interface is used.
- Check the System Requirements.
- Check if the device has the latest firmware.
- Enable low-level error messages in HALCON to query more information
about the problem (and check the output console in HDevelop if applicable).
- If a firewall is active in the system, it has to be configured in a way
so that all applications expected to be using the GigE Vision devices
(e.g. HDevelop, but also any user-developed applications) have full
access to the connected devices.
- If you observe random acquisition timeouts, it might be that packet loss
is too high in your network setup (when using the GVSP stream type).
Verify that all your networking components can keep up with the data rate
sent by the camera. Check how frequently packet gaps occur with
'[Stream]GevStreamResendPacketCount'. Then try to parameterize the resending
mechanism for your setup, for example by increasing '[Stream]GevStreamMaxPacketGaps'
or by using '[Stream]GevStreamMaxBlockDuration'.
GigE Vision 3.0 RDMA stream based devices:
- If the device supports only the new RDMA stream type, but is connected to a network
adapter which does not support RDMA/RoCEv2 on the given operation system,
the HALCON GigEVision2 interface cannot instantiate the stream and will
treat the device as non-streamable. Refer to
System Requirements and
GVSP vs. RDMA stream types.
Filter driver (MVTec GigE Vision Streaming Filter):
- In case there are problems with streaming while the filter driver is active
it is usually not possible to capture a network packet trace to analyse the
problems. Starting with v2.1.8.0 of the filter driver it is possible to set
the environment variable MVTEC_GIGEVISION_FILTER_PASSTHROUGH=1 to give other filters
like Wireshark's pcap access to the packets.
GenICam:
- Check if the correct GenICam binaries are in use. HALCON uses the official
binaries in a private installation (folder genicam in the HALCONROOT
directory). If other GenICam binaries are in your path or in some system
path (for Windows e.g. in c:\Windows\System32\ for Linux e.g. in /usr/lib
or similar directories) make sure these are the official ones by comparing
them with the ones in the HALCON installation. Using unofficial binaries
might result in strange problems.
If there are still problems, please contact your local distributor.
The following information is needed for your support request to avoid
unnecessary inquiries.
- Used HALCON and acquisition interface versions.
- Used HALCON architecture (especially 32 or 64 bit).
- Low-level error messages if there are any.
- Camera manufacturer, model and firmware version.
- Details about computer system, like operating system, RAM and CPU.
- Minimal sample code (e.g. HDevelop script) to reproduce the issue.
- Description of observed and expected behavior.
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
- Revision 24.11.23 (Apr 20, 2026):
- Support for the finalized GigE Vision 3.0 specification has been added.
Device firmware must match the updated specification.
- According to a recommendation of the Linux C library interface
documentation, waiting for events on file descriptors is now performed
by poll instead of select.
- The decompression mechanism for GenICam feature description files
failed for some zip files with: 'Failed to decompress file (unexpected
uncompressed size 0)'. This problem has been fixed.
- The parameter '[Stream]GevStreamAssumeImageInChunkPayload' has been
added to deal with the GigE Vision payload type chunk data. Its default
value is true. This fixes a problem where setting 'ChunkModeActive' to
true did result in 'grab_image' and 'grab_image_async' not delivering
an image.
- zlib has been updated to version 1.3.2.
- Revision 24.11.22 (Oct 9, 2025):
- GigE Vision specification version 3.0 is now also supported on Linux.
It adds remote direct memory access (RDMA) over Converged Ethernet
(RoCE).
- The decompression method for GenICam feature description files has been
changed to zlib 1.3.1.
- libjpeg-turbo has been updated to version 3.1.0.
- There was a memory leak when registering for feature change notifications
with set_framegrabber_callback or with 'event_message_queue'.
This problem has been fixed.
- Action commands could fail due to an uninitialized source port. This
problem has been fixed.
- A Software Bill of Materials (SBOM) in the System Package Data Exchange
(SPDX) format has been added next to each binary file with the same name
extended by ".spdx.json".
- Revision 24.11.21 (Apr 16, 2025):
- The underlying GenApi version has been updated to the latest official
release 3.5.0. The previous version failed to load settings that
contained empty string parameters. This problem has been fixed.
- Revision 20.11.20 (Oct 10, 2024):
- GigE Vision specification version 3.0 is now supported on Windows. It adds
remote direct memory access (RDMA) over Converged Ethernet version 2
(RoCEv2).
- libjpeg-turbo has been updated to version 3.0.3.
- Revision 20.11.19 (Sep 24, 2024):
- The execution of the 'do_abort_grab' command could take up to a value
specified by the parameter '[Stream]GevStreamAbortCheckPeriod'.
The 'do_abort_grab' command is now executed significantly faster.
- grab_image_start failed with HALCON error code 5329 in certain
multi-camera setups. This problem has been fixed.
- The initialization of the MVTec EasyParam [Consumer]trigger_delay
crashed in the rare case that TriggerActivation did not support any of
the following values: 'RisingEdge', 'FallingEdge' and 'AnyEdge'.
- The first access to the MVTec EasyParam [Consumer]exposure_auto and
[Consumer]gain_auto could lead to a change in ExposureTime or Gain
GenICam device parameter, respectively. This problem has been fixed.
- Multithread usage of the MVTec EasyParams could lead to abnormal
program termination. This problem has been fixed.
- Revision 20.11.18 (Feb 28, 2024):
- The open_framegrabber's ColorSpace parameter has been extended with
the value 'rgbx'. The new value can be used to obtain a 4 channel HALCON
image, if the input pixel format is a supported 4 channel PFNC pixel format.
- Pixel formats 'RGB14', 'RGBa10', 'RGBa12', 'RGBa14', 'RGBa16', 'BGR14',
'BGR16', 'BGRa10', 'BGRa12', 'BGRa14' and 'BGRa16' are now supported.
- The underlying GenApi version has been updated to the latest
official release 3.4.2. This fixes a compatibility break
with certain persistence files introduced in version 3.4.1.
- The HDevelop example gigevision2_hyperspectral_linescan.hdev
has been added to demonstrate how to generate multi-channel images from
hyperspectral linescan camera data.
- Loading of configuration files during open_framegrabber
(with the parameter CameraType) did not raise an exception,
even when the file could not be read. This problem has been fixed.
- When passing GenICam persistence files to open_framegrabber,
the remote device was silently ignored. This problem has been fixed.
- The HDevelop example gigevision2_hardware_trigger.hdev
has been added to demonstrate how to use the hardware trigger mode.
- Instead of a range, numeric GenICam parameters can also report
a list of values. This is now available through the
parameter suffix '_values'.
- Revision 20.11.17 (Aug 7, 2023):
- The underlying GenApi version has been updated to the latest official
release 3.4.1. This improves the validation of the string
representation of parameters written through the '_string' postfix.
- Pixel formats 'YCbCr420_8_YY_CbCr_Semiplanar',
'YCbCr420_8_YY_CrCb_Semiplanar', 'YCbCr422_8_YY_CbCr_Semiplanar', and
'YCbCr422_8_YY_CrCb_Semiplanar' are now supported.
- Parallel execution of set_framegrabber_param (..., 'do_abort_grab', ...) could
lead to a crash when the filter driver was active. This problem has been fixed.
- Execution of 'do_write_configuration' with 'streaming_mode' off
returned an error. This problem has been fixed.
- The first access to an MVTec EasyParam could change the value of its
equivalent GenICam device parameter. This problem has been fixed.
- Accessing an MVTec EasyParam could lead to a crash if any of the
underlying GenICam parameters had an unexpected type. This problem has
been fixed.
- Querying the '_representation' of an MVTec EasyParam could in some cases lead
to a crash. This problem has been fixed.
- In rare cases, the access of not implementable MVTec EasyParams was
erroneously set to 'na', instead of 'ni'. This problem has been fixed.
- The robustness of setting/restoring the device trigger state in
gigevision2_information.hdev has been improved.
- Revision 20.11.16 (Apr 6, 2023):
- If a numerical parameter has a special representation besides its pure
value, the type of representation can now be queried by using the
'_representation' postfix.
- The string representation of a parameter value can be now queried by
using the '_string' postfix.
- grab_data and grab_data_async failed when receiving data of payload
type Chunk Data. This problem has been fixed. See also
Chunk Data.
- The libCLAllSerial shared object has been removed from the
redistribution of GenApi 3.4.0.
- The example gigevision2_do_abort_grab.hdev has been rewritten.
- The example gigevision2_software_trigger.hdev has been rewritten.
- The HDevelop example gigevision2_scheduled_action_command_ptp_ieee1588.hdev
has been added to demonstrate synchronous triggering of multiple cameras
with the GigE Vision feature 'scheduled action commands'.
- third_party_gigevision2.txt now contains links to the
corresponding software location. See also
Usage of third-party libraries.
- Revision 18.11.15 (Oct 7, 2022):
- The MVTec GigE Vision Streaming Filter installer failed
when its file location contained non-ASCII characters.
This problem has been fixed.
- The MVTec EasyParams have been implemented to deal
with the most common GenICam features in a simple and user-friendly
way.
- The new parameter 'available_easyparam_names' has been added to
return the list of the MVTec EasyParams.
- The HDevelop example gigevision2_easyparams.hdev has been
added to demonstrate how to handle the MVTec
EasyParams.
- On a Unix system, loading GenICam persistence files that contained
Windows line endings failed. This problem has been fixed.
- Revision 18.11.14 (May 11, 2022):
- In some cases, the 'info_boards' query of info_framegrabber failed
to detect an available IP address for misconfigured devices.
This problem has been fixed.
- On a Unix system, loading Consumer persistence or configuration ini
that was written on a Windows system failed. This problem has been
fixed. Moreover, writing Consumer persistence or configuration ini
files on a Windows system has been changed to use Unix line ending.
- Connection with serial number is now possible,
see Identifying and Opening a Device.
- The underlying GenApi version has been updated to the latest official
release 3.4. This fixes a crash during 'do_load_settings' when a device
failed to execute the underlying command 'DeviceRegistersStreamingEnd'.
- It is now possible to receive
Feature Change Notifications
on any parameter listed by 'available_param_names'.
- A new parameter 'event_new_buffer' has been added which is only
available as an event, see
Feature Change Notifications
and following.
- There was a memory leak with each message delivered through the
Event Message Queues
mechanism. This problem has been fixed.
- The identifier (key 'id') of the
messages incoming on an event was not
always unique. This problem has been fixed. The device name in the
string ':' now corresponds with the 'unique_name'
from info_framegrabber.
- Retrieving GenICam XML description files from the host file system
was broken. This problem has been fixed.
- The calculation of the B (Y) coordinates in case of Disparity data
from a Linescan device was incorrect. This problem has been fixed.
- grab_data and grab_data_async failed when
'add_objectmodel3d_overlay_attrib' was enabled but the ObjectModel3D
contained no points. This problem has been fixed.
- The HDevelop script gigevision2_information.hdev now saves the
output data into the user's Documents folder to avoid problems with
missing writing permissions. Further, the script can now deal with
non-alphanumerical characters in the device unique name. Moreover, a
problem related to the restoring of the original trigger settings has
been fixed.
- Revision 18.11.13 (Oct 20, 2021):
- JPEG payload as specified by the GigE Vision and GenICam GenDC
standards can now be decoded.
- Packed Bayer formats as specified by the GigE Vision standard and
the GenICam Pixel Format Naming Convention are now supported.
- Pixel formats 'Coord3D_AC32f', 'Coord3D_AC16', and 'Coord3D_AC8'
are now supported.
- The read-write parameters of the Consumer module are streamable,
i.e. they can be persisted with 'do_write_settings' or
'do_write_configuration'. However, get_framegrabber_param returned 0
for these parameters with postfix '_streamable'.
This problem has been fixed.
- HALCON crashed in rare cases with connection loss during the execution
of open_framegrabber. This problem has been fixed.
- When open_framegrabber with forced IP was called shortly after a
device discovery, it could have failed even though the force-IP
command had actually succeeded. This problem has been fixed.
- The HDevelop example gigevision2_information.hdev now includes
information about the MTU configured on the receiver side.
- The HDevelop example
gigevision2_roboception_rcvisard_objectmodel3d.hdev has been
extended to support Roboception's GenTL Producer. Further,
DepthDispRange is now calculated implicitly and a problem with the
color overlay of the ObjectModel3D has been fixed.
- The distribution package of this interface now contains files providing
meta information for the HDevelop example browser.
- Revision 18.11.12 (Feb 15, 2021):
- The performance of the Socket Driver has been revised including
two new parameters '[Stream]GevStreamRingBufferSize' and
'[Stream]GevStreamReceiveSocketSize', see also
Advanced Streaming Engine Control.
- The parameter [Stream]EventTransferEndUndeliverabilityReason has been
added to be used in conjunction with [Stream]EventTransferEnd.
- The MVTec GigE Vision Streaming Filter (filter driver) has been
updated to version 2.2.8.4 which comes with the following changes:
- With the streaming filter, the EventTransferEnd was only fired
for successfully received blocks but not for undeliverable ones.
This problem has been fixed.
- In rare cases, when an application did not shutdown gracefully
while streaming was underway, automatic unloading of the streaming
filter could have led to a crash of the operating system.
This problem has been fixed.
- The underlying GenApi version has been updated to the latest official
release 3.3.
- The assembly of an ObjectModel3D from encoder-controlled Linescan 3D
devices has been accelerated significantly. To allow this acceleration,
the devices must announce ChunkEncoderValue and ChunkScanLineSelector
through their ValueArrayCandidates as described by GenICam Standard
Feature Naming Convention 2.7 and later.
- For open_framegrabber with a device string in the 'token:value' form,
it was mandatory to contain the separator ' | '. This restriction
has been removed.
- The GenICam caching mechanism was inactive unless one of the
environment variables TEMP, TMP or TMPDIR
was set. Now, /tmp or HALCONROOT are used as a
fallback.
- The HDevelop example gigevision2_frame_rate.hdev has been
optimized.
- The HDevelop example gigevision2_acquisition_events.hdev
ran into a deadlock in case of very quickly incoming events.
This problem has been fixed.
- Section Switching From Previous Implementation of the GigEVision Interface has been extended
with further old parameters and their new correspondences.
- The HDevelop example gigevision2_information.hdev has been
refactored and now it calls the new procedure library
genicamtl_information.hdpl. Moreover, this new version switches off
TriggerMode in order to test image acquisition and logs more
details in case of an image acquisition failure.
- The error handling has been improved. Additional information about
the cause of an error can now be queried with the operator
get_extended_error_info. For the HALCON language interfaces (C# and C++),
the HALCON exception class provides methods to access the
additional error information.
- Revision 18.11.11 (Oct 27, 2020):
- This interface couldn't be loaded from .NET Core applications on Linux
and macOS. This problem has been fixed.
- Added support for 'YCbCr411_8_CbYYCrYY', 'YCbCr422_8' and
'YCbCr422_8_CbYCrY' pixel formats.
- Revision 13.0.10 (Sep 18, 2020):
- Most file operations did not support UTF-8 file names.
This problem has been fixed. However, some of the operations like
Firmware Update are managed by
GenICam GenApi
which might not support them.
- In the previous revision 'do_write_configuration' did not write the path
to generated xml files into the generated ini file. This problem
has been fixed.
- Revision 13.0.9 (Aug 7, 2020):
- 'do_write_configuration' has been extended to also generate a
persistence file for the GenTL Consumer (persisting internal
parameters of the HALCON GigEVision2 image acquisition
interface itself like 'grab_timeout'), see
Parameters – Persisting Device Status.
- It is now possible to write and load persistence files for individual
GenTL Producer modules or the GenTL Consumer when the device has
already been opened. This was so far only possible for the remote
device. The persistence file to be written or loaded is selected with
the parameter 'settings_selector'.
- When loading persistence files with open_framegrabber,
some of the persisted parameter values were overwritten.
This problem has been fixed.
- The features '[Interface]GevInterfaceGatewaySelector' and
'[Interface]GevInterfaceGateway' have been added.
Note that they are currently not implemented on macOS.
- The HDevelop example gigevision2_parameter_persistence.hdev
has been added to demonstrate writing parameter values to files and
restoring parameter values from files.
- The parameter 'available_event_names' was wrongly written as
'available_event_types'. This problem has been fixed.
- Revision 13.0.8 (Apr 24, 2020):
- GigE Vision specification version 2.2 is now supported. This includes
GenDC streaming used e.g. by 3D devices.
- get_framegrabber_param(..., 'event_message_queue', ...)
failed with HALCON versions prior to 18.05.
This problem has been fixed.
- The MVTec GigE Vision Streaming Filter (filter driver) has been
updated to version 2.2.8.3 which comes with the following changes:
- When using '[Stream]EventTransferEnd' on multiple NICs,
the filter driver sporadically stopped to deliver events.
This problem has been fixed.
- get_framegrabber_param (..., 'num_buffers_underrun', ...)
was not available with the filter driver. This problem has been fixed.
- Revision 13.0.7 (Feb 19, 2020):
- The time to get a buffer from the buffer queue was linearly rising
with the buffer index. This was most noticeable when using a large
'num_buffers'. This problem has been fixed.
- The HDevelop example gigevision2_action_control.hdev does not
depend on the optional device feature GevCurrentIPAddress anymore.
- Revision 13.0.6 (Dec 10, 2019):
- Updated underlying GenApi version to latest official release v3.2.
The Update includes a bug fix on persistence of user and sequencer
sets and other minor bug fixes.
- The parameter 'num_buffers' was limited to an arbitrary maximum of
1023. This limitation has been removed.
- The default timeout for force IP requests has been increased to allow
devices verification of the requested IP as per RFC 5227.
Further, the new parameters '[Interface]GevDeviceForceIPTimeout' and
'[Interface]GevDeviceLastForceIPSuccess' have been added for better
control of the operation.
- The generic parameter 'direct_connection' passed to open_framegrabber
was neither listed in info_framegrabber (..., 'generic', ...)
nor available from get_framegrabber_param. This problem has been fixed.
- The MVTec GigE Vision Streaming Filter (filter driver) was inactive
on systems with more than 24 NICs. This problem has been fixed.
- The HDevelop example gigevision2_link_aggregation.hdev has
been extended for usage with the socket driver.
- The HDevelop example gigevision2_link_aggregation.hdev was
incomplete. This problem has been fixed. Now,
'[Stream]GevStreamPacketOrderDelay' is adjusted to the specific setup.
- The HDevelop example
gigevision2_roboception_rcvisard_objectmodel3d.hdev has been
adapted to discard incomplete buffers.
- Added new HDevelop example
gigevision2_sick_ranger3_objectmodel3d.hdev that shows
how to acquire and visualize 3D data with the Sick Ranger3 sensor.
- Revision 13.0.5 (Jul 22, 2019):
- Fast direct connection with IP address is now possible, see
Identifying and Opening a Device.
- You can now query if a feature can be persisted by using the
'_streamable' postfix.
- The HDevelop example gigevision2_parameters.hdev has been
extended to check if a parameter can be persisted.
- The HDevelop example gigevision2_information.hdev has been
extended to check if the camera supports firewall traversal.
- The 'add_objectmodel3d_overlay_attrib' mechanism has been extended
according to SFNC 2.5 which specifies how to map overlay data
of different resolution than the 3D data.
- The HDevelop example
gigevision2_roboception_rcvisard_objectmodel3d.hdev has been
simplified accordingly.
- The file third_party_gigevision2.txt has been added to the
distribution package of this interface.
- Revision 13.0.4 Addendum (May 2, 2019):
- The new HDevelop example gigevision2_io_control.hdev has been
added to demonstrate how to control the GPIOs of a device.
- In the HDevelop example
gigevision2_roboception_rcvisard_objectmodel3d.hdev,
'DepthMaxDepth' has been decreased to 5 meters in order to reduce
unwanted background data.
- Revision 13.0.4 (Mar 5, 2019):
- Added support for 'BiColorRGBG8' and 'BiColorBGRG8' pixel formats.
- 3D object models from grab_data and grab_data_async are now generated
with 2D mapping. This significantly speeds up several operators
working on 3D object models.
- The mechanism to generate a HALCON ObjectModel3D from 3D
images has been extended for Disparity images. Such images need to
include the following chunks specified in SFNC 2.4:
'ChunkScan3dFocalLength', 'ChunkScan3dBaseline',
'ChunkScan3dPrincipalPointU', 'ChunkScan3dPrincipalPointV'.
- On Linux systems, 'do_abort_grab' could take an unexpectedly long time.
This problem has been fixed.
- Further, the parameter '[Stream]GevStreamAbortCheckPeriod' has been
introduced to configure the check period for 'do_abort_grab'.
- The MVTec GigE Vision Streaming Filter (filter driver) has been
updated to version 2.1.8.2 which comes with the following changes:
- '[Stream]EventTransferEnd' and its related event data are now also
available when using the filter driver.
- The following statistics available with get_framegrabber_param were
missing from the filter driver but have now been implemented:
'[Stream]GevStreamDeliveredPacketCount',
'[Stream]GevStreamDuplicatePacketCount',
'[Stream]GevStreamLostPacketCount',
'[Stream]GevStreamOversizedBlockCount',
'[Stream]GevStreamResendCommandCount',
'[Stream]GevStreamSkippedBlockCount'
- Added new HDevelop example
gigevision2_roboception_rcvisard_objectmodel3d.hdev that shows
how to acquire and visualize 3D data with the Roboception rc_visard
sensors.
- Added new HDevelop example
gigevision2_wenglor_shapedrive_objectmodel3d.hdev that shows
how to acquire and visualize 3D data from a wenglor ShapeDrive sensor.
- Revision 13.0.3 (Oct 30, 2018):
- Updated underlying GenApi version to latest official release v3.1.
Please note that therefore also the genicam directory of your HALCON
installation will be updated.
The Update includes an accelerated MathParser, improved persistence
in combination with sequencers and a fix where values were available
even though the corresponding feature was not.
- GenICam's File Access is now supported. See the new parameters
'fileaccess_file_path', 'fileaccess_remote_name',
'do_fileaccess_download', 'do_fileaccess_upload',
'do_fileaccess_delete', and the new HDevelop example
gigevision2_fileaccess.hdev.
- GenICam's FWUpdate is now supported. See
Firmware Update and the new HDevelop example
gigevision2_fwupdate.hdev.
- Receiving GenICam events on message queues is now supported, see
Event Message Queues.
So far, GenICam events were only supported via callbacks and thus
not usable in HDevelop. Additionally, two new HDevelop examples have
been added to show this functionality
gigevision2_acquisition_events.hdev and
gigevision2_devicelost_event.hdev.
- The GigE Vision Producer now supports GenICam action control.
For more information, please refer to the new HDevelop example
gigevision2_action_control.hdev.
- The GigE Vision Producer now supports pending acknowledges
which allow to wait for device response to long taking commands
without needing to manually adjust the timeout.
- 'do_write_configuration' has been extended to store not only the
current device configuration but also generate persistence files
for all the GigE Vision Producer modules
(system, interface, device and data stream), see
Parameters – Persisting Device Status.
- Added new parameters 'buffer_timestamp_ns' and
'device_timestamp_frequency' to improve the usability of
'buffer_timestamp' which on its own is unit-agnostic.
- Some generic parameters passed to open_framegrabber were not available
through get_framegrabber_param. This problem has been fixed.
- String parameters longer than 1024 characters were silently cropped by
get_framegrabber_param. This problem has been fixed.
- When 'start_async_after_grab_async' was set 'disable',
the acquisition was stopped on the remote device after each frame.
This problem has been fixed.
- Some parameters depending on '[Interface]DeviceSelector' (like
'[Interface]DeviceTLVersionMajor') were not updated when
'[Interface]DeviceSelector' was changed. This problem has been fixed.
- For consistency, the example gigevision2_atc4_objectmodel3d
has been renamed to
gigevision2_automation_technology_c4_objectmodel3d.hdev.
- Revision 13.0.2 (Apr 27, 2018):
- Added support for the 'Mono4p' pixel format.
- Added support for the 'YCbCr411_8' pixel format.
- Unsupported pixel formats are now tried to be returned in their actual
image dimensions if they are similar enough to a supported Mono format.
Before, all unsupported formats were returned as square images (see
Raw Output Format).
- On Unix systems, HALCON crashed when ended without calling
close_framegrabber. This problem has been fixed.
- When 'DeviceUserID' was set to ' ' (a single space), it could not be
used to connect. This problem has been fixed.
- When trying to connect to a busy device using its 'DeviceUserID',
a misleading low-level error appeared. This problem has been fixed.
- Device discovery per network interface is now done in parallel.
- The Windows Firewall can now be traversed if the camera supports the
Message Channel Source Port (MCSP) and Stream Channel Source Port
(SCSPx) registers. The traversal can be configured with the new
parameters '[Device]DeviceMessageChannelKeepAliveTimeout' and
'[Stream]DeviceStreamChannelKeepAliveTimeout'.
- The default value of the parameter '[Device]LinkCommandTimeout'
has been changed from 400000 to 200000 microseconds.
- The packet size negotiation algorithm has been revised regarding
compliance with the GigE Vision specification. To make it more
transparent and configurable, the following parameters have been
introduced: '[Interface]GevInterfaceMTU',
'[Stream]DeviceStreamChannelPacketSize',
'[Stream]DeviceStreamChannelPacketSizeMin',
'[Stream]DeviceStreamChannelPacketSizeMax',
'[Stream]DeviceStreamChannelPacketSizeInc',
'[Stream]DeviceStreamChannelNegotiatePacketSize'.
- When changing 'GevSCPSPacketSize' dynamically, corrupt or no images at
all could be acquired. This problem has been fixed.
- The Streaming Filter now works on WiFi interfaces. Before,
devices connected via a WiFi interface fell back on the socket driver.
- The Streaming Filter did not work on Killer network interface cards
with jumbo frames. This problem has been fixed.
- The socket driver could fail to request a resend of a missing block
trailer. This problem has been fixed.
- The internal locking of the Streaming Filter has been improved to
increase performance and stability especially for multiple cameras.
- The resend strategy of the Streaming Filter has been revised and
optimized for low latency streaming.
- The parameter '[Stream]GevStreamMaxBlockDuration' had no effect on the
Streaming Filter and was instead fixed to 200ms. This problem has been
fixed.
- The following parameters of the socket driver have been adapted or
introduced to the Streaming Filter:
'[Stream]GevStreamUnavailablePacketCount',
'[Stream]GevStreamMaxPacketGaps',
'[Stream]GevStreamMaxBlockDuration',
'[Stream]GevStreamDeliverIncompleteBlocks',
'[Stream]GevStreamFullBlockTerminatesPrev',
'[Stream]GevStreamEngineUnderrunCount'.
- Example for using GigE Vision Chunk Data has been added.
- Revision 13.0.1 (Nov 28, 2017):
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.