VmbNET C# API Function Reference
Main Interfaces
IVmbSystem
- interface VmbNET.IVmbSystem : IDisposable
Interface for accessing the entirety of VmbC.
This interface provides access to all system features, connected cameras, interfaces and transport layers. The singleton pattern is used so that a maximum of one instance can exist during runtime. When used via the disposable pattern, the system will be shut down when IDisposable.Dispose() has been called on all references to the singleton instance.
Public Functions
- ITransportLayer GetTransportLayerByID (string id)
Get a transport layer by its ID.
- Param id:
The ID of the desired transport layer.
- Return:
The transport layer corresponding to the ID.
- IInterface GetInterfaceByID (string id)
Get an interface by its ID.
- Param id:
The ID of the desired interface.
- Return:
The interface corresponding to the ID.
- ICamera GetCameraByID (string id)
Get a camera by its ID or extended ID.
- Param id:
The ID or extended ID of the desired camera.
- Return:
The camera corresponding to the ID or extended ID.
- IOpenCamera OpenCameraByID (string id)
Open and get a camera by its ID or extended ID.
- Param id:
The ID or extended ID of the desired camera.
- Return:
The open camera corresponding to the ID or extended ID.
- IReadOnlyList<ITransportLayer> GetTransportLayers ()
Method for getting the transport layers found by VmbC.
This list will not change while the IVmbSystem instance is not disposed.
<![CDATA[ var transportLayers = vmbSystem.GetTransportLayers(); foreach(var transportLayer in transportLayers) { Console.WriteLine($"transport layer ID: {transportLayer.Id}, transport layer name: {transportLayer.Name}"); } ]]>
- Return:
The found transport layers.
- IReadOnlyList<IInterface> GetInterfaces ()
Method for getting the interfaces found by VmbC.
The list’s contents can change between calls.
<![CDATA[ var ifaces = vmbSystem.GetInterfaces(); foreach(var iface in ifaces) { Console.WriteLine($"interface ID: {iface.Id}, interface name: {iface.Name}"); } ]]>
- Return:
The found interfaces.
- IReadOnlyList<ICamera> GetCameras ()
Method for getting the cameras found by VmbC.
This list can change between calls.
<![CDATA[ var cameras = vmbSystem.GetCameras(); foreach(var camera in cameras) { Console.WriteLine($"camera ID: {camera.Id}, camera name: {camera.Name}"); } ]]>
- Return:
The found cameras.
- void RemoveAllInterfaceListEventHandlers ()
Remove all event handlers registered to the event InterfaceListChanged.
- void RemoveAllCameraListEventHandlers ()
Remove all event handlers registered to the event CameraListChanged.
- void Shutdown ()
Convenience method for shutting down VmbC in case the disposable pattern is not desired.
If called within a callback, VmbC will not be shut down. Once called, the next call to IVmbSystem.Startup() will initialize a new singleton and will start up VmbC. Using this method is discouraged in favor of the disposable pattern.
Properties
- string > ConfigurationPaths { get; set; }
Get and set the list of paths and directories in which the system should search for transport layers on VmbC start up.
Paths of the .cti files and configuration .xml files can also be added. If empty or null, the paths specified in the configuration XML are considered. If there are none, the directories in
GENICAM_GENTL64_PATH
are searched as well as the directory containing the VmbC library. If set after a IVmbSystem instance is created it will be ignored until the next creation.<![CDATA[ IVmbSystem.ConfigurationPaths = new List<string> { "some-path", "some-directory" }; IVmbSystem.ConfigurationPaths.Add("some-other-path-or-directory"); ]]>
- Return:
A list of directories and paths.
- ILogger Logger { get; set; }
Get and set the system logger as an instance of Microsoft.Extensions.Logging.ILogger.
If not set by the application, no logging will be performed.
<![CDATA[ // requires Serilog and Microsoft.Extensions.Logging Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .Enrich.FromLogContext() .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message} (at {Caller}){NewLine}{Exception}") .WriteTo.File("log.txt") .CreateLogger(); ILoggerFactory factory = (new LoggerFactory()).AddSerilog(Log.Logger); var logger = factory.CreateLogger("ConsoleApp"); IVmbSystem.Logger = logger; ]]>
- Return:
A reference to the current logger.
Events
- event EventHandler<InterfaceListEventArgs> InterfaceListChanged
Event for receiving updates to the interface list.
All registered event handlers can be removed by calling RemoveAllInterfaceListEventHandlers().
- event EventHandler<CameraListEventArgs> CameraListChanged
Event for receiving updates to the camera list.
All registered event handlers can be removed by calling RemoveAllCameraListEventHandlers().
Public Static Functions
- IVmbSystem Startup ()
Method for getting the singleton instance to access VmbC. VmbC is started up if the instance does not exist or is disposed.
<![CDATA[ { using IVmbSystem vmbSystem = IVmbSystem.Startup(); // starts VmbC up } // VmbC is shut down when leaving the current scope ]]>
- Return:
An instance for controlling VmbC.
Public Static Attributes
- string VmbCVersion = > VmbSystem.VmbCVersion
The VmbC version.
- Return:
The version as a string.
ITransportLayer
- interface VmbNET.ITransportLayer : VmbNET.IPersistableFeatureContainer
Interface for accessing a transport layer.
Public Functions
- IReadOnlyList<IInterface> GetInterfaces ()
Method for getting the interfaces related to this transport layer.
- Return:
The interfaces related to this transport layer.
Properties
- string Id { get; set; }
The transport layer’s unique ID.
- string Name { get; set; }
The transport layer’s name.
- string ModelName { get; set; }
The transport layer’s model name.
- string Vendor { get; set; }
The transport layer’s vendor.
- string Version { get; set; }
The transport layer’s version.
- string Path { get; set; }
The full path of the transport layer.
- TransportLayerType Type { get; set; }
The transport layer’s type.
IInterface
- interface VmbNET.IInterface : VmbNET.IPersistableFeatureContainer
Interface for accessing a general camera interface.
Public Functions
Properties
- string Id { get; set; }
The interface’s identifier.
- string Name { get; set; }
The interface’s name.
- ITransportLayer TransportLayer { get; set; }
The related transport layer.
- TransportLayerType Type { get; set; }
The interface technology.
ICameraInfo
- interface VmbNET.ICameraInfo
Interface for accessing read-only metadata about a camera.
The camera can be open or closed.
Subclassed by VmbNET.ICamera, VmbNET.IOpenCamera
Public Types
Properties
- string Id { get; set; }
The camera’s identifier.
- string IdExtended { get; set; }
The camera’s globally unique identifier.
- string Name { get; set; }
The camera’s display name.
- string ModelName { get; set; }
The camera’s model name.
- string Serial { get; set; }
The camera’s serial number.
- AccessModeValue > AccessModes { get; set; }
The camera’s permitted access modes.
- ITransportLayer TransportLayer { get; set; }
The camera’s related transport layer.
- IInterface Interface { get; set; }
The camera’s related interface.
ICamera
- interface VmbNET.ICamera : VmbNET.ICameraInfo
Interface for accessing a camera.
As well as providing the camera’s read-only metadata, this interface is used to open the camera and get the corresponding open camera instance.
Public Functions
- IOpenCamera Open ()
Method for getting an instance of an open camera. If the camera isn’t already opened, it will be opened with read and write access, i.e. calling this method is equivalent to calling
Open(AccessModeValue.Full)
- Return:
An instance of an open camera.
- IOpenCamera Open (AccessModeValue accessMode)
Method for getting an instance of an open camera. The camera will be opened if it isn’t already.
- Param accessMode:
The access mode for opening the camera if the camera is not already opened. Only required for access modes other than full.
- Return:
An instance of an open camera.
IOpenCamera
- interface VmbNET.IOpenCamera : VmbNET.ICameraInfo, VmbNET.IPersistableFeatureContainer, VmbNET.ICapturingModule, IDisposable
Interface for accessing an open camera.
When used via the disposable pattern, the camera will be closed when IDisposable.Dispose() has been called on all instances of the camera.
Public Functions
- List<byte> ReadMemory (UInt64 address, UInt32 byteCount)
Method for reading a list of bytes from an address in a camera’s memory.
- Param address:
The address in the camera’s memory to read from.
- Param byteCount:
The number of bytes to read.
- Return:
The bytes that were read. The number of bytes returned may be less than byteCount .
- UInt32 WriteMemory (UInt64 address, IReadOnlyList<byte> bytes)
Method for writing a list of bytes to an address in a camera’s memory.
- Param address:
The address in the camera’s memory to write to.
- Param bytes:
The bytes to write to the address.
- Return:
The number of bytes that were actually written. This may be less than bytes.Count .
- IStream OpenStream (UInt32 index)
Open a stream for acquisition.
- Param index:
The index of the stream. Must be less than StreamCount.
- Return:
An open stream as an instance of IStream.
- IFrame AcquireSingleImage (AllocationModeValue allocationMode, TimeSpan timeout)
Convenience method for acquiring a single image synchronously.
Calling this method while a stream is opened via OpenStream is not supported. Assumes the camera has the GenICam Standard Features Naming Convention conforming command features “AcquisitionStart” and “AcquisitionStop” for starting and stopping the acquisition. The frame’s unmanaged data is deallocated when the corresponding instance of IFrame is disposed.
- Param allocationMode:
Whether the VmbNET API or the transport layer should allocate the frame buffer.
- Param timeout:
The maximum time to wait for a frame, regardless of whether a frame was filled.
- Throws VmbTimeoutException:
Thrown if a timeout occurs.
- Return:
A single frame.
- IFrame AcquireSingleImage (TimeSpan timeout)
Convenience method for acquiring a single image synchronously.
This is a special case of AcquireSingleImage(AllocationModeValue, TimeSpan) in which
allocationMode
is set to ICapturingModule.AllocationModeValue.AnnounceFrame.- Return:
A single frame.
- IFrameList AcquireMultipleImages (UInt32 frameCount, AllocationModeValue allocationMode, TimeSpan timeout)
Convenience method for acquiring multiple images synchronously.
Calling this method while a stream is opened via OpenStream is not supported. Assumes the camera has the GenICam Standard Features Naming Convention conforming command features “AcquisitionStart” and “AcquisitionStop” for starting and stopping the acquisition. Each frame’s unmanaged data is deallocated when the corresponding instance of IFrame is disposed.
- Param frameCount:
The number of frames to fill.
- Param allocationMode:
Whether the VmbNET API or the transport layer should allocate the frame buffers.
- Param timeout:
The maximum time to wait for each frame, regardless of whether a frame was filled.
- Throws VmbTimeoutException:
Thrown if a timeout occurs.
- Return:
The filled frames. May be less than the number of frames requested if a timeout occurred.
- IFrameList AcquireMultipleImages (UInt32 frameCount, TimeSpan timeout)
Convenience method for acquiring multiple images synchronously.
This is a special case of AcquireMultipleImages(UInt32, AllocationModeValue, TimeSpan) in which
allocationMode
is set to ICapturingModule.AllocationModeValue.AnnounceFrame.- Return:
The filled frames. May be less than the number of frames requested if a timeout occurred.
- IAcquisition StartFrameAcquisition (AllocationModeValue allocationMode, UInt32 bufferCount)
Convenience method for acquiring and capturing frames asynchronously.
Event handlers registered on ICapturingModule.FrameReceived will receive frames when they are filled. Calling this method while a stream is opened via OpenStream is not supported. Assumes the camera has the GenICam Standard Features Naming Convention conforming command features “AcquisitionStart” and “AcquisitionStop” for starting and stopping the acquisition.
- Param allocationMode:
Whether the VmbNET API or the transport layer should allocate the frame buffers.
- Param bufferCount:
The number of frame buffers to use.
- Return:
An instance for controlling the acquisition and capturing.
- IAcquisition StartFrameAcquisition ()
Convenience method for acquiring and capturing frames asynchronously.
This is a special case of StartFrameAcquisition(AllocationModeValue, UInt32) in which
allocationMode
is set to ICapturingModule.AllocationModeValue.AnnounceFrame andbufferCount
is set to 5.- Return:
An instance for controlling the acquisition and capturing.
- void Close ()
Convenience method for closing an open camera in case the disposable pattern is not desired.
Once called, the next call to one of the ICamera.Open() methods will open the camera. Using this method is discouraged in favor of the disposable pattern.
ILocalDevice
- VmbNET::ILocalDevice
- Interface for accessing a local device.
IStream
- interface VmbNET.IStream : VmbNET.IPersistableFeatureContainer, VmbNET.ICapturingModule, IDisposable
Interface for accessing an open stream.
When used via the disposable pattern, the stream will be closed when IDisposable.Dispose() has been called on all instances of the stream.
Public Functions
- void Close ()
Convenience method for closing a stream in case the disposable pattern is not desired.
Once called, the next call to IOpenCamera.OpenStream(UInt32) with the same index will open the stream. Using this method is discouraged in favor of the disposable pattern.
IPersistableFeatureContainer
- interface VmbNET.IPersistableFeatureContainer : VmbNET.IFeatureContainer
Interface for loading, saving and accessing features of a module.
Subclassed by VmbNET.IInterface, VmbNET.IOpenCamera, VmbNET.IStream, VmbNET.ITransportLayer
Public Functions
- void LoadSettings (string xmlFilePath, FeaturePersistSettings featurePersistSettings)
Load a module’s settings (features’ states) from an XML file, controlling how the settings are loaded.
If an error occurs, some settings may have been set to those in the XML file.
- Param xmlFilePath:
The absolute path, or path relative to the current working directory, to load the settings from.
- Param featurePersistSettings:
Information controlling how the settings are loaded.
- void LoadSettings (string xmlFilePath)
Load a module’s settings (features’ states) from an XML file.
The default values in FeaturePersistSettings are used to control how the settings are loaded: All settings will be loaded except LUT. A maximum of 5 iterations is performed. Only errors are logged. If an error occurs, some settings may have been set to those in the XML file.
- Param xmlFilePath:
The absolute path, or path relative to the current working directory, to load the settings from.
- void SaveSettings (string xmlFilePath, FeaturePersistSettings featurePersistSettings)
Save a module’s settings (features’ states) to an XML file, controlling how the settings are saved.
- Param xmlFilePath:
The absolute path, or path relative to the current working directory, to save the settings to.
- Param featurePersistSettings:
Information controlling how the settings are saved.
- void SaveSettings (string xmlFilePath)
Save a module’s settings (features’ states) to an XML file.
The default values in FeaturePersistSettings are used to control how the settings are saved:
All settings will be saved except LUT.
A maximum of 5 iterations is performed.
Only errors are logged.
- Param xmlFilePath:
The absolute path, or path relative to the current working directory, to save the settings to.
IFeatureContainer
- interface VmbNET.IFeatureContainer
Interface for accessing features of a module or chunk data.
Subclassed by VmbNET.IPersistableFeatureContainer
Properties
- dynamic Features { get; set; }
Property containing all features of a module.
Exists as a dynamic type which, depending on the context, behaves like an instance of a class in which the module’s or chunk data’s features are exposed as dynamic properties each of whose underlying type is that of the feature itself (e.g. see “IFloatFeature”). This property can also be treated as an enumerable whose enumerator returns each dynamic feature.
<![CDATA[ // Display and change a camera's exposure time, treating the exposure time feature as a dynamic type. try { Console.WriteLine($"Changing camera's ExposureTime from {openCamera.Features.ExposureTime} to 3000.0"); openCamera.Features.ExposureTime = 3000.0; } catch(VmbNETException ex) { Console.WriteLine($"""Caught exception of type VmbNETException with message "{ex.Message}""""); } // Display and change a camera's exposure time, treating the exposure time feature as a static type. try { IFloatFeature exposureTimeFeature = openCamera.Features.ExposureTime; Console.WriteLine($"Changing camera's ExposureTime from {exposureTimeFeature.Value} to 4000.0"); exposureTimeFeature.Value = 4000.0; } catch(VmbNETException ex) { Console.WriteLine($"""Caught exception of type VmbNETException with message "{ex.Message}""""); } // List all of a camera's features and also change its exposure time, treating the exposure time feature as a static type. foreach (var dynamicFeature in openCamera.Features) { IFeature feature = dynamicFeature; Console.WriteLine($"Camera has feature {feature.Name}"); if (feature.FeatureDataType == VmbFeatureData.Float && feature.FeatureFlags == VmbFeatureFlags.FlagsWrite && feature.Name == "ExposureTime") { IFloatFeature exposureTimeFeature = dynamicFeature; Console.WriteLine($"Changing camera's ExposureTime from {exposureTimeFeature.Value} to 5000.0"); exposureTime.Value = 5000.0; } } ]]>
Acquisition Interfaces
IStreamCapture
- interface VmbNET.IStreamCapture : IDisposable
Interface for capturing.
Public Functions
- IFrame WaitForFrame (TimeSpan timeout)
Block until a frame is received synchronously or the specified timeout occurs, whichever happens first.
A buffer to contain the received frame’s data is implicitly queued.
- Param timeout:
The time after at least which this method shall return, regardless of whether a frame arrived.
- Throws VmbTimeoutException:
Thrown if a timeout occurs.
- Return:
The received frame.
- void TearDown ()
Convenience method for tearing down the capturing in case the disposable pattern is not desired.
Once called, the next call to ICapturingModule.PrepareCapture(ICapturingModule.AllocationModeValue, UInt32) or ICapturingModule.PrepareCapture(IFrameBufferPool) will prepare the capturing. Using this method is discouraged in favor of the disposable pattern.
IAcquisition
- interface VmbNET.IAcquisition : IDisposable
Interface for acquiring and capturing frames asynchronously.
Returned by IOpenCamera.StartFrameAcquisition(). When used via the disposable pattern, the acquisition and capturing will be stopped when IDisposable.Dispose() has been called on all instances.
Public Functions
- void Stop ()
Convenience method for stopping the acquisition and capturing. Using this method is discouraged in favor of the disposable pattern.
ICapturingModule
- interface VmbNET.ICapturingModule
Interface for capturing frames from a module.
Subclassed by VmbNET.IOpenCamera, VmbNET.IStream
Public Types
Public Functions
- IStreamCapture PrepareCapture (AllocationModeValue allocationMode, UInt32 bufferCount)
Prepare VmbC for capturing from the module.
Any event handlers that are registered on the ICapturingModule.FrameReceived event will receive frames that VmbC has received from the camera. Event handlers can be registered before or after this method is called. If is set to AllocationModeValue.AnnounceFrame, frame buffers are allocated internally by VmbNET, i.e., internally, the default implementation of IFrameBufferPool, FrameBufferPool, is used. The returned IStreamCapture instance can be used for either synchronous acquisition or asynchronous acquisition, but not both. Any event handlers for asynchronous acquisition that are registered on the ICapturingModule.FrameReceived event will receive frames that VmbC has received from the camera. Event handlers can be registered before or after this method is called.
- Param allocationMode:
Whether the VmbNET API (AllocationModeValue.AnnounceFrame) or the transport layer (AllocationModeValue.AllocAndAnnounceFrame) should allocate the frame data.
- Param bufferCount:
The number of frame buffers to use.
- Return:
An instance for controlling the capturing.
- IStreamCapture PrepareCapture ()
Prepare VmbC for capturing from the module with default settings.
This is a special case of PrepareCapture(AllocationModeValue, UInt32) in which
allocationMode
is set to AllocationModeValue.AnnounceFrame andbufferCount
is set to 5.- Return:
An instance for controlling the capturing.
- IStreamCapture PrepareCapture (IFrameBufferPool frameBufferPool)
Prepare VmbC for capturing from the module.
The procedure for allocating and deallocating frame buffers is implemented by the user. If one of the overloaded methods ICapturingModule.PrepareCapture() was called before and the returned instance was not disposed, the same IStreamCapture instance will be returned and no new capturing will be prepared.
- Param frameBufferPool:
The user-defined implementation for managing a frame buffer pool.
- Return:
An instance of IStreamCapture.
- void RemoveAllFrameEventHandlers ()
Remove all event handlers registered to the event FrameReceived.
Properties
- UInt32 StreamAlignment { get; set; }
Convenience method for getting the alignment to use when allocating frame buffers. Attempts to use the GenICam Standard Features Naming Convention conforming integer feature “StreamBufferAlignment”. If that feature is not present or has a negative value, a value of 1 will be assumed.
- UInt32 PayloadSize { get; set; }
Get the required size in bytes of each frame buffer to be allocated.
Events
- event EventHandler<FrameReceivedEventArgs> FrameReceived
Event for receiving filled frames.
All registered event handlers can be removed by calling RemoveAllFrameEventHandlers().
IFrameList
- interface VmbNET.IFrameList : IReadOnlyList<IFrame>, IDisposable
Interface for accessing a list of filled frames.
An instance of this interface is returned by the convenience method IOpenCamera.AcquireMultipleImages(UInt32, TimeSpan). It must be disposed when access to the frames is completed. Disposing the instance will dispose each frame.
Public Functions
- void ReleaseAllFramesAndClear ()
Convenience method for releasing all frames and clearing the list in case the disposable pattern is not desired.
Once called, the list should not be used again. Using this method is discouraged in favor of the disposable pattern.
IFrameBufferPool
- interface VmbNET.IFrameBufferPool : IReadOnlyList<BufferTuple>, IDisposable
Interface for accessing a frame buffer pool.
Note that each buffer must be provided (via e.g. indexing) as a tuple of type
( IntPtr, UInt32 )
, where the first field of type IntPtr is the pointer to the start of the buffer and the second field of type UInt32 is the buffer size. The concrete implementation is provided by the user so that she / he can specify how buffers should be acquired before being handed over to VmbC and how they should be released after the system has finished with them. For example, the buffers might be allocated on the heap and later deallocated, or are they are obtained from a third party library and later returned. The default implementation FrameBufferPool can be used and serves most needs, or the user can easily adapt it to her / his needs. The API using the disposable pattern internally to callDispose()
when it no longer has access to the frame buffers.Subclassed by VmbNET.FrameBufferPool
- class FrameBufferPoolEnumerator : public IEnumerator<BufferTuple>
Implementation of the enumerator returned by FrameBufferPool.GetEnumerator, which should serve most needs.
Public Functions
- FrameBufferPoolEnumerator (IFrameBufferPool bufferPool)
Constructor.
- Param bufferPool:
The instance of the user-implemented frame buffer pool.
- void Dispose ()
Dispose the enumerator.
No action required.
- bool MoveNext ()
Move to the next item in the list.
- Return:
True if there was a next item.
- void Reset ()
Reset the iterator such that the next call to MoveNext will move to the first position.
Public Members
- IntPtr buffer
The buffer at the current position.
IFrameBufferPool
- interface VmbNET.IFrameBufferPool : IReadOnlyList<BufferTuple>, IDisposable
Interface for accessing a frame buffer pool.
Note that each buffer must be provided (via e.g. indexing) as a tuple of type
( IntPtr, UInt32 )
, where the first field of type IntPtr is the pointer to the start of the buffer and the second field of type UInt32 is the buffer size. The concrete implementation is provided by the user so that she / he can specify how buffers should be acquired before being handed over to VmbC and how they should be released after the system has finished with them. For example, the buffers might be allocated on the heap and later deallocated, or are they are obtained from a third party library and later returned. The default implementation FrameBufferPool can be used and serves most needs, or the user can easily adapt it to her / his needs. The API using the disposable pattern internally to callDispose()
when it no longer has access to the frame buffers.Subclassed by VmbNET.FrameBufferPool
- class FrameBufferPoolEnumerator : public IEnumerator<BufferTuple>
Implementation of the enumerator returned by FrameBufferPool.GetEnumerator, which should serve most needs.
Public Functions
- FrameBufferPoolEnumerator (IFrameBufferPool bufferPool)
Constructor.
- Param bufferPool:
The instance of the user-implemented frame buffer pool.
- void Dispose ()
Dispose the enumerator.
No action required.
- bool MoveNext ()
Move to the next item in the list.
- Return:
True if there was a next item.
- void Reset ()
Reset the iterator such that the next call to MoveNext will move to the first position.
Public Members
- IntPtr buffer
The buffer at the current position.
IFrame
- interface VmbNET.IFrame : IDisposable
Interface accessing frame data metadata.
When the frame data is no longer needed, IDisposable.Dispose() must be called on all instances of the frame.
Public Types
- enum FrameStatusValue
Status of a received frame.
Values:
- Completed
Frame was completely filled without errors
- Incomplete
Frame could not be completely filled to the end
- TooSmall
Frame buffer was too small
- Invalid
Frame buffer was invalid
- enum VmbPixelTypeValue
Indicates whether pixel data contains monochrome or RGB information.
Values:
- Mono
Monochrome pixel
- Color
RGB
- enum VmbPixelOccupyTypeValue
Indicates the number of bits used for each pixel’s data.
Values:
- Bit8
Pixel data effectively occupies 8 bits
- Bit10
Pixel data effectively occupies 10 bits
- Bit12
Pixel data effectively occupies 12 bits
- Bit14
Pixel data effectively occupies 14 bits
- Bit16
Pixel data effectively occupies 16 bits
- Bit24
Pixel data effectively occupies 24 bits
- Bit32
Pixel data effectively occupies 32 bits
- Bit48
Pixel data effectively occupies 48 bits
- Bit64
Pixel data effectively occupies 64 bits
- enum PixelFormatValue
Pixel format types.
As far as possible, the Pixel Format Naming Convention (PFNC) has been followed, but allowing for a few deviations. This allows pixel formats returned as strings from GenICam-conforming cameras to be converted to enum types. If data spans more than one byte, it is always LSB aligned, except if stated differently.
Values:
- Mono8
Monochrome, 8 bits (PFNC: Mono8)
- Mono10
Monochrome, 10 bits in 16 bits (PFNC: Mono10)
- Mono10p
Monochrome, 10 bits in 16 bits (PFNC: Mono10p)
- Mono12
Monochrome, 12 bits in 16 bits (PFNC: Mono12)
- Mono12Packed
Monochrome, 2x12 bits in 24 bits (GEV:Mono12Packed)
- Mono12p
Monochrome, 2x12 bits in 24 bits (PFNC: MonoPacked)
- Mono14
Monochrome, 14 bits in 16 bits (PFNC: Mono14)
- Mono16
Monochrome, 16 bits (PFNC: Mono16)
- BayerGR8
Bayer-color, 8 bits, starting with GR line (PFNC: BayerGR8)
- BayerRG8
Bayer-color, 8 bits, starting with RG line (PFNC: BayerRG8)
- BayerGB8
Bayer-color, 8 bits, starting with GB line (PFNC: BayerGB8)
- BayerBG8
Bayer-color, 8 bits, starting with BG line (PFNC: BayerBG8)
- BayerGR10
Bayer-color, 10 bits in 16 bits, starting with GR line (PFNC: BayerGR10)
- BayerRG10
Bayer-color, 10 bits in 16 bits, starting with RG line (PFNC: BayerRG10)
- BayerGB10
Bayer-color, 10 bits in 16 bits, starting with GB line (PFNC: BayerGB10)
- BayerBG10
Bayer-color, 10 bits in 16 bits, starting with BG line (PFNC: BayerBG10)
- BayerGR12
Bayer-color, 12 bits in 16 bits, starting with GR line (PFNC: BayerGR12)
- BayerRG12
Bayer-color, 12 bits in 16 bits, starting with RG line (PFNC: BayerRG12)
- BayerGB12
Bayer-color, 12 bits in 16 bits, starting with GB line (PFNC: BayerGB12)
- BayerBG12
Bayer-color, 12 bits in 16 bits, starting with BG line (PFNC: BayerBG12)
- BayerGR12Packed
Bayer-color, 2x12 bits in 24 bits, starting with GR line (GEV:BayerGR12Packed)
- BayerRG12Packed
Bayer-color, 2x12 bits in 24 bits, starting with RG line (GEV:BayerRG12Packed)
- BayerGB12Packed
Bayer-color, 2x12 bits in 24 bits, starting with GB line (GEV:BayerGB12Packed)
- BayerBG12Packed
Bayer-color, 2x12 bits in 24 bits, starting with BG line (GEV:BayerBG12Packed)
- BayerGR10p
Bayer-color, 10 bits continuous packed, starting with GR line (PFNC: BayerGR10p)
- BayerRG10p
Bayer-color, 10 bits continuous packed, starting with RG line (PFNC: BayerRG10p)
- BayerGB10p
Bayer-color, 10 bits continuous packed, starting with GB line (PFNC: BayerGB10p)
- BayerBG10p
Bayer-color, 10 bits continuous packed, starting with BG line (PFNC: BayerBG10p)
- BayerGR12p
Bayer-color, 12 bits continuous packed, starting with GR line (PFNC: BayerGR12p)
- BayerRG12p
Bayer-color, 12 bits continuous packed, starting with RG line (PFNC: BayerRG12p)
- BayerGB12p
Bayer-color, 12 bits continuous packed, starting with GB line (PFNC: BayerGB12p)
- BayerBG12p
Bayer-color, 12 bits continuous packed, starting with BG line (PFNC: BayerBG12p)
- BayerGR16
Bayer-color, 16 bits, starting with GR line (PFNC: BayerGR16)
- BayerRG16
Bayer-color, 16 bits, starting with RG line (PFNC: BayerRG16)
- BayerGB16
Bayer-color, 16 bits, starting with GB line (PFNC: BayerGB16)
- BayerBG16
Bayer-color, 16 bits, starting with BG line (PFNC: BayerBG16)
- RGB8
RGB, 8 bits x 3 (PFNC: RGB8)
- BGR8
BGR, 8 bits x 3 (PFNC: BGR8)
- RGB10
RGB, 12 bits in 16 bits x 3 (PFNC: RGB12)
- BGR10
RGB, 12 bits in 16 bits x 3 (PFNC: RGB12)
- RGB12
RGB, 12 bits in 16 bits x 3 (PFNC: RGB12)
- BGR12
RGB, 12 bits in 16 bits x 3 (PFNC: RGB12)
- RGB14
RGB, 14 bits in 16 bits x 3 (PFNC: RGB12)
- BGR14
RGB, 14 bits in 16 bits x 3 (PFNC: RGB12)
- RGB16
RGB, 16 bits x 3 (PFNC: RGB16)
- BGR16
RGB, 16 bits x 3 (PFNC: RGB16)
- aRGB8
ARGB, 8 bits x 4 (PFNC: RGBa8)
- RGBa8
RGBA, 8 bits x 4, legacy name
- BGRa8
BGRA, 8 bits x 4 (PFNC: BGRa8)
- RGBa10
RGBA, 8 bits x 4, legacy name
- BGRa10
RGBA, 8 bits x 4, legacy name
- RGBa12
RGBA, 8 bits x 4, legacy name
- BGRa12
RGBA, 8 bits x 4, legacy name
- RGBa14
RGBA, 8 bits x 4, legacy name
- BGRa14
RGBA, 8 bits x 4, legacy name
- RGBa16
RGBA, 8 bits x 4, legacy name
- BGRa16
RGBA, 8 bits x 4, legacy name
- Yuv411
YUV 4:1:1 with 8 bits (PFNC: YUV411_8_UYYVYY, GEV:YUV411Packed)
- Yuv422
YUV 4:2:2 with 8 bits (PFNC: YUV422_8_UYVY, GEV:YUV422Packed)
- Yuv444
YUV 4:4:4 with 8 bits (PFNC: YUV8_UYV, GEV:YUV444Packed)
- Yuv422_8
YUV 4:2:2 with 8 bits Channel order YUYV (PFNC: YUV422_8)
- YCbCr8_CbYCr
YCbCr 4:4:4 with 8 bits (PFNC: YCbCr8_CbYCr) - identical to IFrame.PixelFormatValue.Yuv444
- YCbCr422_8
YCbCr 4:2:2 8-bit YCbYCr (PFNC: YCbCr422_8)
- YCbCr411_8_CbYYCrYY
YCbCr 4:1:1 with 8 bits (PFNC: YCbCr411_8_CbYYCrYY) - identical to IFrame.PixelFormatValue.Yuv411
- YCbCr601_8_CbYCr
YCbCr601 4:4:4 8-bit CbYCrt (PFNC: YCbCr601_8_CbYCr)
- YCbCr601_422_8
YCbCr601 4:2:2 8-bit YCbYCr (PFNC: YCbCr601_422_8)
- YCbCr601_411_8_CbYYCrYY
YCbCr601 4:1:1 8-bit CbYYCrYY (PFNC: YCbCr601_411_8_CbYYCrYY)
- YCbCr709_8_CbYCr
YCbCr709 4:4:4 8-bit CbYCr (PFNC: YCbCr709_8_CbYCr)
- YCbCr709_422_8
YCbCr709 4:2:2 8-bit YCbYCr (PFNC: YCbCr709_422_8)
- YCbCr709_411_8_CbYYCrYY
YCbCr709 4:1:1 8-bit CbYYCrYY (PFNC: YCbCr709_411_8_CbYYCrYY)
- YCbCr422_8_CbYCrY
YCbCr 4:2:2 with 8 bits (PFNC: YCbCr422_8_CbYCrY) - identical to IFrame.PixelFormatValue.Yuv422
- YCbCr601_422_8_CbYCrY
YCbCr601 4:2:2 8-bit CbYCrY (PFNC: YCbCr601_422_8_CbYCrY)
- YCbCr709_422_8_CbYCrY
YCbCr709 4:2:2 8-bit CbYCrY (PFNC: YCbCr709_422_8_CbYCrY)
- YCbCr411_8
YCbCr 4:1:1 8-bit YYCbYYCr (PFNC: YCbCr411_8)
- YCbCr8
YCbCr 4:4:4 8-bit YCbCr (PFNC: YCbCr8)
- enum PayloadTypeValue
Frame payload type.
Values:
- Unknown
Unknown payload type
- Image
image data
- Raw
raw data
- File
file data
- JPEG
JPEG data as described in the GigEVision 2.0 specification
- PEG2000
JPEG 2000 data as described in the GigEVision 2.0 specification
- H264
H.264 data as described in the GigEVision 2.0 specification
- ChunkOnly
Chunk data exclusively
- DeviceSpecific
Device specific data format
- GenDC
GenDC data
- enum AvailableInfoValues
Values indicating information provided in the received frames.
Values:
- None
No additional information is provided
- FrameId
FrameId is provided
- PayloadType
PayloadType is provided
- ContainsChunkData
ContainsChunkData is
true
Public Functions
- void AccessChunkData (Action<IFeatureContainer> chunkFeatureContainerAction)
Method to access chunk data.
The
Action
is executed on the same thread as the thread used to call this method, i.e. this method blocks untilchunkFeatureContainerAction
completes.- Param chunkFeatureContainerAction:
A user-provided
Action
whose implementation can access the frame’s chunk data from an instance of IFeatureContainer.
- void Release ()
Convenience method for allowing VmbC to overwrite frame data again in case the disposable pattern is not desired.
Once called, the frame data should not be accessed until it has been received from VmbC again. Using this method is discouraged in favor of the disposable pattern.
Properties
- UInt64 Id { get; set; }
The frame’s ID.
The ID is unique to the set of frames associated with a given stream.
- IntPtr Buffer { get; set; }
The address of the start of the unmanaged buffer data.
- UInt32 BufferSize { get; set; }
The size in bytes of the buffer data.
- IntPtr ImageData { get; set; }
The address of the start of the unmanaged image data.
Usually this is Buffer plus the size of the chunk data, if present. It is
null
if no image data is present.
- FrameStatusValue FrameStatus { get; set; }
The frame’s status.
- PayloadTypeValue PayloadType { get; set; }
The payload’s type.
- PixelFormatValue PixelFormat { get; set; }
The image’s pixel format.
- UInt32 Width { get; set; }
The image’s width.
- UInt32 Height { get; set; }
The image’s height.
- UInt32 OffsetX { get; set; }
The image’s horizontal offset.
- UInt32 OffsetY { get; set; }
The image’s vertical offset.
- UInt64 Timestamp { get; set; }
The frame’s timestamp as set by the camera.
- bool ContainsChunkData { get; set; }
Whether chunk data is present in the frame buffer.
Feature Interfaces
IFeature
- interface VmbNET.IFeature
Interface for accessing a feature’s metadata.
Subclassed by VmbNET.IBoolFeature, VmbNET.ICommandFeature, VmbNET.IEnumFeature, VmbNET.IFloatFeature, VmbNET.IIntFeature, VmbNET.IRawFeature, VmbNET.IStringFeature
Public Types
- enum TypeValue
Supported feature types.
Values:
- Unknown
Unknown feature type
- Int
64-bit integer feature
- Float
64-bit floating point feature
- Enum
Enumeration feature
- String
String feature
- Bool
Boolean feature
- Command
Command feature
- Raw
Raw (direct register access) feature
- None
Feature with no data
- enum VisibilityValue
Feature Visibility.
Values:
- Unknown
Feature visibility is not known
- Beginner
Feature is visible in feature list (beginner level)
- Expert
Feature is visible in feature list (expert level)
- Guru
Feature is visible in feature list (guru level)
- Invisible
Feature is visible in the feature list, but should be hidden in GUI applications
- enum AccessValues
Feature accessibility flags.
Values:
- None
No additional information is provided.
- Read
Static info about read access. Current status depends on access mode, check with IsReadable and IsWriteable.
- Write
Static info about write access. Current status depends on access mode, check with IsReadable and IsWriteable.
- Volatile
Value may change at any time.
- ModifyWrite
Value may change after a write.
Public Functions
- bool IsReadable ()
The dynamic read capability of this feature.
This may change between calls, depending on the camera status.
- bool IsWriteable ()
The dynamic write capability of this feature.
This may change between calls, depending on the camera status.
Properties
- string Name { get; set; }
Name used in the API.
- string DisplayName { get; set; }
Name to be used in GUIs.
- string Tooltip { get; set; }
Short description, e.g. for a tooltip.
- string Description { get; set; }
Longer description.
- string Category { get; set; }
Category that this feature can be found in.
- string SfncNamespace { get; set; }
GenICam Standard Features Naming Convention namespace that this feature resides in.
- AccessValues AccessFlags { get; set; }
Access flags for this feature.
- VisibilityValue Visibility { get; set; }
GUI visibility.
- dynamic SelectedFeatures { get; set; }
Features that can be selected by this feature.
- bool IsStreamable { get; set; }
Whether this feature can be stored to / loaded from a file.
- UInt32 PollingTime { get; set; }
Predefined polling time for this feature if it is a volatile feature.
Events
- event EventHandler<FeatureChangedEventArgs> Changed
Event for receiving updates to this feature.
All registered event handlers can be removed by calling RemoveAllChangedEventHandlers().
IBoolFeature
- interface VmbNET.IBoolFeature : VmbNET.IFeature
Interface for accessing a boolean feature.
Properties
- bool Value { get; set; }
Get the current value or set the value.
IIntFeature
- interface VmbNET.IIntFeature : VmbNET.IFeature
Interface for accessing an integer feature.
Properties
- Int64 Value { get; set; }
Get the current value or set the value.
- Int64 Maximum { get; set; }
The maximum value.
- Int64 Minimum { get; set; }
The minimum value.
- Int64 Increment { get; set; }
The feature’s increment.
- bool HasValidValues { get; set; }
Whether the feature’s valid values are specified.
- Int64 > ValidValues { get; set; }
Get all valid integer values.
- string Representation { get; set; }
Representation of this feature.
- string Unit { get; set; }
Measuring unit that applies to the value of the feature.
IFloatFeature
- interface VmbNET.IFloatFeature : VmbNET.IFeature
Interface for accessing a float feature.
Properties
- double Value { get; set; }
Get the current value or set the value.
- double Maximum { get; set; }
The maximum value.
- double Minimum { get; set; }
The minimum value.
- bool HasIncrement { get; set; }
Whether the feature has an increment.
- double Increment { get; set; }
The feature’s increment.
- string Representation { get; set; }
Representation of this feature.
- string Unit { get; set; }
Measuring unit that applies to the value of the feature.
IStringFeature
- interface VmbNET.IStringFeature : VmbNET.IFeature
Interface for accessing a string feature.
IEnumFeature
- interface VmbNET.IEnumFeature : VmbNET.IFeature
Interface for accessing an enum feature.
Properties
- string Value { get; set; }
Get the value of the current enum entry’s name or set the enum entry via the enum entry’s name.
- IEnumEntry EnumEntry { get; set; }
Get the current enum entry.
- IEnumEntry > EnumEntriesByName { get; set; }
Get all valid enum entry values as a dictionary with the entry name as key.
IEnumEntry
- interface VmbNET.IEnumEntry
Interface for accessing an enum feature’s value
Properties
- string Name { get; set; }
Name used in the API.
- string DisplayName { get; set; }
Name to be used in GUIs.
- string Tooltip { get; set; }
Short description, e.g. for a tooltip.
- string Description { get; set; }
Longer description.
- string SfncNamespace { get; set; }
GenICam Standard Features Naming Convention namespace that this feature resides in.
- IFeature.VisibilityValue Visibility { get; set; }
GUI visibility.
- Int64 IntValue { get; set; }
The integer value for this enumeration entry.
- bool IsAvailable { get; set; }
Whether this enumeration entry is available.
ICommandFeature
- interface VmbNET.ICommandFeature : VmbNET.IFeature
Interface for accessing a command feature.
Public Functions
- Task Run (TimeSpan timeout)
Run the command and wait on a background thread for the command to complete.
- Param timeout:
The time to wait for the command to complete, regardless of whether a frame arrived.
- Throws VmbTimeoutException:
Thrown if a timeout occurs.
- Return:
An instance of Task to await for the background thread to complete.
- void Run ()
Run the command.
The command may not have completed when this method returns. The property IsDone can be used at any time later to check whether the command has completed.
Properties
- bool IsDone { get; set; }
Check whether the command is done or is still in progress.
This would be used after calling Run() (i.e. without a timeout). This will return
true
only after a sufficient amount of time has passed since the call to Run(), to allow the command to be done.- Return:
true
if the command is done.
IRawFeature
- interface VmbNET.IRawFeature : VmbNET.IFeature
Interface for accessing a raw feature (direct register access).
Classes
CameraListEventArgs
- class VmbNET.CameraListEventArgs : EventArgs
Class providing information about a camera which has changed.
This type is used as the event arguments for IVmbSystem.CameraListChanged.
Properties
- ListChangedEventType ListChangedEventType { get; set; }
The camera’s event.
FeatureChangedEventArgs
- class VmbNET.FeatureChangedEventArgs : EventArgs
Class for obtaining a feature that has changed.
This type is used as the event arguments for IFeature.Changed
Properties
- dynamic Feature { get; set; }
The feature which has changed.
InterfaceListEventArgs
- class VmbNET.InterfaceListEventArgs : EventArgs
Class providing information about an interface which has changed.
This type is used as the event arguments for IVmbSystem.InterfaceListChanged.
Properties
- IInterface Interface { get; set; }
The interface’s instance.
- ListChangedEventType ListChangedEventType { get; set; }
The interface’s event.
VmbNETException
- class VmbNET.VmbNETException : Exception
General exceptions thrown by VmbNET.
Subclassed by VmbNET.VmbException< TSourceError >, VmbNET.VmbTimeoutException
VmbException
- class VmbNET.VmbException<TSourceError> : VmbNET.VmbNETException
Exceptions thrown whenever VmbC functions return an error code.
- Tparam TSourceError:
A type indicating the source of the error, e.g. SystemError.
Public Members
- VmbException(ILogger logger, string message, VmbErrorCode errorCode) VmbErrorCode ErrorCode
The VmbC error code that caused the exception.
VmbTimeoutException
- class VmbNET.VmbTimeoutException : VmbNET.VmbNETException
Exception thrown whenever VmbC functions return an error code whose value is VmbErrorCode.Timeout.
Public Members
- VmbTimeoutException(ILogger logger, string message, VmbErrorCode errorCode) VmbTimeoutException(ILogger logger, string message) VmbErrorCode ErrorCode
The VmbC error code that caused the exception.
FeaturePersistSettings
- class VmbNET.FeaturePersistSettings
Class storing information for controlling how module settings are loaded or saved.
Public Types
- enum TypeValue
Values for the type of settings to be loaded or saved.
Used as the type for property Type.
Values:
- All
All features including LUT.
- Streamable
All features marked as streamable, excluding LUT.
- NoLUT
All features excluding LUT.
- enum ModuleValues
Flags for specifying which modules’ features are to be loaded or saved.
Values:
- None
Load or save features for no module.
- TransportLayer
Load or save the transport layer features.
- Interface
Load or save the interface features.
- Camera
Load or save the camera features.
- LocalDevice
Load or save the local device features.
- Streams
Load or save the stream features.
- All
Load or save features for all modules.
- enum LogLevelValue
Values for the type of logging while loading or saving settings.
Used as the type for property LogLevel.
Values:
- None
No logging regardless of severity of the issue.
- Error
Only error messages are logged.
- Debug
Only error and debug messages are logged.
- Warn
Only error, debug and warn messages are logged.
- Trace
All messages are logged.
Properties
- ModuleValues Modules { get; set; }
The types of modules whose settings should be loaded or saved
- UInt32 MaximumIterations { get; set; } = ModuleValues.All
Number of iterations when loading settings from the XML file.
- LogLevelValue LogLevel { get; set; }
The type of logging to be done while loading or saving settings.
FrameBufferPool
- class VmbNET.FrameBufferPool : VmbNET.IFrameBufferPool
Default implementation of IFrameBufferPool.
Provided for convenience. Used by VmbNET as the default pool. It should serve most needs, or the user can easily adapt it to her / his needs. Note that buffers are lazily allocated as unmanaged data on the heap.
Public Functions
- FrameBufferPool (UInt32 bufferCount, UInt32 bufferSize, ILogger logger)
Constructor for the frame buffer pool.
Use the other contructor if logging is required.
- Param bufferCount:
The number of buffers that the frame buffer pool should contain.
- Param bufferSize:
The size of each buffer in bytes.
- Param logger:
A logger for logging the behaviour and use of the instance.
- FrameBufferPool (UInt32 bufferCount, UInt32 bufferSize, UInt32 bufferAlignment)
Constructor for the frame buffer pool with memory buffer alignment.
- Param bufferCount:
The number of buffers that the frame buffer pool should contain.
- Param bufferSize:
The size of each buffer in bytes.
- Param bufferAlignment:
The alignment in bytes to use for each buffer.
- FrameBufferPool (UInt32 bufferCount, UInt32 bufferSize, UInt32 bufferAlignment, ILogger logger)
Constructor for the frame buffer pool with logging included.
- Param bufferCount:
The number of buffers that the frame buffer pool should contain.
- Param bufferSize:
The size of each buffer in bytes.
- Param bufferAlignment:
The alignment in bytes to use for each buffer.
- Param logger:
A logger for logging the behaviour and use of the instance.
- void Dispose ()
Dispose the buffer pool.
Deallocates all buffers allocated so far.
- IEnumerator<(IntPtr buffer, UInt32 bufferSize)> GetEnumerator ()
Get the enumerator for iteration over the buffers.
- Return:
The enumerator as an instance of IFrameBufferPool.FrameBufferPoolEnumerator.
FrameReceivedEventArgs
- class VmbNET.FrameReceivedEventArgs : EventArgs
Class providing information about a received frame.
Public Members
Properties
- IOpenCamera OpenCamera { get; set; }
Get the open camera from which this frame originated.
Other Enums
TransportLayerType
- enum VmbNET.TransportLayerType
Camera or transport layer type (for instance U3V or GEV).
Values:
- Unknown
Interface is not known to this version of the API
- GEV
GigE Vision
- CL
Camera Link
- IIDC
IIDC 1394
- UVC
USB video class
- CXP
CoaXPress
- CLHS
Camera Link HS
- U3V
USB3 Vision Standard
- Ethernet
Generic Ethernet
- PCI
PCI / PCIe
- Custom
Non standard
- Mixed
Mixed (transport layer only)
ListChangedEventType
- enum VmbNET.ListChangedEventType
Events that can be fired as a result of a change in a module.
Values:
- Missing
A known module disappeared from the bus.
- Detected
A new module was discovered.
- Reachable
A known module can be accessed.
- Unreachable
A known module cannot be accessed anymore.
- Unknown
An unknown event occurred.