13.4.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.4.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.4.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.4.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.4.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.4.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.4.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.4.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.4.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.4.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.4.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.