v2.3.0 - noch nicht veröffentlicht

Neu:

  • Bild-Stream (experimentell). Eine Kamera kann ihre Bilder jetzt streamen, statt ein Bild pro Capture-Request aufzunehmen. <camera name>/control/publish/execute wendet die Eingaben control/publish/input/enable und keep-latest-output an. Solange der Stream läuft, veröffentlicht der Cam Driver jedes Bild, das die Kamera liefert, auf control/publish/output/stream/frame für einen Abonnenten, zusammen mit seiner Größe, seinem Pixelformat und seiner Lineage: der Kamera, dem Start des Streams und der Nummer des Bildes darin. Der Cam Driver triggert die Kamera nicht von selbst: Ein Bild kommt bei einem Hardware-Trigger, bei control/trigger/execute oder kontinuierlich, solange der Trigger-Modus der Kamera aus ist. Mit fester Rate getriggert lieferte die von uns getestete Kamera jedes Bild mit bis zu 66 Bildern pro Sekunde, gegenüber etwa 34 mit capture/execute, mit ihrem TriggerOverlap in einer Feature-Datei auf PreviousFrame gesetzt. keep-latest-output legt jedes Bild zusätzlich auf output/image ab und zählt es auf output/package-identifier, um den Preis einer Kopie pro Bild. Zähler unter control/publish/output/stream/statistics zeigen Bilder und Verluste.

    Jedes Bild wird auf beiden Data Layern geliefert. setting/settings-hash identifiziert die Einstellungen, mit denen die Bilder aufgenommen werden, und jeder Frame trägt ihn. Jeder Frame trägt außerdem das Tag des Moduls - den Kameranamen oder das Tag, das control/publish/input/tag vorgibt und das in der Modulkonfigurationsdatei als stream.tag gespeichert wird - und die Anwendungen, die die Bilder verarbeiten, behalten es in der Lineage ihrer Ergebnisse. Der Hash sagt, dass sich die Einstellungen geändert haben, nicht, was sich geändert hat; und dass er einer Änderung eines Kamera-Features folgt, wurde noch nicht mit einer echten Kamera geprüft.

    Solange der Stream läuft, ist capture nicht verfügbar: capture/ready ist false, capture/execute antwortet mit DL_INVALID_OPERATION_MODE, und ein Capture-Request endet mit Status -3, ohne einen Fehler zu speichern. Das Stoppen des Streams verbindet die Kamera erneut, sodass capture/ready bei der von uns getesteten Kamera nach etwa zwei Sekunden zurückkehrt. Siehe Bilder streamen (experimentell).

  • Software-Trigger. <camera name>/control/trigger/execute sendet der Kamera einen Software- Trigger, solange sie im Software-Trigger-Modus ist - ihr Trigger-Modus eingeschaltet und ihre Trigger-Quelle Software, gelesen in der eigenen Schreibweise der Kamera - und tut in jedem anderen Modus nichts. Der Befehl ist der kameraeigene, TriggerSoftware oder SoftwareTrigger. Eine Kamera in diesem Modus ohne einen der beiden, oder die ihn ablehnt, meldet den neuen Status -10012 (softwareTriggerFailed). Solange der Bild-Stream läuft, wird eine Kamera ohne Software- Trigger-Modus - eine simulierte Kamera oder eine Plugin-Kamera ohne TriggerSoftware - stattdessen durch ihren eigenen Trigger ausgelöst, ein Bild pro Aufruf. Siehe Software-Trigger.

  • Feature-Mappings. Eine Kamera, die ihren Software-Trigger-Befehl, ihren Trigger-Modus oder ihre Trigger-Quelle oder deren Werte anders benennt, erhält ihre eigenen Namen in der Anwendungs-Einstellungsdatei: einen Eintrag unter featureMappings, benannt über die featureMappingId der Kamera. Das Schema listet die Schlüssel auf. Ein gemappter Name, den die Kamera nicht hat, wird als Warnung protokolliert, und die eingebauten Namen werden verwendet. Siehe Software-Trigger.

  • Ein Beispiel der Einstellungen, auf einem PC. -g, --generate-settings [folder] schreibt die Anwendungs-Einstellungsdatei, eine Beispiel-Moduldatei und ihre Schemas in einen Ordner (standardmäßig den aktuellen), nennt den Ordner, aus dem der Cam Driver seine Einstellungen liest, und beendet sich. Vorhandene Dateien werden nie überschrieben. Siehe Neue Kamera-Einstellungsdateien anlegen.

  • Einstellungen auf dem Data Layer. hdvisionsystems/lumiscan-cam-driver/system/settings zeigt die Einstellungen, mit denen die Anwendung gestartet wurde: die Einstellungsdatei der Anwendung, jede Moduldatei eingebettet in ihre Liste modules, Passwörter als ***. Ein Schreibvorgang darauf ändert die Dateien. Die Anwendung prüft die Änderung wie beim Start, speichert sie (die vorherige Datei als .bak) und verweigert dann jede Arbeit, bis sie neu gestartet wird: restart-required, Status -5. hdvisionsystems/lumiscan-cam-driver/system/control/restart/execute startet sie neu. Siehe Einstellungen auf dem Data Layer.

Fehlerbehebung:

  • Der Cam Driver startet wieder auf einer ctrlX CORE. Seit dem Umstieg auf die neue Kommandozeile lehnte er das -p 8080 ab, das sein Snap übergibt, und beendete sich sofort. Er akzeptiert und ignoriert -p jetzt, und das Snap übergibt es nicht mehr.

  • Ein Programm, das ein abgelehntes execute immer wieder aufruft, überflutet das Protokoll nicht mehr. Jede Ablehnung wurde als eigene Zeile geschrieben, sodass ein Programm, das capture/execute wiederholte, während die Kamera belegt war, etwa 11 MB Protokoll pro Minute schrieb. Für jede Methode und jedes Ergebnis wird die erste Ablehnung protokolliert, danach höchstens eine Zeile alle zehn Sekunden, die angibt, wie viele nicht einzeln protokolliert wurden.