12. Host-Protokoll#

Jede OpenMV Cam wird mit einem Protokollstapel ausgeliefert, der die Kamera einem Host-Programm als Satz benannter Datenkanäle bereitstellt. Das Host-Programm kann ein Python-Skript auf dem Laptop des Entwicklers sein, eine Desktop-GUI, eine weitere Kamera am anderen Ende eines UART oder ein Dienst auf einer Workstation, der eine Flotte von Kameras überwacht. Der Kamera ist es egal, welches – dasselbe Framing, dieselbe Zuverlässigkeitsmechanik, dieselbe Kanalabstraktion funktioniert für alle.

Dies ist die Antwort auf zwei Fragen, die ständig auftauchen, sobald ein Kameraprojekt die IDE verlässt:

  • „Wie bekomme ich eine Live-Ansicht dessen, was die Kamera sieht, in eine eigene GUI auf meinem Laptop?“

  • „Wie lasse ich einen Bediener zur Laufzeit einen Schwellenwert ändern oder einen Interessensbereich auswählen, ohne neu zu flashen?“

Das Modul protocol auf der Kameraseite und das Paket openmv-python auf der Hostseite beantworten beide Fragen, indem sie eine Python-Klasse auf der Kamera einen Kanal bereitstellen lassen, von dem eine Python-Klasse auf dem Host lesen, in den sie schreiben und auf dessen Ereignisse sie reagieren kann – alles über eine einzige USB- oder serielle Verbindung.

A host PC connects to a cam over USB; the cam exposes three channels -- a frame channel for image data, a config channel for control values, and the built-in stdout channel for prints -- and the host script reads or writes each.

Das Kapitel vermittelt beide Seiten. Der kameraseitige Code zeigt, wie man Kanäle registriert und speist; der hostseitige Code zeigt, wie man sich verbindet, die Kanäle auflistet, Daten abruft und Befehle zurückschickt. Echte Werkzeuge, die im Verzeichnis openmv-projects/tools/ ausgeliefert werden, nutzen genau die hier gezeigten Muster.

Oft ist allerdings gar kein Host-Code nötig. OpenMV IDE ist selbst ein Host: Registrieren Sie einen protocol.CBORChannel mit benannten Messwerten und Steuerelementen, und die Kanäle-Ansicht der IDE zeigt sie live als Labels, Schalter, Schieberegler, Diagramme und Tiefenkarten und sendet die Änderungen des Bedieners zurück an das Skript. Widgets und Telemetrie mit CBORChannel ist dieser schnelle Weg; der Rest des Kapitels ist das, worauf er aufbaut, für den Fall, dass ein Projekt seinen eigenen Host braucht.

Zusammenfassung