13.3.1.2. Hei kamera¶
openmv.Camera-luokka on Python-aloituspiste kaikelle, mitä paketti voi tehdä. Jokainen muu tämän opetusohjelman sivu kutsuu siihen. Pienin hyödyllinen ohjelma yhdistää, lataa MicroPython-skriptin ja tulostaa kaiken, mitä skripti kirjoittaa kohteeseen stdout
from openmv import Camera
script = """
import time
while True:
print('hello from the cam')
time.sleep(1)
"""
with Camera('/dev/ttyACM0') as cam:
cam.stop()
cam.exec(script)
while True:
if text := cam.read_stdout():
print(text, end='')
13.3.1.2.1. Muutama huomautus¶
stop() ennen exec() ei ole valinnainen. Ilman sitä mikä tahansa aiemmin käynnissä ollut skripti jatkaa kirjoittamista kohteeseen stdout, ja uusi exec taistelee sen kanssa stdin-kanavan hallinnasta.
exec() lataa skriptimerkkijonon kameran stdin-puskuriin ja suorittaa sen samassa MicroPython-tulkissa, jonka kanssa IDE keskustelee. Skripti tuo csi, image, ml ja muun kamerarajapinnan, jonka aiemmat luvut käsittelivät – ainoa ero on, että lähdekoodi saapuu USB:n kautta eikä kameran main.py-tiedostosta tai IDE:stä.
13.3.1.2.2. Skriptin pysäyttäminen¶
Kun isäntäohjelma haluaa keskeyttää käynnissä olevan skriptin, kutsu stop(). Skripti saa saman keskeytyksen, jonka IDE toimittaisi, ja poistuu seuraavalla mahdollisuudella. Kontekstinhallinnasta (with-lohkosta) poistuminen sulkee sarjaportin, mutta ei pysäytä skriptiä – kamera jatkaa viimeksi ladatun suorittamista, kunnes jokin keskeyttää sen.
13.3.1.2.3. Virheet ja poikkeukset¶
Kaikki, mikä menee pieleen protokollakerroksessa, nostaa openmv.OMVException-poikkeuksen tai jonkin sen aliluokista (TimeoutException, ChecksumException, SequenceException). with-lohkon kietominen rakenteeseen try / except OMVException on yksinkertaisin tapa tuoda esiin irronnut USB-kaapeli tai kamera, joka lakkasi vastaamasta.
Protokolla yrittää uudelleen sisäisesti ennen poikkeuksen nostamista; siihen mennessä, kun OMVException saavuttaa sovelluksen, uudelleenyritysbudjetti on käytetty ja yhteys on aidosti rikki. Oletukset (max_retry=3, timeout=1.0) toimivat kaikille – viritä ne rakentajassa vain, jos jokin tietty sovellus tarvitsee erilaista toimintaa.