13.1.4. Scripts uitvoeren¶
De startknop – de groene pijl onder de verbindknop, of Ctrl+R – stuurt het script in het huidige editortabblad naar de verbonden camera en voert het uit. Terwijl een script draait, verandert de startknop in een stopknop die het stopt. Die twee knoppen vormen de kernlus van alle ontwikkeling op de camera: bewerken, starten, observeren, stoppen, opnieuw bewerken.
Twee details van die lus zijn belangrijk. Ten eerste wordt het script naar het RAM van de camera gestuurd en daar uitgevoerd – het starten van een script schrijft niets naar de opslag van de camera, en het script is na een reset verdwenen. Ten tweede is wat er draait het huidige editortabblad, precies zoals getoond, opgeslagen of niet. Er is geen aparte uploadstap en geen verouderde kopie op de camera die uit de pas kan raken met je editor.
Terwijl een script draait, stroomt zijn print()-uitvoer naar de seriële terminal en verschijnt elk frame dat het vastlegt in de framebuffer-viewer. Wanneer een script een onafgehandelde uitzondering opwerpt, wordt de traceback naar de seriële terminal afgedrukt en springt de IDE in de editor naar de regel die het probleem veroorzaakt – bij een applicatie met meerdere bestanden opent het eerst het genoemde bestand van de schijf van de camera.
13.1.4.1. Een script permanent maken¶
Om de camera een script te laten uitvoeren zonder de IDE – bij het inschakelen, zelfstandig, in het veld – sla je het script op de camera op als main.py. Tools → Save open script to OpenMV Cam (as main.py) schrijft het huidige editortabblad naar de schijf van de camera onder die naam, en biedt onderweg aan om commentaar te verwijderen en witruimte te comprimeren – wat het bestand verkleint maar een onleesbare kopie oplevert – en Tools → Reset OpenMV Cam herstart de camera zodat deze opstart in het opgeslagen script. Samen vormen ze de implementatiestap: vanaf dat moment voert de camera je script uit zodra hij stroom heeft, met of zonder IDE.
Terwijl een gereset camera zijn opgeslagen main.py uitvoert, kan de IDE er nog steeds verbinding mee maken – met Stop Script on Connect/Disconnect ingeschakeld (de standaardinstelling) stopt het verbinden het opgeslagen script en geeft het de controle terug aan de editor.
Zie ook
Scripts in de firmware bevriezen voor wat main.py betekent in de opstartvolgorde van de camera, en voor het volledig verplaatsen van een voltooide applicatie uit de bewerkbare opslag.
13.1.4.2. De schijf van de camera¶
Het flashgeheugen-bestandssysteem van de camera (en de SD-kaart, wanneer er een is geplaatst) wordt op de host aangekoppeld als een USB-flashschijf. Tools → Open OpenMV Cam Drive folder opent deze in je bestandsbeheerder. Dit is waar je bibliotheekmodules, modelbestanden en assets kopieert die het script importeert of laadt, en waar je de afbeeldingen en logbestanden ophaalt die het heeft opgeslagen. Het schijfpad verschijnt ook in de statusbalk.
Bestanden die een script aanmaakt verschijnen niet meteen op de host: de host cachet het bestandssysteem vanaf het moment dat de schijf wordt aangekoppeld, dus een momentopname die door het draaiende script is opgeslagen blijft onzichtbaar totdat de schijf opnieuw wordt aangekoppeld. Tools → Reset OpenMV Cam koppelt deze opnieuw aan – de snelle manier om bij te komen wat het script zojuist heeft geschreven.
Een waarschuwing: de camera en de host delen dat bestandssysteem, en gelijktijdige schrijfbewerkingen van beide kanten kunnen het beschadigen. Kopieer bestanden terwijl er geen script naar de opslag schrijft, en werp de kaart netjes uit voordat je deze verwijdert.