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 unterSapera\Lib\Win32|Win64.
Klassenhierarchie (Auszug)
SapManager: Ressourcen-/Serververwaltung (GetServerCount,GetServerName,GetResourceCount) – Einstiegspunkt jeder Anwendung.- Acquisition:
SapAcquisitionfür Frame Grabber (CCF-Konfigurationsdatei, erstellt mit CamExpert),SapAcqDevicefür GigE-Vision/GenICam-Kameras – die Klassen schließen sich gegenseitig aus. - Buffer:
SapBuffer,SapBufferRoi,SapBufferWithTrash(Trash-Puffer für übersprungene Bilder). - Transfer:
SapTransferals Basisklasse; konkrete KnotenSapAcqToBuf(Grabber),SapAcqDeviceToBuf(GigE),SapBufToBuf; Ereignis-Infos viaSapXferCallbackInfo. - Weiteres:
SapView(Anzeige),SapFeature(Feature-Metadaten),SapLut,SapGio(I/O).
Typischer Anwendungsfluss
SapManager::Create()aufrufen.- Acquisition-Objekt erzeugen (
Create(), CCF bzw. Device-Index). - Pufferpool anlegen und
SapAcqDeviceToBufverbinden. - Xfer-Callback registrieren → bei jedem Bild Ende-of-Frame-Event.
Grab(dauerhaft) oderSnap(Einzelbild); am Ende allesDestroy()/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) überSapFeature::GetFeatureInfo; Typabbildung z. B. IInteger→TypeInt64, IFloat→TypeDouble. - Events:
RegisterCallbackpro Event-Name/-Index; bei GenICam wird nur „FeatureInfoChanged” generiert. - Dateizugriff auf die Kamera:
ReadFile/WriteFile, Enumeration perGetFileCount/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