13.3.1.6. API-viite

openmv-paketin julkinen rajapinta koostuu Camera-luokasta kameran kanssa kommunikointiin ja OMVException-hierarkiasta protokollavirheille. Molemmat on dokumentoitu tällä sivulla.

13.3.1.6.1. Camera-luokka

class openmv.Camera(port: str, *, baudrate: int = 921600, crc: bool = True, seq: bool = True, ack: bool = True, events: bool = True, timeout: float = 1.0, max_retry: int = 3, max_payload: int = 4096, drop_rate: float = 0.0)

Isäntäpuolen välityskohde OpenMV-kameralle, johon otetaan yhteys USB-sarjaliikenteen kautta.

Parametrit:
  • port – Sarjalaitteen polku. Linuxissa /dev/ttyACMx USB CDC:lle ja /dev/ttyUSBx USB-to-UART-sillalle. macOS:ssä /dev/tty.usbmodem... tai /dev/cu.usbmodem.... Windowsissa COMx.

  • baudrate – Sarjaliikenteen siirtonopeus. USB:n yli 921600 on taikaarvo, joka vaihtaa kameran MicroPython REPL:istä OpenMV-protokollaan – mikä tahansa muu arvo USB-yhteydessä jättää kameran REPL-tilaan, joten oletusarvoa on käytettävä. UART-yhteyden yli arvo on todellinen linjan siirtonopeus ja sen voi asettaa vapaasti molemmissa päissä.

  • crc – Ota CRC-tarkistus käyttöön jokaisessa paketissa.

  • seq – Ota pakettikohtaiset järjestysnumerot käyttöön.

  • ack – Vaadi pakettien kuittaus.

  • events – Ota tapahtumailmoitukset kamerasta käyttöön.

  • timeout – Operaatiokohtainen aikakatkaisu sekunteina.

  • max_retry – Uudelleenyritysten määrä ennen kuin epäonnistuneesta paketista heitetään poikkeus.

  • max_payload – Suurin neuvoteltu hyötykuorman koko tavuina. Kamera voi neuvotella sen pienemmäksi.

  • drop_rate – Vain testaukseen tarkoitettu paketin pudottamisen todennäköisyys välillä [0.0, 1.0]. Jätä tuotannossa arvoon 0.0.

Luokka tukee kontekstinhallintaprotokollaa; with Camera(port) as cam: kutsuu connect() sisääntulossa ja disconnect() poistuttaessa.

13.3.1.6.2. Yhteys

Camera.connect() None

Avaa sarjaportti ja suorita protokollan kättely. Välimuistissa pidettävä tila (kanavaluettelo, järjestelmätiedot, versiotiedot) täytetään sivuvaikutuksena. Kontekstinhallinta kutsuu tätä automaattisesti.

Camera.disconnect() None

Sulje sarjaportti ja vapauta siirtokerros. Kutsutaan automaattisesti, kun kontekstinhallinnasta poistutaan.

Camera.is_connected() bool
Palauttaa:

True, jos sarjaportti on auki.

Camera.reset() None

Nollaa kamera. Yhteys katkeaa, koska kamera käynnistyy uudelleen.

Camera.boot() None

Hyppää kamera käynnistyslataimeensa. Yhteys katkeaa, koska kamera käynnistyy uudelleen.

Camera.update_capabilities() None

Neuvottele protokollan ominaisuudet (CRC, järjestyksen tarkistus, ACK:t, tapahtumat, suurin hyötykuorma) uudelleen kameran kanssa. Kamera ilmoittaa suurimman hyötykuorman, jonka se pystyy käsittelemään; isännän pyyntö rajataan siihen ja sovitut asetukset lähetetään takaisin. Kutsutaan automaattisesti metodilla connect() – ei ole mitään syytä kutsua sitä käyttäjäkoodista, ellei konstruktorin lippuja tarvitse neuvotella uudelleen olemassa olevalle yhteydelle.

Camera.poll_events() None

Suorita siirtokerroksen vastaanottopolku kerran, jotta kameran odottavat tapahtumat kulutetaan lähettämättä komentoa. Hyödyllinen pitkään käynnissä olevissa ohjelmissa, jotka kulkevat minuutteja ilman muuta I/O:ta ja haluavat tuoda kanavarekisteröintitapahtumat esiin viivytyksettä.

13.3.1.6.3. Skriptin suoritus

Camera.exec(script: str) None

Lähetä script (Python-lähdekoodimerkkijono) kameran stdin-puskuriin ja aloita sen suoritus.

Parametrit:

script – Suoritettava MicroPython-lähdekoodi.

Camera.stop() None

Keskeytä käynnissä oleva skripti. Vastaa IDE:n Stop-painiketta.

Camera.read_stdout() str | None

Lue ne tavut, jotka käynnissä oleva skripti on kirjoittanut stdout-virtaan edellisen kutsun jälkeen.

Palauttaa:

Tuloste dekoodattuna merkkijonona, tai None, jos dataa ei ole odottamassa.

13.3.1.6.4. Suoratoisto

Camera.streaming(enable: bool, raw: bool = False, resolution: tuple[int, int] | None = None) None

Kytke kehysvirta päälle tai pois ja valitse siirtomuoto.

Parametrit:
  • enableTrue ottaa suoratoiston käyttöön, False poistaa sen käytöstä.

  • raw – Kun False (oletus), kamera JPEG-pakkaa jokaisen kehyksen ennen sen sijoittamista virtakanavaan ja read_frame() purkaa pakkauksen isännässä. Kun True, kamera lähettää kaapatun pikselipuskurin pakkaamattomana – oikea valinta kameroissa, joissa ei ole laitteistopohjaista JPEG-tukea ja joissa ohjelmistopakkaus on silmukan hitain vaihe.

  • resolution(width, height)-kohde, johon kamera skaalaa jokaisen raakakehyksen ennen lähettämistä, koska pakkaamattomat kehykset ovat paljon suurempia kuin JPEG-pakatut. Pakollinen kun raw=True; muutoin sivuutetaan.

Camera.read_frame() dict | None

Lue uusin kehys virtakanavalta.

Palauttaa:

None, jos kehystä ei ole odottamassa, tai sanakirja, jonka avaimet ovat width (int, pikseleitä), height (int, pikseleitä), format (int, kameran ilmoittama pikselimuodon tunniste), depth (int, pakatun kuvan koko tavuina JPEG- / PNG-kehyksille; ei käytössä pakkaamattomilla muodoilla), data (bytes, RGB888-muotoa pituudeltaan width * height * 3) ja raw_size (int, kameran USB:n yli lähettämät tavut ennen dekoodausta).

13.3.1.6.5. Mukautetut kanavat

Camera.has_channel(name: str) bool
Palauttaa:

True, jos kamerassa on olemassa nimellä name rekisteröity kanava.

Camera.channel_size(name: str) int
Palauttaa:

Nimetyllä kanavalla tällä hetkellä saatavilla olevien tavujen määrä, tai 0, kun kanava on tyhjä tai sitä ei ole olemassa.

Camera.channel_read(name: str, size: int | None = None) bytes | None

Lue mukautetusta kanavasta.

Parametrit:
  • name – Kamerapuolen skriptin rekisteröimä kanavan nimi.

  • size – Luettavien tavujen määrä, tai None luettavaksi kaikki saatavilla oleva.

Palauttaa:

Tavut, tai None, jos kanavaa ei ole olemassa.

Camera.channel_write(name: str, data: bytes) bool

Kirjoita data mukautettuun kanavaan. Hyötykuormaa suuremmat kirjoitukset jaetaan automaattisesti useaan pakettiin.

Parametrit:
  • name – Kamerapuolen skriptin rekisteröimä kanavan nimi.

  • data – Lähetettävä tavumuotoinen hyötykuorma.

Palauttaa:

True, jos kanava on olemassa ja kirjoitus lähetettiin, muutoin False.

Camera.read_status() dict[str, bool]

Kysele jokaista rekisteröityä kanavaa.

Palauttaa:

Sanakirja, joka kuvaa kanavan nimen totuusarvoon ”dataa on valmiina luettavaksi”.

Camera.update_channels() None

Päivitä välimuistissa oleva kanavaluettelo kamerasta. Suoritetaan automaattisesti seuraavan kerran, kun kanavan nimeen perustuva haku tehdään kanavarekisteröintitapahtuman saapumisen jälkeen; sovellus, joka haluaa oppia juuri rekisteröidyn kanavan välittömästi, voi kutsua tätä suoraan.

Camera.get_channel(name: str | None = None, channel_id: int | None = None) int | str | None

Hae kanava joko nimellä (palauttaa sen numeerisen tunnisteen) tai tunnisteella (palauttaa sen nimen). Päivittää kanavavälimuistin metodilla update_channels() ensin, jos kanavarekisteröintitapahtumia on odottamassa.

Parametrit:
  • name – Tunnisteeksi ratkaistava kanavan nimi.

  • channel_id – Nimeksi ratkaistava kanavan tunniste.

Palauttaa:

Vastaava tunniste tai nimi, tai None, kun kanavaa ei ole olemassa. Joko name tai channel_id on annettava.

13.3.1.6.6. Laitteen introspektio

Camera.version() dict

Palauta kameran protokollan, käynnistyslataimen ja laiteohjelmiston versiokolmikot. Pidetään välimuistissa metodin connect() jälkeen. Kukin kolmikko on (major, minor, patch) -muotoinen int-tyyppinen monikko:

  • protocol_version – kameran toteuttaman OpenMV-siirtoprotokollan versio.

  • bootloader_version – flash-muistissa oleva käynnistyslataimen vedos.

  • firmware_version – tällä hetkellä käynnissä oleva MicroPython-laiteohjelmisto.

Camera.system_info() dict

Palauta kameran laitteiston ominaisuus- ja muistitiedot. Pidetään välimuistissa metodin connect() jälkeen. Palautetun sanakirjan avaimet jakautuvat neljään ryhmään.

Identiteetti

  • cpu_id – 32-bittinen suorittimen tunniste.

  • device_id – kolmen 32-bittisen sanan monikko, piihin poltettu laitteen yksilöllinen sarjanumero.

  • chip_id – kolmen 32-bittisen sanan monikko, yksi merkintä jokaista kameraan kytkettyä kuvasensoria kohti.

  • usb_vid – USB-valmistajatunniste.

  • usb_pid – USB-tuotetunniste.

Muistikoot (kaikki kilotavuina)

  • flash_size_kb – sisäisen flash-muistin kokonaismäärä.

  • ram_size_kb – RAM-muistin kokonaismäärä.

  • framebuffer_size_kb – kuvan kaappaukseen varattu RAM-muisti.

  • stream_buffer_size_kb – virtakanavalle varattu RAM-muisti, joka toimittaa kehykset isännälle.

Ominaisuusliput (yksi totuusarvo ominaisuutta kohti, kaikki nimettynä <feature>_present)

  • gpu_present – grafiikkasuoritin.

  • npu_present – neuroverkkosuoritin.

  • isp_present – kuvasignaaliprosessori.

  • venc_present – videoenkooderi.

  • jpeg_present – JPEG-laitteistoenkooderi.

  • dram_present – ulkoinen DRAM.

  • crc_present – CRC-kiihdytin.

  • pmu_present – suorituskyvyn valvontayksikkö.

  • wifi_present – Wi-Fi-radio.

  • bt_present – Bluetooth-radio.

  • sd_present – SD-korttipaikka.

  • eth_present – Ethernet PHY.

  • multicore_present – useita suoritinytimiä.

Muut

  • usb_highspeed – totuusarvo, True, kun USB on luetteloitu suurnopeustilassa (USB 2.0 HS, 480 Mbps).

  • pmu_eventcnt – käytettävissä olevien PMU-tapahtumalaskureiden määrä; 0, kun PMU:ta ei ole.

Camera.print_system_info() None

Kirjaa muotoiltu järjestelmätietolohko logging-moduuliin INFO-tasolla. CLI käyttää tätä yhteyden muodostuksessa.

13.3.1.6.7. Diagnostiikka

Camera.host_stats() dict
Palauttaa:

Isäntäpuolella seurattavat siirtokerroksen laskurit: sent, received, checksum, sequence.

Camera.device_stats() dict
Palauttaa:

Kamerapuolella seurattavat siirtokerroksen laskurit: sent, received, checksum, sequence, retransmit, transport, sent_events, max_ack_queue_depth.

13.3.1.6.8. Profilointityökalu

Profilointityökalu raportoi funktiokohtaiset kutsumäärät ja minimi- / maksimi- / kokonaissuoritusajat instrumentoiduille laiteohjelmistomoduuleille – tällä hetkellä image, ml ja ulab. Funktioiden sisääntulo ja poistuminen siepataan käännösaikana; ajonaikaisesti otetaan näyte monotonisesta mikrosekuntilaskurista kummassakin, kerätään tulos funktiota kohti ja taulukko paljastetaan isännälle profile-kanavan kautta.

Profilointityökalu rakennetaan laiteohjelmistoon vain, kun make-komennolle välitetään PROFILE_ENABLE=1. Vakiona toimitettavat laiteohjelmistovedokset eivät sisällä sitä – -finstrument-functions-lipulla, jonka käännös lisää seurattaviin moduuleihin, on ei-vähäpätöinen ajonaikainen lisäkuorma, joten profilointivedokset tuotetaan lähdekoodista sitä tarvitsevaa nimenomaista virheenkorjausistuntoa varten. Kun laiteohjelmistoa ei ole rakennettu kyseisellä lipulla, profile-kanavaa ei rekisteröidä ja jokainen tällä sivulla oleva profilointimetodi palaa hiljaisesti tekemättä mitään.

Armin Performance Monitoring Unit (PMU) on Cortex-M55:n laitteistolaskuriyksikkö – pieni joukko määriteltäviä laskureita, jotka seuraavat kellojaksomääriä, välimuistiosumia ja -hutiloita, haarautumiskäyttäytymistä ja muita arkkitehtuurin määrittelemiä tapahtumia hidastamatta mitattavaa koodia. Kameroissa, joissa sellainen on – AE3 ja N6, OpenMV-mallistossa M55:n ympärille rakennetut kaksi kameraa – profilointityökalu ottaa näytteitä näistä laskureista ajoitusdatan rinnalla, ja tapahtumien kokonaismäärät näkyvät kussakin funktiokohtaisessa tietueessa. Kamerat, joissa ei ole PMU:ta, tuottavat silti ajoitustietueita; tapahtumakentät palautuvat nollana, ja profiler_event() ei tee mitään.

Camera.profiler_mode(exclusive: bool = False) None

Vaihda sisältävän ja poissulkevan ajoituksen välillä. Sisältävä ajoitus veloittaa kutsuttavien funktioiden ajan kutsujalle; poissulkeva ajoitus ei.

Parametrit:

exclusiveTrue valitsee poissulkevan ajoituksen, False valitsee sisältävän.

Camera.profiler_reset(config: list | None = None) None

Tyhjennä kaikki profilointilaskurit. config=None palauttaa myös oletuksena olevan PMU-tapahtumamäärityksen.

Parametrit:

config – Varattu tulevia laskurikohtaisia konfiguraation ohitusarvoja varten. Anna None, jotta oletusarvot säilyvät.

Camera.profiler_event(counter_num: int, event_id: int) None

Sido yksi PMU-laskuripaikoista tiettyyn laitteistotapahtumaan.

Parametrit:
  • counter_num – Laskurin indeksi.

  • event_id – Arkkitehtuurin määrittelemä tapahtumatunniste.

Camera.read_profile() list[dict] | None

Palauta funktiokohtaiset profilointitietueet, jotka on kerätty edellisen nollauksen jälkeen. Kukin tietue on sanakirja, jonka kentät ovat address, caller, call_count, min_ticks, max_ticks, total_ticks, total_cycles ja events-monikko, jonka koko vastaa kameran pmu_eventcnt-arvoa.

Palauttaa:

Lista tietuesanakirjoja, tai None, jos profilointikanava ei ole käytettävissä tai dataa ei ole kerätty.

13.3.1.6.9. Aliluokitus ja kanavien sisäiset rakenteet

Edellä dokumentoidut metodit kattavat kaiken paketin yleisen käytön. Muutamat mallit – kamerapuolen tapahtumien käsittely, joihin isäntä haluaa reagoida, kanavan lukitseminen monivaiheista vaihtoa varten, sellaisten kanavien kanssa kommunikointi, jotka kuljettavat muotoiltua dataa tavuvirtojen sijaan, tai kanavakohtaisten ohjauskomentojen ajaminen – tarvitsevat metodeja, jotka Camera pitää alaviivalla alkavina. Nämä nimet ovat yksityisiä sopimuksen mukaan (Python ei tee niille nimien mangelointia), ja sovellusten, jotka niitä tarvitsevat, odotetaan joko aliluokittavan Camera-luokan tai kutsuvan metodeja suoraan.

Aliluokitus tapahtumiin reagoimiseksi. Jokainen kameran lähettämä tapahtuma saapuu metodin Camera._handle_event() kautta. Camera-luokan aliluokitus ja metodin ohittaminen on tapa, jolla sovellus reagoi kamerapuolen skriptin nostamiin tapahtumiin; Tapahtumat-sivu käy läpi koko mallin.

Camera._handle_event(channel_id: int, event: int) None

Käsittele yksi tapahtuma kamerasta. Siirtokerros kutsuu tätä aina, kun tapahtumapaketti saapuu. Ohita aliluokassa lisätäksesi sovelluskohtaista käsittelyä; kutsu super()._handle_event(...) säilyttääksesi oletuskäyttäytymisen (kanavaluettelon päivitys tapahtumalla CHANNEL_REGISTERED, kehyksen valmiusseuranta stream-kanavalla, stdin-kanavan käynnistys- / pysäytyskirjaus).

Parametrit:
  • channel_id0 järjestelmätapahtumille, muutoin rekisteröidyn kanavan tunniste.

  • event – Tapahtuman tunniste; arvot tulevat EventType-luettelosta järjestelmätapahtumille ja siitä, mitä kamerapuolen kanavataustajärjestelmä valitsi kanavatapahtumille.

Aliluokan, joka lisää omat protokollan kanssa kommunikoivat metodinsa, tulee koristella ne metodilla retry_if_failed(), jotta ne perivät saman uudelleensynkronointi- ja uudelleenyrityskäyttäytymisen kuin jokainen tällä sivulla toimitettu metodi.

static Camera.retry_if_failed(func)

Koriste. Kääräisee instanssimetodin niin, että se yrittää uudelleen kerran, kun siirtokerros nostaa poikkeuksen ResyncException. Jokaisen metodin, joka kutsuu metodia _send_cmd_wait_resp() (suoraan tai jonkin _channel_*-kääreen kautta), tulisi kantaa tätä koristetta:

class MyCamera(Camera):
    @Camera.retry_if_failed
    def my_custom_command(self, payload):
        return self._send_cmd_wait_resp(Opcode.MY_CMD,
                                        0, payload)

Kanavan lukitus varmistaa, ettei kanavan tila muutu kahden toisiinsa liittyvän operaation välillä (esimerkiksi _channel_size(), jota seuraa _channel_read(), kanavalla joka jatkaa datan liittämistä). read_frame() ja read_profile() käyttävät tätä sisäisesti; mukautettua kanavaa monivaiheisella käytöllä ajava sovellus tekee samoin.

Camera._channel_lock(channel_id: int) bool

Hanki yksinoikeudellinen lukko kanavaan. Muut isännän operaatiot samalla kanavalla estyvät, kunnes lukko vapautetaan.

Parametrit:

channel_id – Numeerinen kanavan tunniste, joka tyypillisesti ratkaistaan metodilla get_channel().

Palauttaa:

True, kun lukko myönnettiin.

Camera._channel_unlock(channel_id: int) bool

Vapauta aiemmin metodilla _channel_lock() otettu lukko. Aina parina lukituskutsun kanssa; käytä try / finally varmistaaksesi, että lukon vapautus tapahtuu silloinkin, kun välissä oleva luku nostaa poikkeuksen.

Parametrit:

channel_id – Numeerinen kanavan tunniste, joka tyypillisesti ratkaistaan metodilla get_channel().

Muotoillut kanavat kuljettavat rakenteellisia tietueita tasaisen tavuvirran sijaan. Profilointikanava on toimitettava esimerkki: sen muoto on (record_count, record_size), ja isäntä, joka haluaa tietää kuinka monta tietuetta on odottamassa, lukee muodon tavukoon sijaan.

Camera._channel_shape(channel_id: int) tuple[int, ...]

Lue kanavan muotokuvaaja.

Parametrit:

channel_id – Numeerinen kanavan tunniste, joka tyypillisesti ratkaistaan metodilla get_channel().

Palauttaa:

Etumerkittömien 32-bittisten kokonaislukujen monikko, joka kuvaa kanavan asettelua. Merkitys on kanavakohtainen.

Kanavakohtaiset ohjauskomennot – käynnistys, pysäytys, nollaus, konfigurointi – ratsastavat yhdellä käskykoodilla (CHANNEL_IOCTL), johon liittyy kanavakohtainen komentonumero ja valinnainen struct.pack-hyötykuorma. Toimitetut metodit kuten stop(), exec() ja streaming() ovat ohuita kääreitä _channel_ioctl()-kutsujen ympärillä stdin- ja stream-kanavia vastaan; mukautettua kamerapuolen kanavaa, joka määrittelee oman ioctl-valikkonsa, ajetaan samalla tavalla.

Camera._channel_ioctl(channel_id: int, cmd: int, fmt: str | None = None, *args) bytes | None

Anna ioctl-komento kanavalle.

Parametrit:
  • channel_id – Numeerinen kanavan tunniste, joka tyypillisesti ratkaistaan metodilla get_channel().

  • cmd – Kamerapuolen kanavataustajärjestelmän määrittelemä komentonumero.

  • fmt – Valinnainen struct-muotomerkkijono argumenttimonikolle. Anna None ioctl-komennoille, jotka eivät ota argumentteja.

  • args – Arvot, jotka vastaavat muotoa fmt.

Palauttaa:

Mikä tahansa hyötykuorma, jonka kanava palautti, tai None.

Tunnisteeseen perustuvat tavuvirtamuunnelmat julkisista kanavametodeista ohittavat nimestä tunnisteeksi -haun ja hyväksyvät eksplisiittisen tavukohtaisen offset-arvon – hyödyllinen suuren puskurin keskeltä luettaessa (esimerkiksi profile-kanavan tietueet).

Camera._channel_size(channel_id: int) int
Parametrit:

channel_id – Numeerinen kanavan tunniste, joka tyypillisesti ratkaistaan metodilla get_channel().

Palauttaa:

Kanavalla tällä hetkellä saatavilla olevat tavut.

Camera._channel_read(channel_id: int, offset: int, length: int) bytes

Lue length tavua alkaen kohdasta offset. Useaan pakettiin jakautuvat luvut kootaan uudelleen automaattisesti.

Parametrit:
  • channel_id – Numeerinen kanavan tunniste, joka tyypillisesti ratkaistaan metodilla get_channel().

  • offset – Tavukohtainen siirtymä, josta luku aloitetaan.

  • length – Luettavien tavujen määrä.

Camera._channel_write(channel_id: int, data: bytes, offset: int = 0) None

Kirjoita data annettuun kohtaan offset. Useaan pakettiin jakautuvat kirjoitukset jaetaan automaattisesti.

Parametrit:
  • channel_id – Numeerinen kanavan tunniste, joka tyypillisesti ratkaistaan metodilla get_channel().

  • data – Kirjoitettava tavumuotoinen hyötykuorma.

  • offset – Tavukohtainen siirtymä, josta kirjoitus aloitetaan.

Protokollan peruskomennot ovat alin taso, jonka luokka paljastaa – raaka lähetä-komento-, hae-raaka-kanavaluettelo- ja manuaalinen-uudelleensynkronointi-merkinnät, joiden varaan kaikki edellä rakentuu lopulta. Sovellus tarttuu niihin lähettäessään käskykoodia, jota luokka ei jo kääräise, tai toteuttaessaan mukautettua palautumista aliluokassa.

Camera._send_cmd_wait_resp(opcode: int, channel: int = 0, data: bytes = b'') bytes | None

Lähetä protokollakomento ja odota kameran vastausta. Peruskomento, jonka varaan jokainen muu tämän osion metodi rakentuu.

Parametrit:
  • opcode – Komentonumero. Toimitettu Opcode-luettelo listaa koodit, joiden kanssa laiteohjelmisto toimitetaan, mutta parametri on vain kokonaisluku – mukautettu laiteohjelmistokäännös voi määritellä omansa ja vastata niihin.

  • channel – Kanavan tunniste, tai 0 järjestelmäkomennoille.

  • data – Komentokohtainen hyötykuorma.

Palauttaa:

Vastauksen hyötykuorma, tai None komennoille kuten Opcode.SYS_RESET ja Opcode.SYS_BOOT, jotka katkaisevat yhteyden.

Camera._channel_list() dict

Hae nykyinen kanavaluettelo kamerasta koskematta välimuistissa oleviin channels_by_id- ja channels_by_name-sanakirjoihin, jotka update_channels() täyttää. Hyödyllinen aliluokalle, joka haluaa tarkastella kameran kanavatilaa suoraan.

Palauttaa:

Sanakirja, joka kuvaa kanavan tunnisteen muotoon {'name': str, 'flags': int}.

Camera._resync() None

Aja protokollan kättely uudelleen alusta. Kutsutaan automaattisesti metodilla connect() alkuyhteyden muodostuksessa ja jokaisella julkisella metodilla, joka sieppaa OMVException-poikkeuksen siirtokerrokselta. Sovellus, joka toteuttaa oman palautumissilmukkansa aliluokassa, voi kutsua tätä suoraan käsiteltyään perimmäisen virheen.

13.3.1.6.10. Poikkeukset

exception openmv.OMVException

Perusluokka jokaiselle protokollatason virheelle. Kaikki kolme alla olevaa aliluokkaa perivät siitä, joten yksittäinen except OMVException kattaa koko virhepinnan.

exception openmv.TimeoutException

Kamera ei vastannut konfiguroidun aikakatkaisun sisällä. OMVException-luokan aliluokka.

exception openmv.ChecksumException

Paketin CRC ei täsmännyt. Nostetaan, kun protokolla on käyttänyt loppuun uudelleenyritysbudjettinsa. OMVException-luokan aliluokka.

exception openmv.SequenceException

Paketti saapui odottamattomalla järjestysnumerolla uudelleenyritysten jälkeen. OMVException-luokan aliluokka.