Sapera LT Programmierung

Zusammenfassung

Sapera LT (hier Sapera++ 8.60, P/N OC-SAPM-SPPP0) ist die C++-API von Teledyne DALSA zur Bildakquisition mit Frame Grabbern und GigE-Vision-Kameras. Kernidee: Ein Server-Modell abstrahiert Hardware, Klassen wie SapManager, SapAcquisition/SapAcqDevice, SapBuffer und SapTransfer bilden die Pipeline Aufnahme → Ringpuffer → Callback. GenICam-konforme Kameras werden über SapAcqDevice + SapFeature gesteuert.

Inhalt

Architektur

  • Server: abstrakte Repräsentanz eines physischen Geräts (Frame Grabber, Kamera, PC); Aufrufe werden über eine Messaging-Schicht hardwareunabhängig geroutet.
  • Unterstützte Interfaces: GigE Vision, Camera Link, CLHS; hunderte Dritthersteller-Kameras.
  • Compiler: MSVC 2010–2017, 32- und 64-bit; Header SapClassBasic.h (Basic) bzw. SapClassGui.h; Libs unter Sapera\Lib\Win32|Win64.

Klassenhierarchie (Auszug)

  • SapManager: Ressourcen-/Serververwaltung (GetServerCount, GetServerName, GetResourceCount) – Einstiegspunkt jeder Anwendung.
  • Acquisition: SapAcquisition für Frame Grabber (CCF-Konfigurationsdatei, erstellt mit CamExpert), SapAcqDevice für GigE-Vision/GenICam-Kameras – die Klassen schließen sich gegenseitig aus.
  • Buffer: SapBuffer, SapBufferRoi, SapBufferWithTrash (Trash-Puffer für übersprungene Bilder).
  • Transfer: SapTransfer als Basisklasse; konkrete Knoten SapAcqToBuf (Grabber), SapAcqDeviceToBuf (GigE), SapBufToBuf; Ereignis-Infos via SapXferCallbackInfo.
  • Weiteres: SapView (Anzeige), SapFeature (Feature-Metadaten), SapLut, SapGio (I/O).

Typischer Anwendungsfluss

  1. SapManager::Create() aufrufen.
  2. Acquisition-Objekt erzeugen (Create(), CCF bzw. Device-Index).
  3. Pufferpool anlegen und SapAcqDeviceToBuf verbinden.
  4. Xfer-Callback registrieren → bei jedem Bild Ende-of-Frame-Event.
  5. Grab (dauerhaft) oder Snap (Einzelbild); am Ende alles Destroy()/Unregister().
  • Einschränkung: keine statischen Instanzen von Sapera-Objekten, keine Allokation in DllMain.
  • Delay Loading möglich: DLL erst bei erster Referenz laden (Linker-Option Delay Loaded DLLs = SapClassBasicXX.dll).

GenICam & GigE Vision

  • GenICam-Module: GenApi (XML-Gerätebeschreibung), SFNC (>220 genormte Feature-Namen), GenTL, CLProtocol.
  • Feature-Zugriff: GetFeatureValue/SetFeatureValue, Metadaten (Min/Max/Enum/Access Mode) über SapFeature::GetFeatureInfo; Typabbildung z. B. IInteger→TypeInt64, IFloat→TypeDouble.
  • Events: RegisterCallback pro Event-Name/-Index; bei GenICam wird nur „FeatureInfoChanged” generiert.
  • Dateizugriff auf die Kamera: ReadFile/WriteFile, Enumeration per GetFileCount/GetFileNameByIndex (u. a. Firmware-Update).
  • GigE-Implementierung basiert auf Spezifikation 1.0, unterstützt Geräte bis 1.2 mit Einschränkungen (kein Action Command, kein Primary-Application-Switchover, nur Image-Payload).
  • Cycling-Modi des Pufferpools: CycleAsynchronous, CycleSynchronous, CycleWithTrash, CycleOff, CycleNextEmpty, CycleNextWithTrash.
  • Unterstützte Pixelformate: Mono8–Mono16, BayerGR/RG/GB/BG 8–16, BGR/BGRA-packed, YUV411/422.

Quellen

  • raw/Sapera++Prog.pdf – Programmer’s Manual 8.60

Verwandte Artikel