Vimba für Windows Architektur

Vimba für Linux Architektur

APIs

Vimba bietet drei APIs:
Die C API ist Vimbas einfach zu nutzende Basis-API. Sie kann auch als API für C++ Applikationen genutzt werden.
Die Vimba C++ API hat eine anspruchsvolle Klassenarchitektur. Sie ist eine hocheffiziente API für fortgeschrittenes objektorientiertes Programmieren inklusive STL (Standard Template Library), Shared Pointer und Interfaceklassen. Wenn Sie eine API mit weniger Design Patterns bevorzugen, empfehlen wir die Vimba C API.
Die .NET API unterstützt alle .NET Sprachen wie z.B. C#, C++/CLI oder Visual Basic .NET. Ihr Konzept ähnelt der C++ API.


Alle APIs bieten diese Funktionen:

  • Listen von zurzeit verbundenen Kameras
  • Kontrolle von Kamerafeatures
  • Entgegennehmen von Kamerabildern
  • Benachrichtigungen über Verbinden oder Trennen von Kameras


Die Image Transform Library konvertiert Kamerabilder in andere Pixelformate und erzeugt Farbbilder von RAW Bildern (Debayering). Während dies von der C and C++ API getrennt stattfindet, enthält die .NET API diese Funktionen. Daher muss eine .NET Applikation nicht auf die Image Transform Library zugreifen.


Alle APIs nutzen GenICam Transport Layer (GenTL) Bibliotheken, um mit den Kameras zu kommunizieren.
Auf diese Bibliotheken (Vimba GigE TL, Vimba USB TL und Vimba 1394 TL) kann nicht direkt durch Vimba zugregriffen werden.

Entitäten im Überblick

Dieser grobe Überblick über Vimbas Entitäten erklärt ihre grundlegenden Prinzipien. Die genauen Funktionalitäten hängen von der jeweiligen Programmiersprache ab.


Alle Vimba APIs nutzen das selbe Basismodell, um Zugang zu den Entitäten zu gewährleisten. Für objektorientierte Programmiersprachen wird das Modell im Klassendesign widergespiegelt, aber selbst die C API unterstützt das Modell mit Handles, die verschiedene Entitäten repräsentieren.

Die System Entität repräsentiert die API selbst. Daher steht nur eine Instanz zur Verfügung. Die Applikation muss die System Entität initialisieren, bevor irgendeine andere Funktion genutzt werden kann. Sobald die Applikation die API nicht mehr nutzt, beendet die Applikation sie durch die System Entität. Die System Entitiät beinhaltet intern eine Liste von Interfaces und Kameras. Sie dient als Hauptzugangspunkt zu diesen Entitäten.

 

Die Camera Entität steuert eine physische Kamera und empfängt Bilder von der Kamera. Ihre Funktionen sind unabhängig von der zugrundeliegenden Interfacetechnologie.

Die Interface Entätit repräsentiert einen Port auf einer physischen Interfacekarte im PC. Die Hauptaufgabe der Interface Entität ist das Konfigurieren der Interfacekarte. Auf die Kamera kann direkt über die System Entität zugegriffen werden.

Frames enthalten Bildmetadaten sowie Referenzen zu den Daten, die von der Kamera gesendet wurden (Bilddaten und Ancillary Daten). Um sie in Vimba zu benutzen, müssen sie von der Applikation erzeugt werden und dann an der entsprechenden Kamera gequeued werden. Sobald ein Bild empfangen wurde, wird das nächste verfügbare Frame gefüllt und durch eine spezielle Benachrichtigung an die Applikation übergeben. Nachdem die Bilddaten verarbeitet wurden, soll die Applikation den Frame an die API zurückgeben, indem sie ihn wieder an der Kamera enqueued.

 

Diese Vimba Entitäten können via Features gesteuert und eingerichtet werden:
The System Features enthalten Informationen über API-weite Einstellungen, beispielsweise welche Transport Layer geladen wurden.

Die Camera Features konfigurieren Kameraeinstellungen wie die Belichtungszeit oder das Pixelformat.


Transport Layer

Ein Transport Layer (TL) transportiert die Daten von der Kamera zu einer Applikation auf dem PC. Vimba enthält GenICam Transport Layer (GenTL) für Allied Vision Kameras.

 

Der Vimba GigE TL nutzt optional den Vimba Filter Driver, der unter Windows eine hohe Performance mit weniger CPU Last bietet. Der Vimba Filter Driver kann als 32-Bit oder 64-Bit Version genutzt werden. Er ist kompatibel zu allen Allied Vision GigE Kameras.

 

Der Vimba USB TL nutzt unter Windows den obligatorischen Vimba USB Device Driver. Er kann als 32-Bit oder 64-Bit Version genutzt werden. Er ist kompatibel zu allen Allied Vision USB Kameras.

 

Der Vimba 1394 TL nutzt unter Windows den obligatorischen High-Performance intek Treiber. Er kann als 32-Bit oder 64-Bit Version genutzt werden und ersetzt den Low-Performance Treiber von Microsoft.

 

Der Vimba Camera Link Config TL bietet eine Clallserial.dll, die sich mit der Clserxxx.dll von GenICam-konformen Framegrabbern verbindet.

 

Weil Vimbas Transport Layer GenICam unterstützen, können Allied Vision GigE, USB, 1394 und Camera Link Kameras unkompliziert mit einer GenICam-konformen Softwarelösung von Drittanbietern genutzt werden.

Featurezugriff

Vimba bietet zusätzliche Funktionalitäten, die nicht direkt von API-Funktionen mit GenICam Features ermöglicht werden. Der Zugriff auf diese Features besteht nur über bestimmte Entitäten innerhalb Vimba. Gemäß dem API Entitäten-Modell sind dies:

  • Vimba System bietet Funktionalitäten, um Interfaces und Kameras zu managen.
  • Interface dient zur Konfiguration von Hardware wie z.B. einem GigE Anschluss.
  • Camera bietet Zugang zu allen Features des Camera Device, Datentransport-Features sowie einige Treiber-Features.
  • AncillaryData für jedes Frame.

 

Das Vimba SDK wird inklusive Features Reference Dokumentation installiert.

Erste Schritte

Sobald Sie Vimba installiert haben, hilft Ihnen der automatisch enthaltene Vimba Quickstart Guide, die ersten Bilder zu akquirieren und die Dokumentation und Programmierbeispiele für Ihre Programmiersprache und Ihr Kamerainterface zu finden.