13.1.4. Skripte ausführen

Die Start-Schaltfläche – der grüne Pfeil unterhalb der Verbinden-Schaltfläche oder Ctrl+R – sendet das Skript der aktuellen Editor-Registerkarte an die verbundene Kamera und führt es aus. Während ein Skript läuft, wird die Start-Schaltfläche zu einer Stopp-Schaltfläche, die es anhält. Diese beiden Schaltflächen bilden die Kernschleife der gesamten Entwicklung auf der Kamera: bearbeiten, starten, beobachten, stoppen, erneut bearbeiten.

Zwei Details dieser Schleife sind wichtig. Erstens wird das Skript in den RAM der Kamera gesendet und dort ausgeführt – das Starten eines Skripts schreibt nichts in den Speicher der Kamera, und das Skript ist nach einem Reset verschwunden. Zweitens läuft die aktuelle Editor-Registerkarte, genau wie angezeigt, gespeichert oder nicht. Es gibt keinen separaten Upload-Schritt und keine veraltete Kopie auf der Kamera, die mit Ihrem Editor außer Synchronisation geraten könnte.

Während ein Skript läuft, strömt seine print()-Ausgabe in das serielle Terminal, und jedes Einzelbild, das es erfasst, erscheint im Framebuffer-Viewer. Wenn ein Skript eine nicht behandelte Ausnahme auslöst, wird der Traceback im seriellen Terminal ausgegeben, und die IDE springt im Editor zur fehlerhaften Zeile – bei einer Anwendung aus mehreren Dateien öffnet sie zuvor die benannte Datei vom Laufwerk der Kamera.

13.1.4.1. Ein Skript dauerhaft machen

Damit die Kamera ein Skript ohne die IDE ausführt – beim Einschalten, eigenständig, im Feld – speichern Sie das Skript als main.py auf der Kamera. Tools → Save open script to OpenMV Cam (as main.py) schreibt die aktuelle Editor-Registerkarte unter diesem Namen auf das Laufwerk der Kamera und bietet dabei an, Kommentare zu entfernen und Leerraum zu komprimieren – was die Datei verkleinert, aber eine unlesbare Kopie ausliefert – und Tools → Reset OpenMV Cam startet die Kamera neu, sodass sie in das gespeicherte Skript bootet. Zusammen bilden sie den Deploy-Schritt: Von da an führt die Kamera Ihr Skript aus, sobald sie mit Strom versorgt wird, ob mit oder ohne IDE.

Während eine zurückgesetzte Kamera ihre gespeicherte main.py ausführt, kann die IDE sich immer noch mit ihr verbinden – bei aktiviertem Stop Script on Connect/Disconnect (Standardeinstellung) hält das Verbinden das gespeicherte Skript an und übergibt die Kontrolle zurück an den Editor.

Siehe auch

Skripte in die Firmware einfrieren dafür, was main.py in der Boot-Sequenz der Kamera bedeutet, und um eine fertige Anwendung vollständig aus dem bearbeitbaren Speicher zu verlagern.

13.1.4.2. Das Laufwerk der Kamera

Das Flash-Dateisystem der Kamera (und die SD-Karte, sofern eine eingesteckt ist) wird auf dem Host als USB-Flash-Laufwerk eingebunden. Tools → Open OpenMV Cam Drive folder öffnet es in Ihrem Dateimanager. Hier kopieren Sie Bibliotheksmodule, Modelldateien und Assets, die das Skript importiert oder lädt, und hier rufen Sie die Bilder und Protokolle ab, die es gespeichert hat. Der Laufwerkspfad wird auch in der Statusleiste angezeigt.

Dateien, die ein Skript erstellt, erscheinen nicht sofort auf dem Host: Der Host speichert das Dateisystem ab dem Moment im Cache, in dem das Laufwerk eingebunden wird, sodass ein vom laufenden Skript gespeicherter Schnappschuss unsichtbar bleibt, bis das Laufwerk erneut eingebunden wird. Tools → Reset OpenMV Cam bindet es erneut ein – der schnelle Weg, um an das zu gelangen, was das Skript gerade geschrieben hat.

Eine Warnung: Die Kamera und der Host teilen sich dieses Dateisystem, und gleichzeitige Schreibvorgänge von beiden Seiten können es beschädigen. Kopieren Sie Dateien, während kein Skript in den Speicher schreibt, und werfen Sie die Karte sauber aus, bevor Sie sie herausziehen.