13.3.1.6. API-referencia

Az openmv csomag nyilvános felülete a kamerával való kommunikációhoz használt Camera osztály, valamint a protokollhibákat kezelő OMVException hierarchia. Mindkettőt ez az oldal dokumentálja.

13.3.1.6.1. A Camera osztály

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)

A USB-soros kapcsolaton keresztül elért OpenMV kamera gazdagép oldali proxyja.

Paraméterek:
  • port – A soros eszköz elérési útja. Linuxon /dev/ttyACMx a USB CDC esetén, és /dev/ttyUSBx a USB-UART híd esetén. macOS-en /dev/tty.usbmodem... vagy /dev/cu.usbmodem.... Windowson COMx.

  • baudrate – Soros átviteli sebesség (baud). USB felett a 921600 az a varázsérték, amely a kamerát a MicroPython REPL-ből az OpenMV protokollra váltja – bármilyen más érték USB-kapcsolaton REPL módban hagyja a kamerát, ezért az alapértelmezett értéket kell használni. UART-kapcsolaton az érték a tényleges vonali átviteli sebesség, és mindkét oldalon szabadon beállítható.

  • crc – CRC-ellenőrzés engedélyezése minden csomagon.

  • seq – Csomagonkénti sorszámok engedélyezése.

  • ack – Csomag-nyugtázás megkövetelése.

  • events – Eseményértesítések engedélyezése a kamerától.

  • timeout – Műveletenkénti időtúllépés másodpercben.

  • max_retry – Az újrapróbálkozások száma, mielőtt egy sikertelen csomag kivételt vált ki.

  • max_payload – A maximális egyeztetett hasznosteher-méret bájtban. A kamera lefelé is egyeztethet.

  • drop_rate – Csak teszteléshez: a csomageldobás valószínűsége, [0.0, 1.0] tartományban. Éles használatban hagyd 0.0 értéken.

Az osztály támogatja a kontextuskezelő protokollt; a with Camera(port) as cam: belépéskor meghívja a connect(), kilépéskor pedig a disconnect() metódust.

13.3.1.6.2. Kapcsolat

Camera.connect() None

A soros port megnyitása és a protokoll-kézfogás végrehajtása. A gyorsítótárazott állapot (csatornalista, rendszerinformációk, verzióinformációk) mellékhatásként feltöltődik. A kontextuskezelő automatikusan meghívja.

Camera.disconnect() None

A soros port lezárása és a transzport felszabadítása. A kontextuskezelő kilépésekor automatikusan meghívódik.

Camera.is_connected() bool
Visszatérési érték:

True, ha a soros port nyitva van.

Camera.reset() None

A kamera alaphelyzetbe állítása. A kapcsolat megszakad, mert a kamera újraindul.

Camera.boot() None

A kamera átléptetése a rendszerbetöltőjébe. A kapcsolat megszakad, mert a kamera újraindul.

Camera.update_capabilities() None

A protokollképességek (CRC, sorszám-ellenőrzés, ACK-k, események, maximális hasznosteher) újraegyeztetése a kamerával. A kamera jelenti a maximálisan kezelhető hasznosterhet; a gazdagép kérése erre van levágva, és az egyeztetett beállítások visszatöltődnek. A connect() automatikusan meghívja – nincs ok arra, hogy felhasználói kódból hívd, hacsak nem kell a konstruktor jelzőit egy meglévő kapcsolaton újraegyeztetni.

Camera.poll_events() None

A transzport fogadási útvonalának egyszeri lefuttatása a kamerától érkező függőben lévő események feldolgozásához, parancs küldése nélkül. Hasznos hosszan futó programokban, amelyek percekig más I/O nélkül futnak, és gyorsan szeretnék felszínre hozni a csatornaregisztrációs eseményeket.

13.3.1.6.3. Szkriptvégrehajtás

Camera.exec(script: str) None

A script (egy Python forráskód karakterlánc) feltöltése a kamera stdin pufferébe és a futtatás elindítása.

Paraméterek:

script – A futtatandó MicroPython forráskód.

Camera.stop() None

A futó szkript megszakítása. Egyenértékű az IDE Stop gombjával.

Camera.read_stdout() str | None

A futó szkript által a stdout-ra írt bájtok kiolvasása az utolsó hívás óta.

Visszatérési érték:

A kimenet dekódolt karakterláncként, vagy None, ha nincs várakozó adat.

13.3.1.6.4. Streamelés

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

A képkocka-stream be- vagy kikapcsolása, valamint a vonali formátum kiválasztása.

Paraméterek:
  • enableTrue engedélyezi a streamelést, False letiltja azt.

  • raw – Amikor False (alapértelmezett), a kamera minden képkockát JPEG-tömörít, mielőtt a stream-csatornába helyezné, és a read_frame() a gazdagépen kitömöríti. Amikor True, a kamera a rögzített képpontpuffert tömörítetlenül küldi – ez a helyes választás hardveres JPEG-támogatás nélküli kamerákon, ahol a szoftveres tömörítés a ciklus leglassabb lépése.

  • resolution – A (width, height) célméret, amelyre a kamera minden nyers képkockát lekicsinyít küldés előtt, mivel a tömörítetlen képkockák sokkal nagyobbak a JPEG-tömörítetteknél. Kötelező, ha raw=True; egyébként figyelmen kívül marad.

Camera.read_frame() dict | None

A legutóbbi képkocka kiolvasása a stream-csatornából.

Visszatérési érték:

None, ha nincs várakozó képkocka, vagy egy dict a következő kulcsokkal: width (int, képpontban), height (int, képpontban), format (int, a kamera által deklarált képpontformátum-azonosító), depth (int, a tömörített kép mérete bájtban JPEG / PNG képkockáknál; tömörítetlen formátumoknál nem használt), data (bytes, RGB888 width * height * 3 hosszúságban), és raw_size (int, a kamera által USB-n keresztül a dekódolás előtt küldött bájtok száma).

13.3.1.6.5. Egyéni csatornák

Camera.has_channel(name: str) bool
Visszatérési érték:

True, ha a kamerán létezik name néven regisztrált csatorna.

Camera.channel_size(name: str) int
Visszatérési érték:

A megnevezett csatornán jelenleg elérhető bájtok száma, vagy 0, ha a csatorna üres vagy nem létezik.

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

Olvasás egy egyéni csatornáról.

Paraméterek:
  • name – A kamera oldali szkript által regisztrált csatornanév.

  • size – Az olvasandó bájtok száma, vagy None az összes elérhető adat olvasásához.

Visszatérési érték:

A bájtok, vagy None, ha a csatorna nem létezik.

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

A data kiírása egy egyéni csatornára. A hasznosterhelnél nagyobb írások automatikusan több csomagra bomlanak.

Paraméterek:
  • name – A kamera oldali szkript által regisztrált csatornanév.

  • data – A küldendő bájtszerű hasznosteher.

Visszatérési érték:

True, ha a csatorna létezik és az írás elküldésre került, egyébként False.

Camera.read_status() dict[str, bool]

Minden regisztrált csatorna lekérdezése.

Visszatérési érték:

Csatornanevet egy logikai „az adat olvasásra kész” értékhez rendelő dict.

Camera.update_channels() None

A gyorsítótárazott csatornalista frissítése a kameráról. Automatikusan lefut a következő név szerinti csatornakeresésnél, miután csatornaregisztrációs esemény érkezett; egy alkalmazás, amely azonnal meg akar ismerni egy újonnan regisztrált csatornát, közvetlenül is meghívhatja ezt.

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

Egy csatorna keresése vagy név alapján (a numerikus azonosítóját visszaadva), vagy azonosító alapján (a nevét visszaadva). Először frissíti a csatorna-gyorsítótárat a update_channels() segítségével, ha csatornaregisztrációs események vannak függőben.

Paraméterek:
  • name – Az azonosítóvá feloldandó csatornanév.

  • channel_id – A névvé feloldandó csatornaazonosító.

Visszatérési érték:

A megfelelő azonosító vagy név, vagy None, ha a csatorna nem létezik. A name vagy a channel_id egyikét meg kell adni.

13.3.1.6.6. Eszköz-introspektció

Camera.version() dict

A kamera protokoll-, rendszerbetöltő- és firmware-verzió-hármasainak visszaadása. A connect() után gyorsítótárazott. Minden hármas egy (major, minor, patch) int tuple:

  • protocol_version – a kamera által megvalósított OpenMV vonali protokoll verziója.

  • bootloader_version – a flash memóriában rezidens rendszerbetöltő-kép.

  • firmware_version – a jelenleg futó MicroPython firmware.

Camera.system_info() dict

A kamera hardverképesség- és memóriainformációinak visszaadása. A connect() után gyorsítótárazott. A visszaadott dict kulcsai négy csoportba sorolhatók.

Azonosítás

  • cpu_id – 32 bites CPU-azonosító.

  • device_id – 32 bites szavak 3-as tuple-je, a szilíciumba égetett egyedi eszköz-sorozatszám.

  • chip_id – 32 bites szavak 3-as tuple-je, csatornánként egy bejegyzés minden a kamerához csatlakoztatott képérzékelőre.

  • usb_vid – USB gyártóazonosító.

  • usb_pid – USB termékazonosító.

Memóriaméretek (mind kilobájtban)

  • flash_size_kb – a teljes belső flash memória.

  • ram_size_kb – a teljes RAM.

  • framebuffer_size_kb – a képrögzítésre fenntartott RAM.

  • stream_buffer_size_kb – a képkockákat a gazdagéphez szállító stream-csatorna számára fenntartott RAM.

Képességjelzők (jellemzőnként egy logikai érték, mind <feature>_present néven)

  • gpu_present – grafikus feldolgozóegység.

  • npu_present – neurális feldolgozóegység.

  • isp_present – képjel-processzor.

  • venc_present – videokódoló.

  • jpeg_present – JPEG hardveres kódoló.

  • dram_present – külső DRAM.

  • crc_present – CRC-gyorsító.

  • pmu_present – teljesítményfigyelő egység.

  • wifi_present – Wi-Fi rádió.

  • bt_present – Bluetooth rádió.

  • sd_present – SD-kártya foglalat.

  • eth_present – Ethernet PHY.

  • multicore_present – több CPU-mag.

Egyéb

  • usb_highspeed – logikai érték, True, amikor az USB nagy sebességű (USB 2.0 HS, 480 Mbps) módban enumerálódott.

  • pmu_eventcnt – az elérhető PMU eseményszámlálók száma; 0, ha nincs PMU.

Camera.print_system_info() None

A formázott rendszerinformációs blokk naplózása a logging modulba INFO szinten. A CLI ezt használja csatlakozáskor.

13.3.1.6.7. Diagnosztika

Camera.host_stats() dict
Visszatérési érték:

A gazdagép oldalon nyomon követett transzportréteg-számlálók: sent, received, checksum, sequence.

Camera.device_stats() dict
Visszatérési érték:

A kamera oldalon nyomon követett transzportréteg-számlálók: sent, received, checksum, sequence, retransmit, transport, sent_events, max_ack_queue_depth.

13.3.1.6.8. Profilozó

A profilozó függvényenkénti hívásszámlálókat, valamint minimális / maximális / teljes végrehajtási időket jelent a műszerezett firmware-modulokra – jelenleg az image, ml és ulab modulokra. A függvénybelépés és -kilépés fordítási időben kerül elfogásra; a futásidő mindkettőnél mintát vesz egy monoton mikroszekundumos számlálóról, függvényenként összegzi az eredményt, és a táblázatot a profile csatornán keresztül teszi elérhetővé a gazdagép számára.

A profilozó csak akkor épül be a firmware-be, ha a PROFILE_ENABLE=1 átadásra kerül a make parancsnak. A gyári firmware-képek nem tartalmazzák – a -finstrument-functions jelző, amelyet a build hozzáad a nyomon követett modulokhoz, nem elhanyagolható futásidejű többletterheléssel jár, ezért a profilozó buildek forrásból készülnek a konkrét hibakeresési munkamenethez, amelynek szüksége van rájuk. Ha a firmware nem ezzel a jelzővel készült, a profile csatorna nem regisztrálódik, és az ezen az oldalon szereplő minden profilozó-metódus csendben, művelet nélkül tér vissza.

Az Arm Performance Monitoring Unit (PMU) a Cortex-M55 hardveres számlálóblokkja – konfigurálható számlálók kis halmaza, amely ciklusszámokat, gyorsítótár-találatokat és -tévesztéseket, elágazási viselkedést és egyéb architektúra által definiált eseményeket követ nyomon a mért kód lassítása nélkül. Az ilyennel rendelkező kamerákon – az AE3 és az N6, az OpenMV kínálatában a két M55 köré épült kamera – a profilozó az időzítési adatok mellett ezeket a számlálókat is mintavételezi, és az eseményösszesítések megjelennek minden függvényenkénti rekordban. A PMU nélküli kamerák továbbra is előállítanak időzítési rekordokat; az eseménymezők nullaként térnek vissza, és a profiler_event() művelet nélküli.

Camera.profiler_mode(exclusive: bool = False) None

Váltás az inkluzív és exkluzív időzítés között. Az inkluzív időzítés a meghívottak idejét a hívóra terheli; az exkluzív időzítés nem.

Paraméterek:

exclusiveTrue az exkluzív időzítést választja, False az inkluzívat.

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

Minden profilszámláló nullázása. A config=None egyúttal visszaállítja az alapértelmezett PMU eseménykiosztást is.

Paraméterek:

config – Fenntartva a jövőbeli számlálónkénti konfigurációs felülbírálásokhoz. Add át a None értéket az alapértelmezések megtartásához.

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

A PMU számlálóhelyeinek egyikét egy adott hardveres eseményhez köti.

Paraméterek:
  • counter_num – Számlálóindex.

  • event_id – Architektúra által definiált eseményazonosító.

Camera.read_profile() list[dict] | None

Az utolsó nullázás óta gyűjtött függvényenkénti profilrekordok visszaadása. Minden rekord egy dict a következő mezőkkel: address, caller, call_count, min_ticks, max_ticks, total_ticks, total_cycles, valamint egy events tuple, amelynek mérete a kamera pmu_eventcnt értékéhez igazodik.

Visszatérési érték:

Rekord-dict-ek listája, vagy None, ha a profilcsatorna nem elérhető, vagy nem gyűlt össze adat.

13.3.1.6.9. Alosztályok és csatorna-belső működés

A fentebb dokumentált metódusok lefedik a csomag minden gyakori használatát. Néhány minta – olyan kamera oldali események kezelése, amelyekre a gazdagép reagálni szeretne, egy csatorna zárolása többlépéses adatcseréhez, bájtfolyamok helyett strukturált adatot hordozó csatornákkal való kommunikáció, vagy csatornaspecifikus vezérlőparancsok meghajtása – olyan metódusokat igényel, amelyeket a Camera aláhúzással előtagozva tart. Ezek a nevek megállapodás szerint privátok (a Python nem végez rajtuk névelfedést), és az ezeket igénylő alkalmazásoktól elvárt, hogy vagy alosztályozzák a Camera-t, vagy közvetlenül hívják a metódusokat.

Alosztályozás eseményekre való reagáláshoz. A kamera által kibocsátott minden esemény a Camera._handle_event() metóduson keresztül érkezik. A Camera alosztályozása és a metódus felülírása az a mód, ahogyan egy alkalmazás reagál a kamera oldali szkriptje által kiváltott eseményekre; az Események oldal végigvezet a teljes mintán.

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

Egy esemény feldolgozása a kameráról. A transzportréteg hívja meg, valahányszor eseménycsomag érkezik. Írd felül egy alosztályban alkalmazásspecifikus kezelés hozzáadásához; hívd meg a super()._handle_event(...)-t az alapértelmezett viselkedés megtartásához (csatornalista-frissítés CHANNEL_REGISTERED esetén, képkocka-készenlét követése a stream csatornán, stdin-csatorna indítás / leállítás naplózása).

Paraméterek:
  • channel_id0 rendszereseményekhez, egyébként a regisztrált csatornaazonosító.

  • event – Eseményazonosító; az értékek rendszereseményeknél az EventType enumból, csatornaeseményeknél pedig abból származnak, amit a kamera oldali csatorna-háttérrendszer választott.

Egy alosztály, amely saját protokoll-kommunikációs metódusokat ad hozzá, ezeket a retry_if_failed() dekorátorral kellene ellátnia, hogy örököljék ugyanazt az újraszinkronizálási és újrapróbálkozási viselkedést, amellyel ezen az oldalon minden szállított metódus rendelkezik.

static Camera.retry_if_failed(func)

Dekorátor. Úgy csomagol be egy példánymetódust, hogy egyszer újrapróbálkozzon, amikor a transzport ResyncException kivételt vált ki. Minden olyan metódusnak, amely a _send_cmd_wait_resp()-be hív (közvetlenül vagy a _channel_* csomagolók egyikén keresztül), viselnie kell ezt a dekorátort:

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

A csatornazárolás biztosítja, hogy a csatorna állapota ne változzon két kapcsolódó művelet között (például egy _channel_size() után egy _channel_read(), egy folyamatosan adatot hozzáfűző csatornán). A read_frame() és a read_profile() ezt belsőleg használja; egy egyéni csatornát többlépéses hozzáféréssel meghajtó alkalmazás ugyanígy jár el.

Camera._channel_lock(channel_id: int) bool

Kizárólagos zár megszerzése egy csatornán. Az ugyanazon csatornán végzett egyéb gazdagép-műveletek blokkolódnak, amíg a zár fel nem szabadul.

Paraméterek:

channel_id – Numerikus csatornaazonosító, jellemzően a get_channel() segítségével feloldva.

Visszatérési érték:

True, amikor a zár megadásra került.

Camera._channel_unlock(channel_id: int) bool

Egy korábban a _channel_lock() segítségével felvett zár felszabadítása. Mindig zárhívással párosul; használj try / finally szerkezetet, hogy a feloldás akkor is megtörténjen, ha a közbeeső olvasás kivételt vált ki.

Paraméterek:

channel_id – Numerikus csatornaazonosító, jellemzően a get_channel() segítségével feloldva.

Az alakzatos csatornák strukturált rekordokat hordoznak egyszerű bájtfolyam helyett. A profilozó-csatorna a szállított példa: alakzata (record_count, record_size), és egy gazdagép, amely tudni szeretné, hány rekord vár, a méret helyett az alakzatot olvassa.

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

Egy csatorna alakzat-leírójának kiolvasása.

Paraméterek:

channel_id – Numerikus csatornaazonosító, jellemzően a get_channel() segítségével feloldva.

Visszatérési érték:

Előjel nélküli 32 bites egész számok tuple-je, amely a csatorna elrendezését írja le. A jelentés csatornaspecifikus.

A csatornaspecifikus vezérlőparancsok – indítás, leállítás, nullázás, konfigurálás – egyetlen opkódon (CHANNEL_IOCTL) keresztül haladnak, egy csatornaspecifikus parancsszámmal és egy opcionális struct.pack hasznosteherrel. A szállított metódusok, mint a stop(), exec() és streaming(), vékony csomagolók a stdin és stream csatornák elleni _channel_ioctl() hívások körül; egy saját ioctl-menüt definiáló egyéni kamera oldali csatorna ugyanígy hajtható meg.

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

Egy ioctl parancs kiadása egy csatornán.

Paraméterek:
  • channel_id – Numerikus csatornaazonosító, jellemzően a get_channel() segítségével feloldva.

  • cmd – A kamera oldali csatorna-háttérrendszer által definiált parancsszám.

  • fmt – Opcionális struct formátum-karakterlánc az argumentum-tuple-höz. Add át a None értéket olyan ioctl-eknél, amelyek nem fogadnak argumentumot.

  • args – A fmt-nek megfelelő értékek.

Visszatérési érték:

Bármilyen hasznosteher, amelyet a csatorna visszaadott, vagy None.

A nyilvános csatornametódusok azonosító szerinti bájtfolyam-változatai kihagyják a név-azonosító keresést, és kifejezett bájt-offset értéket fogadnak – hasznos egy darab kiolvasásához egy nagy puffer közepéből (például a profile csatorna rekordjaiból).

Camera._channel_size(channel_id: int) int
Paraméterek:

channel_id – Numerikus csatornaazonosító, jellemzően a get_channel() segítségével feloldva.

Visszatérési érték:

A csatornán jelenleg elérhető bájtok.

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

length bájt kiolvasása az offset pozíciótól kezdve. A több csomagból álló olvasások automatikusan újraösszeállnak.

Paraméterek:
  • channel_id – Numerikus csatornaazonosító, jellemzően a get_channel() segítségével feloldva.

  • offset – A bájtpozíció, ahonnan az olvasást kezdeni kell.

  • length – Az olvasandó bájtok száma.

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

A data kiírása a megadott offset pozícióban. A több csomagból álló írások automatikusan több csomagra bomlanak.

Paraméterek:
  • channel_id – Numerikus csatornaazonosító, jellemzően a get_channel() segítségével feloldva.

  • data – A kiírandó bájtszerű hasznosteher.

  • offset – A bájtpozíció, ahonnan az írást kezdeni kell.

A protokoll-primitívek a legalacsonyabb szint, amelyet az osztály elérhetővé tesz – a nyers parancs-küldés, a nyers csatornalista-lekérés és a kézi újraszinkronizálás bejegyzései, amelyekre minden fentebbi végső soron épül. Egy alkalmazás akkor nyúl hozzájuk, amikor olyan opkódot küld, amelyet az osztály még nem csomagol, vagy amikor egy alosztályban egyéni helyreállítást valósít meg.

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

Egy protokollparancs elküldése és a kamera válaszára való várakozás. Az a primitív, amelyre ennek a szakasznak minden más metódusa épül.

Paraméterek:
  • opcode – Parancsszám. A szállított Opcode enum felsorolja a firmware-rel szállított kódokat, de a paraméter csak egy egész szám – egy egyéni firmware-build saját kódokat definiálhat és válaszolhat rájuk.

  • channel – Csatornaazonosító, vagy 0 rendszerparancsokhoz.

  • data – Parancsspecifikus hasznosteher.

Visszatérési érték:

Válasz-hasznosteher, vagy None olyan parancsoknál, mint az Opcode.SYS_RESET és az Opcode.SYS_BOOT, amelyek megszakítják a kapcsolatot.

Camera._channel_list() dict

Az aktuális csatornalista lekérése a kameráról anélkül, hogy érintené a update_channels() által feltöltött gyorsítótárazott channels_by_id és channels_by_name dict-eket. Hasznos egy alosztály számára, amely közvetlenül szeretné megvizsgálni a kamera csatornaállapotát.

Visszatérési érték:

Csatornaazonosítót {'name': str, 'flags': int} értékhez rendelő dict.

Camera._resync() None

A protokoll-kézfogás újrafuttatása a nulláról. A connect() automatikusan meghívja a kezdeti csatlakozáskor, és minden olyan nyilvános metódus, amely OMVException kivételt fog el a transzporttól. Egy saját helyreállítási ciklust megvalósító alkalmazás egy alosztályban közvetlenül is meghívhatja ezt a mögöttes hiba kezelése után.

13.3.1.6.10. Kivételek

exception openmv.OMVException

Minden protokollszintű hiba alaposztálya. Az alábbi három alosztály mind ebből örököl, így egyetlen except OMVException lefedi a teljes hibafelületet.

exception openmv.TimeoutException

A kamera nem válaszolt a beállított időtúllépésen belül. Az OMVException alosztálya.

exception openmv.ChecksumException

Egy csomag CRC-je nem egyezett. Akkor kerül kiváltásra, miután a protokoll kimerítette az újrapróbálkozási keretét. Az OMVException alosztálya.

exception openmv.SequenceException

Egy csomag váratlan sorszámmal érkezett az újrapróbálkozások után. Az OMVException alosztálya.